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.100.12020000.11 2013/04/22 12:27:51 mvaradam 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.ATTRIBUTE9 := C2.NEW_ATTRIBUTE9; --Updated to 9 for bug 8624613
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 	        --Changes for bug 9177957
2580           --Inventory Item Name
2581           IF p_instance_header_tbl(tab_row).inventory_item_id IS NOT NULL
2582           THEN
2583 	          BEGIN
2584 	            SELECT  msi.concatenated_segments
2585   	            INTO    p_instance_header_tbl(tab_row).INVENTORY_ITEM_NAME
2586 	            FROM    mtl_system_items_b_kfv msi
2587 		            ,csi_item_instances cii
2588 	            WHERE   msi.inventory_item_id = p_instance_header_tbl(tab_row).inventory_item_id
2589 	            AND     msi.organization_id = Nvl(p_instance_header_tbl(tab_row).vld_organization_id,cii.last_vld_organization_id)
2590 	            AND     cii.instance_id = p_instance_header_tbl(tab_row).instance_id;
2591 	          EXCEPTION
2592 	            WHEN OTHERS THEN
2593 	            NULL;
2594 	          END;
2595           END IF;
2596           --End of Changes for bug 9177957
2597 
2598           BEGIN
2599             SELECT   meaning
2600             INTO     p_instance_header_tbl(tab_row).accounting_class
2601             FROM     csi_lookups
2602             WHERE    lookup_code = p_instance_header_tbl(tab_row).accounting_class_code
2603             AND      lookup_type = l_acct_lookup_type;
2604           EXCEPTION
2605             WHEN OTHERS THEN
2606               null;
2607           END;
2608 
2609           BEGIN
2610             SELECT   meaning
2611             INTO     p_instance_header_tbl(tab_row).instance_type_name
2612             FROM     csi_lookups
2613             WHERE    lookup_code = p_instance_header_tbl(tab_row).instance_type_code
2614             AND      lookup_type = l_inst_lookup_type;
2615           EXCEPTION
2616             WHEN OTHERS THEN
2617               null;
2618           END;
2619 
2620           BEGIN
2621             SELECT   meaning
2622             INTO     p_instance_header_tbl(tab_row).instance_usage_name
2623             FROM     csi_lookups
2624             WHERE    lookup_code = p_instance_header_tbl(tab_row).instance_usage_code
2625             AND      lookup_type = l_usage_lookup_type;
2626           EXCEPTION
2627             WHEN OTHERS THEN
2628               null;
2629           END;
2630 
2631 
2632 	   BEGIN
2633             SELECT   meaning
2634             INTO     p_instance_header_tbl(tab_row).operational_status_name
2635             FROM     csi_lookups
2636             WHERE    lookup_code = p_instance_header_tbl(tab_row).operational_status_code
2637             AND      lookup_type = l_op_status_lookup_type;
2638           EXCEPTION
2639             WHEN OTHERS THEN
2640               null;
2641           END;
2642 
2643           IF p_instance_header_tbl(tab_row).version_label IS NOT NULL THEN
2644 	     BEGIN
2645                 SELECT   meaning
2646                 INTO     p_instance_header_tbl(tab_row).version_label_meaning
2647                 FROM     csi_lookups
2648                 WHERE    lookup_code = p_instance_header_tbl(tab_row).version_label
2649                 AND      lookup_type = l_ver_label_lookup_type;
2650              EXCEPTION
2651                 WHEN OTHERS THEN
2652                    null;
2653              END;
2654           END IF;
2655 
2656           BEGIN
2657             SELECT   status_code
2658             INTO     p_instance_header_tbl(tab_row).instance_condition
2659             FROM     mtl_material_statuses
2660             WHERE    status_id = p_instance_header_tbl(tab_row).instance_condition_id;
2661           EXCEPTION
2662             WHEN OTHERS THEN
2663               null;
2664           END;
2665 
2666           BEGIN
2667             SELECT   unit_of_measure
2668             INTO     p_instance_header_tbl(tab_row).unit_of_measure_name
2669             FROM     mtl_units_of_measure_vl
2670             WHERE    uom_code = p_instance_header_tbl(tab_row).unit_of_measure;
2671           EXCEPTION
2672             WHEN OTHERS THEN
2673               null;
2674           END;
2675 
2676 
2677           BEGIN
2678             SELECT   name
2679             INTO     p_instance_header_tbl(tab_row).instance_status
2680             FROM     csi_instance_statuses
2681             WHERE    instance_status_id = p_instance_header_tbl(tab_row).instance_status_id;
2682           EXCEPTION
2683             WHEN OTHERS THEN
2684               null;
2685           END;
2686 
2687           BEGIN
2688             SELECT   name
2689             INTO     p_instance_header_tbl(tab_row).system_name
2690             FROM     csi_systems_vl
2691             WHERE    system_id = p_instance_header_tbl(tab_row).system_id;
2692           EXCEPTION
2693             WHEN OTHERS THEN
2694               null;
2695           END;
2696 
2697           IF ( (p_instance_header_tbl(tab_row).vld_organization_id IS NOT NULL) AND
2698                (p_instance_header_tbl(tab_row).vld_organization_id <> FND_API.G_MISS_NUM) ) THEN
2699              BEGIN
2700                 l_vld_organization_id := p_instance_header_tbl(tab_row).vld_organization_id; --bug4754569
2701 
2702 		SELECT name
2703                 INTO   p_instance_header_tbl(tab_row).vld_organization_name
2704                 FROM   hr_all_organization_units
2705                 WHERE  organization_id = p_instance_header_tbl(tab_row).vld_organization_id;
2706              EXCEPTION
2707                 WHEN OTHERS THEN
2708                    null;
2709              END;
2710           --start of code for bug 4754569--
2711           ELSE
2712             --To get the vld_organization_id from csi_item_instances--
2713             BEGIN
2714               SELECT last_vld_organization_id
2715               INTO l_vld_organization_id
2716               FROM csi_item_instances
2717               WHERE instance_id = p_instance_header_tbl(tab_row).instance_id;
2718             EXCEPTION
2719               WHEN OTHERS THEN
2720                NULL;
2721              END;
2722 
2723           END IF;
2724 
2725           IF ( (p_instance_header_tbl(tab_row).inventory_item_id IS NOT NULL) AND
2726                (p_instance_header_tbl(tab_row).inventory_item_id <> FND_API.G_MISS_NUM) ) THEN
2727             l_inventory_item_id:=p_instance_header_tbl(tab_row).inventory_item_id;
2728           ELSE
2729           --To get the inventory_item_id from csi_item_instances--
2730             BEGIN
2731               SELECT inventory_item_id
2732               INTO l_inventory_item_id
2733               FROM csi_item_instances
2734               WHERE instance_id = p_instance_header_tbl(tab_row).instance_id;
2735             EXCEPTION
2736               WHEN OTHERS THEN
2737                NULL;
2738             END;
2739           END IF;
2740           --end of code for bug 4754569--
2741 
2742           IF csi_item_instance_vld_pvt.Check_for_eam_item
2743                (p_inventory_item_id  => l_inventory_item_id,
2744                 p_organization_id    => l_vld_organization_id)--bug 4754569
2745            THEN
2746               l_maint_organization_id  := NULL;
2747               l_department_id          := NULL;
2748               l_location_id            := NULL;
2749               l_gen_object_id          := NULL;
2750              -- Maintenance organization
2751                BEGIN
2752                 SELECT maint_organization_id
2753                   INTO l_maint_organization_id
2754                   FROM mtl_parameters
2755                  WHERE organization_id = p_instance_header_tbl(tab_row).vld_organization_id;
2756                EXCEPTION
2757                  WHEN NO_DATA_FOUND THEN
2758                   NULL;
2759                END;
2760 
2761                IF l_maint_organization_id IS NOT NULL
2762                THEN
2763                 BEGIN
2764                  SELECT organization_code
2765                    INTO p_instance_header_tbl(tab_row).maintenance_organization
2766                    FROM mtl_parameters
2767                   WHERE organization_id = l_maint_organization_id;
2768                 EXCEPTION
2769                  WHEN NO_DATA_FOUND THEN
2770                    NULL;
2771                 END;
2772                END IF;
2773 
2774              -- Department
2775                BEGIN
2776                 SELECT owning_department_id
2777                       ,area_id
2778                   INTO l_department_id
2779                       ,l_location_id
2780                   FROM eam_org_maint_defaults
2781                  WHERE object_type = 50
2782                    AND object_id   = p_instance_header_tbl(tab_row).instance_id;
2783                -- Defining when others as constraints were not defined in eam schema
2784                -- for the eam_org_maint_defaults table.
2785                EXCEPTION
2786                 WHEN OTHERS THEN
2787                  NULL;
2788                END ;
2789 
2790                BEGIN
2791                 IF l_department_id IS NOT NULL
2792                 THEN
2793                  SELECT department_code
2794                    INTO p_instance_header_tbl(tab_row).department
2795                    FROM bom_departments
2796                   WHERE department_id = l_department_id;
2797                 END IF;
2798                EXCEPTION
2799                  WHEN NO_DATA_FOUND THEN
2800                   NULL;
2801                END;
2802 
2803              -- Area
2804                IF l_location_id IS NOT NULL
2805                THEN
2806                 BEGIN
2807                  SELECT location_codes
2808                    INTO p_instance_header_tbl(tab_row).area
2809                    FROM mtl_eam_locations
2810                   WHERE location_id = l_location_id;
2811                 EXCEPTION
2812                  WHEN NO_DATA_FOUND THEN
2813                   NULL;
2814                 END;
2815                END IF;
2816 
2817              -- Wip_accounting_class
2818                IF l_maint_organization_id IS NOT NULL
2819                THEN
2820                 BEGIN
2821                  SELECT class_code
2822                    INTO p_instance_header_tbl(tab_row).wip_accounting_class
2823                    FROM wip_accounting_classes
2824                   WHERE organization_id = l_maint_organization_id
2825                     AND class_type = 6
2826                     AND sysdate <= nvl(disable_date, sysdate)
2827                     AND ROWNUM=1;
2828                 EXCEPTION
2829                  WHEN NO_DATA_FOUND THEN
2830                   NULL;
2831                 END;
2832                END IF;
2833 
2834              -- Parent_asset_number
2835                 BEGIN
2836                  SELECT msn.gen_object_id
2837                    INTO l_gen_object_id
2838                    FROM mtl_serial_numbers msn
2839                        ,csi_item_instances cii
2840                   WHERE msn.inventory_item_id = cii.inventory_item_id
2841                     AND msn.serial_number = cii.serial_number
2842                     AND cii.instance_id = p_instance_header_tbl(tab_row).instance_id;
2843                 EXCEPTION
2844                  WHEN NO_DATA_FOUND THEN
2845                   NULL;
2846                 END;
2847 
2848                IF l_gen_object_id IS NOT NULL
2849                THEN
2850                 BEGIN
2851                  SELECT msi.concatenated_segments
2852                        ,cii.instance_number
2853                    INTO p_instance_header_tbl(tab_row).parent_asset_group
2854                        ,p_instance_header_tbl(tab_row).parent_asset_number
2855                    FROM mtl_system_items_b_kfv msi
2856                        ,mtl_serial_numbers msn
2857                        ,csi_item_instances cii
2858                        ,mtl_object_genealogy mog
2859                   WHERE msn.gen_object_id= mog.parent_object_id
2860                     AND mog.object_id = l_gen_object_id
2861                     AND mog.genealogy_type =5
2862                     AND (sysdate BETWEEN mog.start_date_active AND nvl(mog.end_date_active,sysdate))
2863                     AND msi.inventory_item_id = msn.inventory_item_id
2864                     AND msi.organization_id= cii.last_vld_organization_id
2865                     AND msn.inventory_item_id=cii.inventory_item_id
2866                     AND msn.serial_number=cii.serial_number;
2867                 EXCEPTION
2868                  WHEN OTHERS THEN
2869                   NULL;
2870                 END;
2871                END IF;
2872 
2873                IF p_instance_header_tbl(tab_row).asset_criticality_code IS NOT NULL AND
2874                   p_instance_header_tbl(tab_row).asset_criticality_code <> fnd_api.g_miss_char
2875                THEN
2876                 BEGIN
2877                  SELECT meaning
2878                    INTO p_instance_header_tbl(tab_row).criticality
2879                    FROM mfg_lookups
2880                   WHERE lookup_code = p_instance_header_tbl(tab_row).asset_criticality_code
2881                     AND lookup_type = 'MTL_EAM_ASSET_CRITICALITY';
2882                 EXCEPTION
2883                   WHEN OTHERS THEN
2884                     NULL;
2885                 END;
2886                END IF;
2887 
2888                IF p_instance_header_tbl(tab_row).category_id IS NOT NULL AND
2889                   p_instance_header_tbl(tab_row).category_id <> fnd_api.g_miss_num
2890                THEN
2891                 BEGIN
2892                  SELECT concatenated_segments
2893                    INTO p_instance_header_tbl(tab_row).category_name
2894                    FROM mtl_categories_kfv
2895                   WHERE category_id=p_instance_header_tbl(tab_row).category_id;
2896                 EXCEPTION
2897                   WHEN OTHERS THEN
2898                     NULL;
2899                 END;
2900                END IF;
2901 
2902 	       --included for bug 5211068
2903                IF p_instance_header_tbl(tab_row).maintainable_flag IS NOT NULL AND
2904                   p_instance_header_tbl(tab_row).maintainable_flag <> fnd_api.g_miss_char
2905                THEN
2906 		BEGIN
2907                     SELECT meaning
2908                     INTO p_instance_header_tbl(tab_row).maintainable
2909                     FROM csi_lookups
2910                     WHERE lookup_code = DECODE(p_instance_header_tbl(tab_row).maintainable_flag,'Y','YES','N','NO')
2911                     AND lookup_type = l_yesno_lookup_type;
2912 		EXCEPTION WHEN OTHERS THEN
2913                     NULL;
2914 		END;
2915                END IF;
2916 
2917              END IF; -- <IF csi_item_instance_vld_pvt.Check_for_eam_item>
2918 
2919        END IF;
2920    END LOOP;
2921 END Resolve_id_columns;
2922 
2923 
2924 /*----------------------------------------------------------*/
2925 /* Procedure name:  Get_Inst_Column_Values                  */
2926 /* Description   :  This procedure gets the column values   */
2927 /*                  for the Dynamic SQL                     */
2928 /*----------------------------------------------------------*/
2929 
2930 PROCEDURE Get_Inst_Column_Values
2931 (
2932     p_get_inst_cursor_id      IN   NUMBER,
2933     x_instance_id             OUT  NOCOPY NUMBER
2934      ) IS
2935 
2936 BEGIN
2937 
2938 dbms_sql.column_value(p_get_inst_cursor_id, 1, x_instance_id);
2939 
2940 END Get_Inst_Column_Values;
2941 
2942 
2943 /*--------------------------------------------------------*/
2944 /* Procedure name:  Define_Inst_Columns                   */
2945 /* Description   :  This procedure defines the columns    */
2946 /*                  for the Dynamic SQL                   */
2947 /*--------------------------------------------------------*/
2948 
2949 PROCEDURE Define_Inst_Columns
2950 (
2951   p_get_inst_cursor_id      IN   NUMBER,
2952   p_instance_query_rec      IN   csi_datastructures_pub.instance_query_rec
2953   ) IS
2954 
2955 l_instance_header_rec  csi_datastructures_pub.instance_header_rec;
2956 
2957 BEGIN
2958 
2959 dbms_sql.define_column(p_get_inst_cursor_id, 1, l_instance_header_rec.instance_id);
2960 
2961 END Define_Inst_Columns;
2962 
2963 
2964 /*---------------------------------------------------------*/
2965 /* Procedure name:  Bind_Inst_variable                     */
2966 /* Description :    Procedure used to generate the where   */
2967 /*                  clause for Item Instances              */
2968 /*---------------------------------------------------------*/
2969 
2970 PROCEDURE Bind_Inst_variable
2971 (
2972     p_instance_query_rec        IN   csi_datastructures_pub.instance_query_rec,
2973     p_party_query_rec           IN   csi_datastructures_pub.party_query_rec,
2974     p_pty_acct_query_rec        IN   csi_datastructures_pub.party_account_query_rec,
2975     p_transaction_id            IN   NUMBER,
2976     p_cur_get_inst_rel          IN   NUMBER
2977    ) IS
2978 BEGIN
2979 
2980  IF(( p_instance_query_rec.instance_id IS NOT NULL) AND
2981     ( p_instance_query_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
2982 
2983       DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':INSTANCE_ID', p_instance_query_rec.instance_id);
2984  END IF;
2985 
2986  IF( (p_instance_query_rec.inventory_item_id IS NOT NULL)
2987                   AND (p_instance_query_rec.inventory_item_id <> FND_API.G_MISS_NUM))  THEN
2988     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':INVENTORY_ITEM_ID', p_instance_query_rec.inventory_item_id);
2989  END IF;
2990 
2991  IF( (p_instance_query_rec.inventory_revision IS NOT NULL)
2992                   AND (p_instance_query_rec.inventory_revision <> FND_API.G_MISS_CHAR))  THEN
2993     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':INVENTORY_REVISION', p_instance_query_rec.inventory_revision);
2994  END IF;
2995 
2996  IF( (p_instance_query_rec.inv_master_organization_id IS NOT NULL)
2997                   AND (p_instance_query_rec.inv_master_organization_id <> FND_API.G_MISS_NUM))  THEN
2998     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, 'INV_MASTER_ORGANIZATION_ID', p_instance_query_rec.inv_master_organization_id);
2999  END IF;
3000 
3001  IF( (p_instance_query_rec.serial_number IS NOT NULL)
3002                   AND (p_instance_query_rec.serial_number <> FND_API.G_MISS_CHAR))  THEN
3003     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':serial_number', p_instance_query_rec.serial_number);
3004  END IF;
3005 
3006  IF( (p_instance_query_rec.lot_number IS NOT NULL)
3007                   AND (p_instance_query_rec.lot_number <> FND_API.G_MISS_CHAR))  THEN
3008     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':lot_number', p_instance_query_rec.lot_number);
3009  END IF;
3010 
3011  IF( (p_instance_query_rec.unit_of_measure IS NOT NULL)
3012                   AND (p_instance_query_rec.unit_of_measure <> FND_API.G_MISS_CHAR))  THEN
3013     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':unit_of_measure', p_instance_query_rec.unit_of_measure);
3014  END IF;
3015 
3016  IF( (p_instance_query_rec.instance_condition_id IS NOT NULL)
3017                   AND (p_instance_query_rec.instance_condition_id <> FND_API.G_MISS_NUM))  THEN
3018     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_condition_id', p_instance_query_rec.instance_condition_id);
3019  END IF;
3020 
3021  IF( (p_instance_query_rec.instance_status_id IS NOT NULL)
3022                   AND (p_instance_query_rec.instance_status_id <> FND_API.G_MISS_NUM))  THEN
3023     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_status_id', p_instance_query_rec.instance_status_id);
3024  END IF;
3025 
3026  IF( (p_instance_query_rec.system_id IS NOT NULL)
3027                   AND (p_instance_query_rec.system_id <> FND_API.G_MISS_NUM))  THEN
3028     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':system_id', p_instance_query_rec.system_id);
3029  END IF;
3030 
3031  IF( (p_instance_query_rec.instance_type_code IS NOT NULL)
3032                   AND (p_instance_query_rec.instance_type_code <> FND_API.G_MISS_CHAR))  THEN
3033     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_type_code', p_instance_query_rec.instance_type_code);
3034  END IF;
3035 
3036  IF( (p_instance_query_rec.location_type_code IS NOT NULL)
3037                   AND (p_instance_query_rec.location_type_code <> FND_API.G_MISS_CHAR))  THEN
3038     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':location_type_code', p_instance_query_rec.location_type_code);
3039  END IF;
3040 
3041  IF( (p_instance_query_rec.location_id IS NOT NULL)
3042                   AND (p_instance_query_rec.location_id <> FND_API.G_MISS_NUM))  THEN
3043     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':location_id', p_instance_query_rec.location_id);
3044  END IF;
3045 
3046  IF( (p_instance_query_rec.inv_organization_id IS NOT NULL)
3047                   AND (p_instance_query_rec.inv_organization_id <> FND_API.G_MISS_NUM))  THEN
3048     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':inv_organization_id', p_instance_query_rec.inv_organization_id);
3049  END IF;
3050 
3051  IF( (p_instance_query_rec.inv_subinventory_name IS NOT NULL)
3052                   AND (p_instance_query_rec.inv_subinventory_name <> FND_API.G_MISS_CHAR))  THEN
3053     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':inv_subinventory_name', p_instance_query_rec.inv_subinventory_name);
3054  END IF;
3055 
3056  IF( (p_instance_query_rec.inv_locator_id IS NOT NULL)
3057                   AND (p_instance_query_rec.inv_locator_id <> FND_API.G_MISS_NUM))  THEN
3058     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':inv_locator_id', p_instance_query_rec.inv_locator_id);
3059  END IF;
3060 
3061  IF( (p_instance_query_rec.pa_project_id IS NOT NULL)
3062                   AND (p_instance_query_rec.pa_project_id <> FND_API.G_MISS_NUM))  THEN
3063     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':pa_project_id', p_instance_query_rec.pa_project_id);
3064  END IF;
3065 
3066  IF( (p_instance_query_rec.pa_project_task_id IS NOT NULL)
3067                   AND (p_instance_query_rec.pa_project_task_id <> FND_API.G_MISS_NUM))  THEN
3068     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':pa_project_task_id', p_instance_query_rec.pa_project_task_id);
3069  END IF;
3070 
3071  IF( (p_instance_query_rec.in_transit_order_line_id IS NOT NULL)
3072                   AND (p_instance_query_rec.in_transit_order_line_id <> FND_API.G_MISS_NUM))  THEN
3073     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':in_transit_order_line_id', p_instance_query_rec.in_transit_order_line_id);
3074  END IF;
3075 
3076  IF( (p_instance_query_rec.wip_job_id IS NOT NULL)
3077                   AND (p_instance_query_rec.wip_job_id <> FND_API.G_MISS_NUM))  THEN
3078     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':wip_job_id', p_instance_query_rec.wip_job_id);
3079  END IF;
3080 
3081  IF( (p_instance_query_rec.po_order_line_id IS NOT NULL)
3082                   AND (p_instance_query_rec.po_order_line_id <> FND_API.G_MISS_NUM))  THEN
3083     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':po_order_line_id', p_instance_query_rec.po_order_line_id);
3084  END IF;
3085 
3086  IF( (p_instance_query_rec.last_oe_order_line_id IS NOT NULL)
3087                   AND (p_instance_query_rec.last_oe_order_line_id <> FND_API.G_MISS_NUM))  THEN
3088     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_oe_order_line_id', p_instance_query_rec.last_oe_order_line_id);
3089  END IF;
3090 
3091  IF( (p_instance_query_rec.last_oe_rma_line_id IS NOT NULL)
3092                   AND (p_instance_query_rec.last_oe_rma_line_id <> FND_API.G_MISS_NUM))  THEN
3093     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_oe_rma_line_id', p_instance_query_rec.last_oe_rma_line_id);
3094  END IF;
3095 
3096  IF( (p_instance_query_rec.last_po_po_line_id IS NOT NULL)
3097                   AND (p_instance_query_rec.last_po_po_line_id <> FND_API.G_MISS_NUM))  THEN
3098     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_po_po_line_id', p_instance_query_rec.last_po_po_line_id);
3099  END IF;
3100 
3101  IF( (p_instance_query_rec.last_oe_po_number IS NOT NULL)
3102                   AND (p_instance_query_rec.last_oe_po_number <> FND_API.G_MISS_CHAR))  THEN
3103     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_oe_po_number', p_instance_query_rec.last_oe_po_number);
3104  END IF;
3105 
3106  IF( (p_instance_query_rec.last_wip_job_id IS NOT NULL)
3107                   AND (p_instance_query_rec.last_wip_job_id <> FND_API.G_MISS_NUM))  THEN
3108     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_wip_job_id', p_instance_query_rec.last_wip_job_id);
3109  END IF;
3110 
3111  IF( (p_instance_query_rec.last_pa_project_id IS NOT NULL)
3112                   AND (p_instance_query_rec.last_pa_project_id <> FND_API.G_MISS_NUM))  THEN
3113     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_pa_project_id', p_instance_query_rec.last_pa_project_id);
3114  END IF;
3115 
3116  IF( (p_instance_query_rec.last_pa_task_id IS NOT NULL)
3117                   AND (p_instance_query_rec.last_pa_task_id <> FND_API.G_MISS_NUM))  THEN
3118     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_pa_task_id', p_instance_query_rec.last_pa_task_id);
3119  END IF;
3120 
3121  IF( (p_instance_query_rec.last_oe_agreement_id IS NOT NULL)
3122                   AND (p_instance_query_rec.last_oe_agreement_id <> FND_API.G_MISS_NUM))  THEN
3123     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':last_oe_agreement_id', p_instance_query_rec.last_oe_agreement_id);
3124  END IF;
3125 
3126  IF( (p_instance_query_rec.install_date IS NOT NULL)
3127                   AND (p_instance_query_rec.install_date <> FND_API.G_MISS_DATE))  THEN
3128     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':install_date', p_instance_query_rec.install_date);
3129  END IF;
3130 
3131  IF( (p_instance_query_rec.manually_created_flag IS NOT NULL)
3132                   AND (p_instance_query_rec.manually_created_flag <> FND_API.G_MISS_CHAR))  THEN
3133     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':manually_created_flag', p_instance_query_rec.manually_created_flag);
3134  END IF;
3135 
3136  IF( (p_instance_query_rec.return_by_date IS NOT NULL)
3137                   AND (p_instance_query_rec.return_by_date <> FND_API.G_MISS_DATE))  THEN
3138     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':return_by_date', p_instance_query_rec.return_by_date);
3139  END IF;
3140 
3141  IF( (p_instance_query_rec.actual_return_date IS NOT NULL)
3142                   AND (p_instance_query_rec.actual_return_date <> FND_API.G_MISS_DATE))  THEN
3143     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':actual_return_date', p_instance_query_rec.actual_return_date);
3144  END IF;
3145 
3146  IF( (p_instance_query_rec.instance_usage_code IS NOT NULL)
3147                   AND (p_instance_query_rec.instance_usage_code <> FND_API.G_MISS_CHAR))  THEN
3148     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_usage_code', p_instance_query_rec.instance_usage_code);
3149  END IF;
3150 
3151 -- The following code has been added by sguthiva for att enhancements
3152 
3153  IF( (p_instance_query_rec.config_inst_hdr_id IS NOT NULL)
3154                   AND (p_instance_query_rec.config_inst_hdr_id <> FND_API.G_MISS_NUM))  THEN
3155     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':config_inst_hdr_id', p_instance_query_rec.config_inst_hdr_id);
3156  END IF;
3157 
3158  IF( (p_instance_query_rec.config_inst_rev_num IS NOT NULL)
3159                   AND (p_instance_query_rec.config_inst_rev_num <> FND_API.G_MISS_NUM))  THEN
3160     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':config_inst_rev_num', p_instance_query_rec.config_inst_rev_num);
3161  END IF;
3162 
3163  IF( (p_instance_query_rec.config_inst_item_id IS NOT NULL)
3164                   AND (p_instance_query_rec.config_inst_item_id <> FND_API.G_MISS_NUM))  THEN
3165     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':config_inst_item_id', p_instance_query_rec.config_inst_item_id);
3166  END IF;
3167 
3168  IF( (p_instance_query_rec.instance_description IS NOT NULL)
3169                   AND (p_instance_query_rec.instance_description <> FND_API.G_MISS_CHAR))  THEN
3170     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_description', p_instance_query_rec.instance_description);
3171  END IF;
3172 
3173 -- End of code addition
3174   -- Addition of columns for FA Integration
3175  IF( (p_instance_query_rec.operational_status_code IS NOT NULL)
3176                   AND (p_instance_query_rec.operational_status_code <> FND_API.G_MISS_CHAR))  THEN
3177     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':operational_status_code', p_instance_query_rec.operational_status_code);
3178  END IF;
3179   -- End addition of columns for FA Integration
3180 ----
3181  IF( (p_party_query_rec.instance_party_id IS NOT NULL)
3182                   AND (p_party_query_rec.instance_party_id <> FND_API.G_MISS_NUM))  THEN
3183     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_party_id', p_party_query_rec.instance_party_id);
3184  END IF;
3185 
3186  IF( (p_party_query_rec.instance_id IS NOT NULL)
3187                   AND (p_party_query_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
3188     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_id', p_party_query_rec.instance_id);
3189  END IF;
3190 
3191  IF( (p_party_query_rec.party_id IS NOT NULL)
3192                   AND (p_party_query_rec.party_id <> FND_API.G_MISS_NUM))  THEN
3193     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':party_id', p_party_query_rec.party_id);
3194  END IF;
3195 
3196  IF( (p_party_query_rec.relationship_type_code IS NOT NULL)
3197                   AND (p_party_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR))  THEN
3198     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':relationship_type_code', p_party_query_rec.relationship_type_code);
3199  END IF;
3200 
3201 ----
3202  IF( (p_pty_acct_query_rec.ip_account_id IS NOT NULL)
3203                   AND (p_pty_acct_query_rec.ip_account_id <> FND_API.G_MISS_NUM))  THEN
3204     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':ip_account_id', p_pty_acct_query_rec.ip_account_id);
3205  END IF;
3206 
3207  IF( (p_pty_acct_query_rec.instance_party_id IS NOT NULL)
3208                   AND (p_pty_acct_query_rec.instance_party_id <> FND_API.G_MISS_NUM))  THEN
3209     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':instance_party_id', p_pty_acct_query_rec.instance_party_id);
3210  END IF;
3211 
3212  IF( (p_pty_acct_query_rec.party_account_id IS NOT NULL)
3213                   AND (p_pty_acct_query_rec.party_account_id <> FND_API.G_MISS_NUM))  THEN
3214     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':party_account_id', p_pty_acct_query_rec.party_account_id);
3215  END IF;
3216 
3217  IF( (p_pty_acct_query_rec.relationship_type_code IS NOT NULL)
3218                   AND (p_pty_acct_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR))  THEN
3219     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':relationship_type_code', p_pty_acct_query_rec.relationship_type_code);
3220  END IF;
3221 
3222  IF p_transaction_id is not null then
3223     DBMS_SQL.BIND_VARIABLE(p_cur_get_inst_rel, ':p_transaction_id', p_transaction_id);
3224  END IF;
3225 END Bind_Inst_variable;
3226 
3227 
3228 /*-----------------------------------------------------------*/
3229 /* Procedure name:  Gen_Inst_Where_Clause                    */
3230 /* Description :    Procedure used to  generate the where    */
3231 /*                  clause  for Party relationship           */
3232 /*-----------------------------------------------------------*/
3233 
3234 PROCEDURE Gen_Inst_Where_Clause
3235 (
3236     p_instance_query_rec    IN      csi_datastructures_pub.instance_query_rec,
3237     p_party_query_rec       IN      csi_datastructures_pub.party_query_rec,
3238     p_pty_acct_query_rec    IN      csi_datastructures_pub.party_account_query_rec,
3239     p_transaction_id        IN      NUMBER,
3240     x_select_stmt           OUT     NOCOPY VARCHAR2,
3241     p_active_instance_only  IN      VARCHAR2
3242    ) IS
3243 
3244   l_join_condition         VARCHAR2(2000):= '';
3245   l_from_clause            VARCHAR2(2000):= '';
3246   l_select_columns         VARCHAR2(2000):= '';
3247   x_where_clause           VARCHAR2(2000):= '';
3248   l_instance_rec_exists    BOOLEAN := FALSE;
3249   l_party_rec_exists       BOOLEAN := FALSE;
3250   l_party_acct_rec_exists  BOOLEAN := FALSE;
3251   --Added
3252   l_flag                   VARCHAR2(3);
3253   l_inp_rec                OKS_ENTITLEMENTS_PUB.inp_cont_rec;
3254   x_return_status          VARCHAR2(2000);
3255   x_msg_count              NUMBER;
3256   x_msg_data               VARCHAR2(2000);
3257   l_ent_contracts          OKS_ENTITLEMENTS_PUB.ent_cont_tbl;
3258   l_msg_data               VARCHAR2(2000);
3259   l_msg_index              NUMBER;
3260   l_msg_count              NUMBER;
3261   l_rec_count              NUMBER:=1;
3262   l_row_count              NUMBER;
3263   l_covered_cp_id          VARCHAR2(2000) DEFAULT NULL;
3264   l_covered_level_code     OKC_LINE_STYLES_B.LTY_CODE%TYPE;
3265   l_coverage_level_id      NUMBER;
3266   --End Addition
3267 
3268   l_union_stmt             VARCHAR2(2000) := ' select instance_id  from csi_item_instances_h '||
3269                             ' where transaction_id = :p_transaction_id  UNION   select a.instance_id '||
3270                             ' from csi_i_parties a, csi_i_parties_h b where a.instance_party_id = b.instance_party_id '||
3271                             ' and  b.transaction_id = :p_transaction_id  UNION   select a.instance_id '||
3272                             ' from csi_i_assets a, csi_i_assets_h b where a.instance_asset_id = b.instance_asset_id '||
3273                             ' and transaction_id = :p_transaction_id UNION '||
3274                             ' select a.instance_id  from csi_i_parties a, csi_ip_accounts b, '||
3275                             ' csi_ip_accounts_h c  where a.instance_party_id = b.instance_party_id '||
3276                             ' and b.ip_account_id  = c.ip_account_id  and c.transaction_id = :p_transaction_id UNION '||
3277                             ' SELECT b.instance_id  FROM csi_iea_values_h a, csi_iea_values b '||
3278                             ' WHERE a.attribute_value_id = b.attribute_value_id  AND a.transaction_id = :p_transaction_id '||
3279                             ' UNION SELECT b.subject_id  FROM csi_ii_relationships_h a, csi_ii_relationships b '||
3280                             ' WHERE a.relationship_id = b.relationship_id  AND a.transaction_id  = :p_transaction_id '||
3281                             ' UNION SELECT a.instance_id FROM csi_i_org_assignments a, csi_i_org_assignments_h b '||
3282                             ' WHERE a.instance_ou_id = b.instance_ou_id and  b.transaction_id = :p_transaction_id '||
3283                             ' UNION SELECT a.instance_id FROM csi_i_pricing_attribs a , csi_i_pricing_attribs_h b '||
3284                             ' WHERE a.pricing_attribute_id = b.pricing_attribute_id and  b.transaction_id = :p_transaction_id '||
3285                             ' UNION SELECT a.instance_id FROM csi_i_version_labels a, csi_i_version_labels_h b '||
3286                             ' WHERE a.version_label_id = b.version_label_id  and b.transaction_id = :p_transaction_id '||
3287                             ' UNION SELECT a.instance_id FROM csi_item_instances a, csi_systems_b b, csi_systems_h c '||
3288                             ' WHERE a.system_id = b.system_id  and b.system_id = c.system_id and  c.transaction_id = :p_transaction_id ';
3289 
3290 
3291 BEGIN
3292 
3293   IF        (p_instance_query_rec.INSTANCE_ID              <>  FND_API.G_MISS_NUM)
3294          OR (p_instance_query_rec.INSTANCE_ID              IS NULL )
3295          OR (p_instance_query_rec.INVENTORY_ITEM_ID        <>  FND_API.G_MISS_NUM)
3296          OR (p_instance_query_rec.INVENTORY_ITEM_ID        IS NULL )
3297          OR (p_instance_query_rec.INVENTORY_REVISION       <>  FND_API.G_MISS_CHAR)
3298          OR (p_instance_query_rec.INVENTORY_REVISION       IS NULL )
3299          OR (p_instance_query_rec.INV_MASTER_ORGANIZATION_ID <>  FND_API.G_MISS_NUM)
3300          OR (p_instance_query_rec.INV_MASTER_ORGANIZATION_ID  IS NULL )
3301          OR (p_instance_query_rec.SERIAL_NUMBER            <>  FND_API.G_MISS_CHAR)
3302          OR (p_instance_query_rec.SERIAL_NUMBER            IS NULL )
3303          OR (p_instance_query_rec.LOT_NUMBER               <>  FND_API.G_MISS_CHAR)
3304          OR (p_instance_query_rec.LOT_NUMBER               IS NULL )
3305          OR (p_instance_query_rec.UNIT_OF_MEASURE          <>  FND_API.G_MISS_CHAR)
3306          OR (p_instance_query_rec.UNIT_OF_MEASURE          IS NULL )
3307          OR (p_instance_query_rec.INSTANCE_CONDITION_ID    <>  FND_API.G_MISS_NUM)
3308          OR (p_instance_query_rec.INSTANCE_CONDITION_ID    IS NULL )
3309          OR (p_instance_query_rec.INSTANCE_STATUS_ID       <>  FND_API.G_MISS_NUM)
3310          OR (p_instance_query_rec.INSTANCE_STATUS_ID       IS NULL )
3311          OR (p_instance_query_rec.SYSTEM_ID                <>  FND_API.G_MISS_NUM)
3312          OR (p_instance_query_rec.SYSTEM_ID                IS NULL )
3313          OR (p_instance_query_rec.INSTANCE_TYPE_CODE       <>  FND_API.G_MISS_CHAR)
3314          OR (p_instance_query_rec.INSTANCE_TYPE_CODE       IS NULL )
3315          OR (p_instance_query_rec.LOCATION_TYPE_CODE       <>  FND_API.G_MISS_CHAR)
3316          OR (p_instance_query_rec.LOCATION_TYPE_CODE       IS NULL )
3317          OR (p_instance_query_rec.LOCATION_ID              <>  FND_API.G_MISS_NUM)
3318          OR (p_instance_query_rec.LOCATION_ID              IS NULL )
3319          OR (p_instance_query_rec.INV_ORGANIZATION_ID      <>  FND_API.G_MISS_NUM)
3320          OR (p_instance_query_rec.INV_ORGANIZATION_ID      IS NULL )
3321          OR (p_instance_query_rec.INV_SUBINVENTORY_NAME    <>  FND_API.G_MISS_CHAR)
3322          OR (p_instance_query_rec.INV_SUBINVENTORY_NAME    IS NULL )
3323          OR (p_instance_query_rec.INV_LOCATOR_ID           <>  FND_API.G_MISS_NUM)
3324          OR (p_instance_query_rec.INV_LOCATOR_ID           IS NULL )
3325          OR (p_instance_query_rec.PA_PROJECT_ID            <>  FND_API.G_MISS_NUM)
3326          OR (p_instance_query_rec.PA_PROJECT_ID            IS NULL )
3327          OR (p_instance_query_rec.PA_PROJECT_TASK_ID       <>  FND_API.G_MISS_NUM)
3328          OR (p_instance_query_rec.PA_PROJECT_TASK_ID       IS NULL )
3329          OR (p_instance_query_rec.IN_TRANSIT_ORDER_LINE_ID <>  FND_API.G_MISS_NUM)
3330          OR (p_instance_query_rec.IN_TRANSIT_ORDER_LINE_ID IS NULL )
3331          OR (p_instance_query_rec.WIP_JOB_ID               <>  FND_API.G_MISS_NUM)
3332          OR (p_instance_query_rec.WIP_JOB_ID               IS NULL )
3333          OR (p_instance_query_rec.PO_ORDER_LINE_ID         <>  FND_API.G_MISS_NUM)
3334          OR (p_instance_query_rec.PO_ORDER_LINE_ID         IS NULL )
3335          OR (p_instance_query_rec.LAST_OE_ORDER_LINE_ID    <>  FND_API.G_MISS_NUM)
3336          OR (p_instance_query_rec.LAST_OE_ORDER_LINE_ID    IS NULL )
3337          OR (p_instance_query_rec.LAST_OE_RMA_LINE_ID      <>  FND_API.G_MISS_NUM)
3338          OR (p_instance_query_rec.LAST_OE_RMA_LINE_ID      IS NULL )
3339          OR (p_instance_query_rec.LAST_PO_PO_LINE_ID       <>  FND_API.G_MISS_NUM)
3340          OR (p_instance_query_rec.LAST_PO_PO_LINE_ID       IS NULL )
3341          OR (p_instance_query_rec.LAST_OE_PO_NUMBER        <>  FND_API.G_MISS_CHAR)
3342          OR (p_instance_query_rec.LAST_OE_PO_NUMBER        IS NULL )
3343          OR (p_instance_query_rec.LAST_WIP_JOB_ID          <>  FND_API.G_MISS_NUM)
3344          OR (p_instance_query_rec.LAST_WIP_JOB_ID          IS NULL )
3345          OR (p_instance_query_rec.LAST_PA_PROJECT_ID       <>  FND_API.G_MISS_NUM)
3346          OR (p_instance_query_rec.LAST_PA_PROJECT_ID       IS NULL )
3347          OR (p_instance_query_rec.LAST_PA_TASK_ID          <>  FND_API.G_MISS_NUM)
3348          OR (p_instance_query_rec.LAST_PA_TASK_ID          IS NULL )
3349          OR (p_instance_query_rec.LAST_OE_AGREEMENT_ID     <>  FND_API.G_MISS_NUM)
3350          OR (p_instance_query_rec.LAST_OE_AGREEMENT_ID     IS NULL )
3351          OR (p_instance_query_rec.INSTALL_DATE             <>  FND_API.G_MISS_DATE)
3352          OR (p_instance_query_rec.INSTALL_DATE             IS NULL )
3353          OR (p_instance_query_rec.MANUALLY_CREATED_FLAG    <>  FND_API.G_MISS_CHAR)
3354          OR (p_instance_query_rec.MANUALLY_CREATED_FLAG    IS NULL )
3355          OR (p_instance_query_rec.RETURN_BY_DATE           <>  FND_API.G_MISS_DATE)
3356          OR (p_instance_query_rec.RETURN_BY_DATE           IS NULL )
3357          OR (p_instance_query_rec.ACTUAL_RETURN_DATE       <>  FND_API.G_MISS_DATE)
3358          OR (p_instance_query_rec.ACTUAL_RETURN_DATE       IS NULL )
3359          OR (p_instance_query_rec.INSTANCE_USAGE_CODE      <>  FND_API.G_MISS_CHAR)
3360          OR (p_instance_query_rec.INSTANCE_USAGE_CODE      IS NULL )
3361          OR (p_instance_query_rec.CONTRACT_NUMBER          <>  FND_API.G_MISS_CHAR)
3362          OR (p_instance_query_rec.CONTRACT_NUMBER          IS NULL )
3363          OR (p_instance_query_rec.CONFIG_INST_HDR_ID       <>  FND_API.G_MISS_NUM) -- sguthiva added for att
3364          OR (p_instance_query_rec.CONFIG_INST_HDR_ID       IS NULL )
3365          OR (p_instance_query_rec.CONFIG_INST_REV_NUM      <>  FND_API.G_MISS_NUM) -- sguthiva added for att
3366          OR (p_instance_query_rec.CONFIG_INST_REV_NUM      IS NULL )
3367          OR (p_instance_query_rec.CONFIG_INST_ITEM_ID      <>  FND_API.G_MISS_NUM) -- sguthiva added for att
3368          OR (p_instance_query_rec.CONFIG_INST_ITEM_ID      IS NULL )
3369          OR (p_instance_query_rec.INSTANCE_DESCRIPTION     <>  FND_API.G_MISS_CHAR) -- sguthiva added for att
3370          OR (p_instance_query_rec.INSTANCE_DESCRIPTION     IS NULL )
3371          OR (p_instance_query_rec.OPERATIONAL_STATUS_CODE  <>  FND_API.G_MISS_CHAR) -- Addition of columns for FA Integration
3372          OR (p_instance_query_rec.OPERATIONAL_STATUS_CODE  IS NULL )
3373  THEN
3374 
3375      l_instance_rec_exists := TRUE;
3376      l_from_clause    := ' csi_item_instances a ';
3377      l_select_columns := ' a.INSTANCE_ID ';
3378 
3379 
3380  END IF;
3381 
3382  IF   (p_party_query_rec.instance_party_id  <> FND_API.G_MISS_NUM)
3383    OR (p_party_query_rec.instance_party_id  IS NULL )
3384    OR (p_party_query_rec.instance_id        <> FND_API.G_MISS_NUM)
3385    OR (p_party_query_rec.instance_id        IS NULL )
3386    OR (p_party_query_rec.party_id           <> FND_API.G_MISS_NUM)
3387    OR (p_party_query_rec.party_id           IS NULL )
3388    OR (p_party_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR )
3389    OR (p_party_query_rec.relationship_type_code IS NULL ) THEN
3390 
3391    l_party_rec_exists := TRUE;
3392    IF l_instance_rec_exists THEN
3393      l_from_clause    := l_from_clause||'  , csi_i_parties b ';
3394      l_join_condition := ' a.instance_id = b.instance_id  ';
3395    ELSE
3396      l_from_clause    := '  csi_i_parties b ';
3397      l_select_columns := ' b.instance_id ';
3398    END IF;
3399 
3400 END IF;
3401 
3402 IF    (p_pty_acct_query_rec.ip_account_id     <> FND_API.G_MISS_NUM)
3403    OR (p_pty_acct_query_rec.ip_account_id     IS NULL )
3404    OR (p_pty_acct_query_rec.instance_party_id <> FND_API.G_MISS_NUM)
3405    OR (p_pty_acct_query_rec.instance_party_id IS NULL )
3406    OR (p_pty_acct_query_rec.party_account_id  <> FND_API.G_MISS_NUM)
3407    OR (p_pty_acct_query_rec.party_account_id  IS NULL)
3408    OR (p_pty_acct_query_rec.relationship_type_code  <> FND_API.G_MISS_CHAR  )
3409    OR (p_pty_acct_query_rec.relationship_type_code  IS NULL  ) THEN
3410 
3411      l_party_acct_rec_exists := TRUE;
3412 
3413      IF l_party_rec_exists then
3414 
3415         IF l_instance_rec_exists THEN
3416            l_from_clause  := l_from_clause||' , csi_ip_accounts c  ';
3417            l_join_condition := l_join_condition||' AND  b.instance_party_id = c.instance_party_id  ';
3418 
3419         ELSE
3420            l_from_clause  := l_from_clause||' , csi_ip_accounts c  ';
3421            l_join_condition := ' b.instance_party_id = c.instance_party_id  ';
3422 
3423         END IF;
3424 
3425      ELSE
3426 
3427         IF l_instance_rec_exists THEN
3428            l_from_clause    := l_from_clause||'  , csi_i_parties b , csi_ip_accounts c ';
3429            l_join_condition := ' a.instance_id = b.instance_id AND b.instance_party_id = c.instance_party_id  ';
3430         ELSE
3431            l_from_clause    := '  csi_i_parties b , csi_ip_accounts c ';
3432            l_join_condition := ' b.instance_party_id = c.instance_party_id  ';
3433            l_select_columns := ' b.instance_id ';
3434         END IF;
3435 
3436      END IF;
3437 
3438 END IF;
3439 
3440 IF (( p_instance_query_rec.instance_id  IS NOT NULL)  AND
3441                          ( p_instance_query_rec.instance_id  <> FND_API.G_MISS_NUM)) THEN
3442        IF x_where_clause IS NULL THEN
3443          x_where_clause := '  a.instance_id = :INSTANCE_ID ';
3444        ELSE
3445          x_where_clause := x_where_clause||' AND '||'  a.instance_id = :INSTANCE_ID ';
3446        END IF;
3447 ELSIF ( p_instance_query_rec.instance_id  IS  NULL) THEN
3448        IF x_where_clause IS NULL THEN
3449         x_where_clause := '  a.instance_id IS NULL ';
3450        ELSE
3451         x_where_clause := x_where_clause||' AND '||'  a.instance_id IS NULL ';
3452        END IF;
3453 END IF;
3454 IF (( p_instance_query_rec.inventory_item_id  IS NOT NULL)  AND
3455                          ( p_instance_query_rec.inventory_item_id  <> FND_API.G_MISS_NUM)) THEN
3456        IF x_where_clause IS NULL THEN
3457         x_where_clause := ' a.inventory_item_id = :INVENTORY_ITEM_ID ';
3458        ELSE
3459         x_where_clause := x_where_clause||' AND '||' a.inventory_item_id = :INVENTORY_ITEM_ID ';
3460        END IF;
3461 ELSIF ( p_instance_query_rec.inventory_item_id  IS NULL) THEN
3462        IF x_where_clause IS NULL THEN
3463          x_where_clause := ' a.inventory_item_id IS NULL ';
3464        ELSE
3465            x_where_clause := x_where_clause||' AND '||' a.inventory_item_id IS NULL ';
3466        END IF;
3467 END IF;
3468 IF (( p_instance_query_rec.inventory_revision  IS NOT NULL)  AND
3469              ( p_instance_query_rec.inventory_revision  <> FND_API.G_MISS_CHAR)) THEN
3470        IF x_where_clause IS NULL THEN
3471         x_where_clause := ' a.inventory_revision = :INVENTORY_REVISION ';
3472        ELSE
3473         x_where_clause := x_where_clause||' AND '||' a.inventory_revision = :INVENTORY_REVISION ';
3474 
3475        END IF;
3476 ELSIF ( p_instance_query_rec.inventory_revision  IS  NULL) THEN
3477        IF x_where_clause IS NULL THEN
3478          x_where_clause := ' a.inventory_revision IS NULL ';
3479        ELSE
3480          x_where_clause := x_where_clause||' AND '||' a.inventory_revision IS NULL ';
3481        END IF;
3482 END IF;
3483 IF (( p_instance_query_rec.inv_master_organization_id  IS NOT NULL)  AND
3484             ( p_instance_query_rec.inv_master_organization_id  <> FND_API.G_MISS_NUM)) THEN
3485    IF x_where_clause IS NULL THEN
3486     x_where_clause := ' a.inv_master_organization_id = :INV_MASTER_ORGANIZATION_ID ';
3487    ELSE
3488     x_where_clause := x_where_clause||' AND '||' a.inv_master_organization_id = :INV_MASTER_ORGANIZATION_ID ';
3489 
3490    END IF;
3491 ELSIF ( p_instance_query_rec.inv_master_organization_id  IS  NULL) THEN
3492   IF x_where_clause IS NULL THEN
3493     x_where_clause := ' a.inv_master_organization_id IS NULL ';
3494   ELSE
3495     x_where_clause := x_where_clause||' AND '||' a.inv_master_organization_id IS NULL ';
3496   END IF;
3497 END IF;
3498 
3499 IF (( p_instance_query_rec.serial_number  IS NOT NULL)  AND
3500             ( p_instance_query_rec.serial_number  <> FND_API.G_MISS_CHAR)) THEN
3501     IF x_where_clause IS NULL THEN
3502         x_where_clause := ' a.serial_number = :serial_number ';
3503     ELSE
3504         x_where_clause := x_where_clause||' AND '||' a.serial_number = :serial_number ';
3505     END IF;
3506 
3507 ELSIF ( p_instance_query_rec.serial_number  IS  NULL) THEN
3508     IF x_where_clause IS NULL THEN
3509         x_where_clause := ' a.serial_number IS NULL ';
3510     ELSE
3511         x_where_clause := x_where_clause||' AND '||' a.serial_number IS NULL ';
3512     END IF;
3513 END IF;
3514 
3515 IF (( p_instance_query_rec.lot_number  IS NOT NULL)  AND
3516           ( p_instance_query_rec.lot_number  <> FND_API.G_MISS_CHAR)) THEN
3517        IF x_where_clause IS NULL THEN
3518          x_where_clause := ' a.lot_number = :lot_number ';
3519        ELSE
3520          x_where_clause := x_where_clause||' AND '||' a.lot_number = :lot_number ';
3521        END IF;
3522 
3523 ELSIF ( p_instance_query_rec.lot_number  IS  NULL) THEN
3524     IF x_where_clause IS NULL THEN
3525       x_where_clause := ' a.lot_number IS NULL ';
3526     ELSE
3527       x_where_clause := x_where_clause||' AND '||' a.lot_number IS NULL ';
3528 
3529     END IF;
3530 END IF;
3531 
3532 IF( (p_instance_query_rec.unit_of_measure IS NOT NULL)
3533          AND (p_instance_query_rec.unit_of_measure <> FND_API.G_MISS_CHAR))  THEN
3534      IF x_where_clause IS NULL THEN
3535         x_where_clause := ' a.unit_of_measure = :unit_of_measure ';
3536      ELSE
3537         x_where_clause := x_where_clause||' AND '||' a.unit_of_measure = :unit_of_measure ';
3538      END IF;
3539 ELSIF (p_instance_query_rec.unit_of_measure IS  NULL) THEN
3540     IF x_where_clause IS NULL THEN
3541       x_where_clause := ' a.unit_of_measure IS NULL ';
3542     ELSE
3543        x_where_clause := x_where_clause||' AND '||' a.unit_of_measure IS NULL ';
3544     END IF;
3545 END IF;
3546 
3547 IF (( p_instance_query_rec.instance_condition_id  IS NOT NULL)  AND
3548            ( p_instance_query_rec.instance_condition_id  <> FND_API.G_MISS_NUM)) THEN
3549      IF x_where_clause IS NULL THEN
3550         x_where_clause := ' a.instance_condition_id = :instance_condition_id ';
3551      ELSE
3552          x_where_clause := x_where_clause||' AND '||' a.instance_condition_id = :instance_condition_id ';
3553      END IF;
3554 ELSIF ( p_instance_query_rec.instance_condition_id  IS NULL) THEN
3555      IF x_where_clause IS NULL THEN
3556         x_where_clause := ' a.instance_condition_id IS NULL ';
3557      ELSE
3558         x_where_clause := x_where_clause||' AND '||' a.instance_condition_id IS NULL ';
3559      END IF;
3560 
3561 END IF;
3562 
3563 IF (( p_instance_query_rec.instance_status_id  IS NOT NULL)  AND
3564             ( p_instance_query_rec.instance_status_id  <> FND_API.G_MISS_NUM)) THEN
3565       IF x_where_clause IS NULL THEN
3566          x_where_clause := ' a.instance_status_id = :instance_status_id ';
3567       ELSE
3568          x_where_clause := x_where_clause||' AND '||' a.instance_status_id = :instance_status_id ';
3569       END IF;
3570 ELSIF ( p_instance_query_rec.instance_status_id  IS NULL) THEN
3571     IF x_where_clause IS NULL THEN
3572       x_where_clause := ' a.instance_status_id IS NULL ';
3573     ELSE
3574       x_where_clause := x_where_clause||' AND '||' a.instance_status_id IS NULL ';
3575     END IF;
3576 END IF;
3577 
3578 IF (( p_instance_query_rec.system_id  IS NOT NULL)  AND
3579         ( p_instance_query_rec.system_id  <> FND_API.G_MISS_NUM)) THEN
3580       IF x_where_clause IS NULL THEN
3581          x_where_clause := ' a.system_id = :system_id ';
3582       ELSE
3583          x_where_clause := x_where_clause||' AND '||' a.system_id = :system_id ';
3584       END IF;
3585 
3586 ELSIF ( p_instance_query_rec.system_id  IS NULL) THEN
3587    IF x_where_clause IS NULL THEN
3588       x_where_clause := ' a.system_id IS NULL ';
3589    ELSE
3590       x_where_clause := x_where_clause||' AND '||' a.system_id IS NULL ';
3591    END IF;
3592 END IF;
3593 
3594 IF (( p_instance_query_rec.instance_type_code  IS NOT NULL)  AND
3595            ( p_instance_query_rec.instance_type_code  <> FND_API.G_MISS_CHAR)) THEN
3596      IF x_where_clause IS NULL THEN
3597         x_where_clause := ' a.instance_type_code = :instance_type_code ';
3598      ELSE
3599         x_where_clause := x_where_clause||' AND '||' a.instance_type_code = :instance_type_code ';
3600      END IF;
3601 ELSIF ( p_instance_query_rec.instance_type_code  IS  NULL) THEN
3602     IF x_where_clause IS NULL THEN
3603        x_where_clause := ' a.instance_type_code IS NULL ';
3604     ELSE
3605        x_where_clause := x_where_clause||' AND '||' a.instance_type_code IS NULL ';
3606     END IF;
3607 END IF;
3608 
3609 IF (( p_instance_query_rec.location_type_code  IS NOT NULL)  AND
3610            ( p_instance_query_rec.location_type_code  <> FND_API.G_MISS_CHAR)) THEN
3611      IF x_where_clause IS NULL THEN
3612         x_where_clause := ' a.location_type_code = :location_type_code ';
3613      ELSE
3614         x_where_clause := x_where_clause||' AND '||' a.location_type_code = :location_type_code ';
3615      END IF;
3616 ELSIF ( p_instance_query_rec.location_type_code  IS  NULL) THEN
3617     IF x_where_clause IS NULL THEN
3618        x_where_clause := ' a.location_type_code IS NULL ';
3619     ELSE
3620        x_where_clause := x_where_clause||' AND '||' a.location_type_code IS NULL ';
3621     END IF;
3622 END IF;
3623 
3624 IF (( p_instance_query_rec.location_id  IS NOT NULL)  AND
3625           ( p_instance_query_rec.location_id  <> FND_API.G_MISS_NUM)) THEN
3626      IF x_where_clause IS NULL THEN
3627         x_where_clause := ' a.location_id = :location_id ';
3628      ELSE
3629          x_where_clause := x_where_clause||' AND '||' a.location_id = :location_id ';
3630      END IF;
3631 ELSIF ( p_instance_query_rec.location_id  IS  NULL) THEN
3632      IF x_where_clause IS NULL THEN
3633         x_where_clause := ' a.location_id IS NULL ';
3634      ELSE
3635          x_where_clause := x_where_clause||' AND '||' a.location_id IS NULL ';
3636      END IF;
3637 END IF;
3638 
3639 IF (( p_instance_query_rec.inv_organization_id  IS NOT NULL)  AND
3640           ( p_instance_query_rec.inv_organization_id  <> FND_API.G_MISS_NUM)) THEN
3641    IF x_where_clause IS NULL THEN
3642         x_where_clause := ' a.inv_organization_id = :inv_organization_id ';
3643    ELSE
3644         x_where_clause := x_where_clause||' AND '||' a.inv_organization_id = :inv_organization_id ';
3645    END IF;
3646 ELSIF ( p_instance_query_rec.inv_organization_id  IS NULL) THEN
3647   IF x_where_clause IS NULL THEN
3648      x_where_clause := ' a.inv_organization_id IS NULL ';
3649   ELSE
3650      x_where_clause := x_where_clause||' AND '||' a.inv_organization_id IS NULL ';
3651   END IF;
3652 END IF;
3653 
3654 IF (( p_instance_query_rec.inv_subinventory_name  IS NOT NULL)  AND
3655                ( p_instance_query_rec.inv_subinventory_name  <> FND_API.G_MISS_CHAR)) THEN
3656    IF x_where_clause IS NULL THEN
3657      x_where_clause := ' a.inv_subinventory_name = :inv_subinventory_name ';
3658    ELSE
3659      x_where_clause := x_where_clause||' AND '||' a.inv_subinventory_name = :inv_subinventory_name ';
3660    END IF;
3661 ELSIF ( p_instance_query_rec.inv_subinventory_name  IS  NULL) THEN
3662    IF x_where_clause IS NULL THEN
3663      x_where_clause := ' a.inv_subinventory_name IS NULL ';
3664    ELSE
3665      x_where_clause := x_where_clause||' AND '||' a.inv_subinventory_name IS NULL ';
3666    END IF;
3667 END IF;
3668 
3669 IF (( p_instance_query_rec.inv_locator_id  IS NOT NULL)  AND
3670                 ( p_instance_query_rec.inv_locator_id  <> FND_API.G_MISS_NUM)) THEN
3671     IF x_where_clause IS NULL THEN
3672         x_where_clause := ' a.inv_locator_id = :inv_locator_id ';
3673     ELSE
3674         x_where_clause := x_where_clause||' AND '||' a.inv_locator_id = :inv_locator_id ';
3675     END IF;
3676 ELSIF ( p_instance_query_rec.inv_locator_id  IS NULL) THEN
3677    IF x_where_clause IS NULL THEN
3678      x_where_clause := ' a.inv_locator_id IS NULL ';
3679    ELSE
3680      x_where_clause := x_where_clause||' AND '||' a.inv_locator_id IS NULL ';
3681    END IF;
3682 END IF;
3683 
3684 IF (( p_instance_query_rec.pa_project_id  IS NOT NULL)  AND
3685            ( p_instance_query_rec.pa_project_id  <> FND_API.G_MISS_NUM)) THEN
3686     IF x_where_clause IS NULL THEN
3687       x_where_clause := ' a.pa_project_id = :pa_project_id ';
3688     ELSE
3689       x_where_clause := x_where_clause||' AND '||' a.pa_project_id = :pa_project_id ';
3690     END IF;
3691 ELSIF ( p_instance_query_rec.pa_project_id  IS  NULL) THEN
3692     IF x_where_clause IS NULL THEN
3693        x_where_clause := ' a.pa_project_id IS NULL ';
3694     ELSE
3695        x_where_clause := x_where_clause||' AND '||' a.pa_project_id IS NULL ';
3696     END IF;
3697 END IF;
3698 
3699 IF (( p_instance_query_rec.pa_project_task_id  IS NOT NULL)  AND
3700          ( p_instance_query_rec.pa_project_task_id  <> FND_API.G_MISS_NUM)) THEN
3701    IF x_where_clause IS NULL THEN
3702      x_where_clause := ' a.pa_project_task_id = :pa_project_task_id ';
3703    ELSE
3704       x_where_clause := x_where_clause||' AND '||' a.pa_project_task_id = :pa_project_task_id ';
3705    END IF;
3706 ELSIF ( p_instance_query_rec.pa_project_task_id  IS  NULL) THEN
3707   IF x_where_clause IS NULL THEN
3708     x_where_clause :=  ' a.pa_project_task_id IS NULL ';
3709   ELSE
3710      x_where_clause := x_where_clause||' AND '||' a.pa_project_task_id IS NULL ';
3711   END IF;
3712 END IF;
3713 
3714 IF (( p_instance_query_rec.in_transit_order_line_id  IS NOT NULL)  AND
3715           ( p_instance_query_rec.in_transit_order_line_id  <> FND_API.G_MISS_NUM)) THEN
3716    IF x_where_clause IS NULL THEN
3717      x_where_clause := ' a.in_transit_order_line_id = :in_transit_order_line_id ';
3718    ELSE
3719      x_where_clause := x_where_clause||' AND '||' a.in_transit_order_line_id = :in_transit_order_line_id ';
3720    END IF;
3721 ELSIF ( p_instance_query_rec.in_transit_order_line_id  IS NULL) THEN
3722    IF x_where_clause IS NULL THEN
3723       x_where_clause := ' a.in_transit_order_line_id IS NULL ';
3724    ELSE
3725       x_where_clause := x_where_clause||' AND '||' a.in_transit_order_line_id IS NULL ';
3726    END IF;
3727 END IF;
3728 
3729 IF (( p_instance_query_rec.wip_job_id  IS NOT NULL)  AND
3730            ( p_instance_query_rec.wip_job_id  <> FND_API.G_MISS_NUM)) THEN
3731    IF x_where_clause IS NULL THEN
3732       x_where_clause := ' a.wip_job_id = :wip_job_id ';
3733    ELSE
3734        x_where_clause := x_where_clause||' AND '||' a.wip_job_id = :wip_job_id ';
3735    END IF;
3736 ELSIF ( p_instance_query_rec.wip_job_id  IS  NULL) THEN
3737    IF x_where_clause IS NULL THEN
3738       x_where_clause := ' a.wip_job_id IS NULL ';
3739    ELSE
3740      x_where_clause := x_where_clause||' AND '||' a.wip_job_id IS NULL ';
3741    END IF;
3742 END IF;
3743 IF (( p_instance_query_rec.po_order_line_id  IS NOT NULL)  AND
3744            ( p_instance_query_rec.po_order_line_id  <> FND_API.G_MISS_NUM)) THEN
3745     IF x_where_clause IS NULL THEN
3746        x_where_clause := ' a.po_order_line_id = :po_order_line_id ';
3747     ELSE
3748         x_where_clause := x_where_clause||' AND '||' a.po_order_line_id = :po_order_line_id ';
3749     END IF;
3750 ELSIF ( p_instance_query_rec.po_order_line_id  IS NULL) THEN
3751     IF x_where_clause IS NULL THEN
3752       x_where_clause := ' a.po_order_line_id IS NULL ';
3753     ELSE
3754        x_where_clause := x_where_clause||' AND '||' a.po_order_line_id IS NULL ';
3755     END IF;
3756 END IF;
3757 
3758 IF (( p_instance_query_rec.last_oe_order_line_id  IS NOT NULL)  AND
3759            ( p_instance_query_rec.last_oe_order_line_id  <> FND_API.G_MISS_NUM)) THEN
3760     IF x_where_clause IS NULL THEN
3761       x_where_clause := ' a.last_oe_order_line_id = :last_oe_order_line_id ';
3762     ELSE
3763       x_where_clause := x_where_clause||' AND '||' a.last_oe_order_line_id = :last_oe_order_line_id ';
3764     END IF;
3765 ELSIF ( p_instance_query_rec.last_oe_order_line_id  IS  NULL) THEN
3766    IF x_where_clause IS NULL THEN
3767      x_where_clause := ' a.last_oe_order_line_id IS NULL ';
3768    ELSE
3769       x_where_clause := x_where_clause||' AND '||' a.last_oe_order_line_id IS NULL ';
3770    END IF;
3771 END IF;
3772 
3773 IF (( p_instance_query_rec.last_oe_rma_line_id  IS NOT NULL)  AND
3774             ( p_instance_query_rec.last_oe_rma_line_id  <> FND_API.G_MISS_NUM)) THEN
3775    IF x_where_clause IS NULL THEN
3776      x_where_clause := ' a.last_oe_rma_line_id = :last_oe_rma_line_id ';
3777    ELSE
3778       x_where_clause := x_where_clause||' AND '||' a.last_oe_rma_line_id = :last_oe_rma_line_id ';
3779    END IF;
3780 ELSIF ( p_instance_query_rec.last_oe_rma_line_id  IS NULL) THEN
3781    IF x_where_clause IS NULL THEN
3782      x_where_clause := ' a.last_oe_rma_line_id  IS NULL ';
3783    ELSE
3784      x_where_clause := x_where_clause||' AND '||' a.last_oe_rma_line_id  IS NULL ';
3785    END IF;
3786 END IF;
3787 
3788 IF (( p_instance_query_rec.last_po_po_line_id  IS NOT NULL)  AND
3789           ( p_instance_query_rec.last_po_po_line_id  <> FND_API.G_MISS_NUM)) THEN
3790     IF x_where_clause IS NULL THEN
3791       x_where_clause := ' a.last_po_po_line_id = :last_po_po_line_id ';
3792     ELSE
3793       x_where_clause := x_where_clause||' AND '||' a.last_po_po_line_id = :last_po_po_line_id ';
3794     END IF;
3795 ELSIF ( p_instance_query_rec.last_po_po_line_id  IS NULL) THEN
3796   IF x_where_clause IS NULL THEN
3797      x_where_clause := ' a.last_po_po_line_id IS NULL  ';
3798   ELSE
3799      x_where_clause := x_where_clause||' AND '||' a.last_po_po_line_id IS NULL  ';
3800   END IF;
3801 END IF;
3802 
3803 IF (( p_instance_query_rec.last_oe_po_number  IS NOT NULL)  AND
3804           ( p_instance_query_rec.last_oe_po_number  <> FND_API.G_MISS_CHAR)) THEN
3805    IF x_where_clause IS NULL THEN
3806      x_where_clause := ' a.last_oe_po_number = :last_oe_po_number ';
3807    ELSE
3808      x_where_clause := x_where_clause||' AND '||' a.last_oe_po_number = :last_oe_po_number ';
3809    END IF;
3810 ELSIF ( p_instance_query_rec.last_oe_po_number  IS NULL) THEN
3811   IF x_where_clause IS NULL THEN
3812     x_where_clause :=  ' a.last_oe_po_number IS NULL ';
3813   ELSE
3814     x_where_clause := x_where_clause||' AND '||' a.last_oe_po_number IS NULL ';
3815   END IF;
3816 END IF;
3817 
3818 IF (( p_instance_query_rec.last_wip_job_id  IS NOT NULL)  AND
3819           ( p_instance_query_rec.last_wip_job_id  <> FND_API.G_MISS_NUM)) THEN
3820      IF x_where_clause IS NULL THEN
3821         x_where_clause := ' a.last_wip_job_id = :last_wip_job_id ';
3822      ELSE
3823         x_where_clause := x_where_clause||' AND '||' a.last_wip_job_id = :last_wip_job_id ';
3824      END IF;
3825 ELSIF ( p_instance_query_rec.last_wip_job_id  IS  NULL) THEN
3826     IF x_where_clause IS NULL THEN
3827       x_where_clause := ' a.last_wip_job_id IS NULL ';
3828     ELSE
3829       x_where_clause := x_where_clause||' AND '||' a.last_wip_job_id IS NULL ';
3830     END IF;
3831 END IF;
3832 
3833 IF (( p_instance_query_rec.last_pa_project_id  IS NOT NULL)  AND
3834                ( p_instance_query_rec.last_pa_project_id  <> FND_API.G_MISS_NUM)) THEN
3835      IF x_where_clause IS NULL THEN
3836         x_where_clause :=  ' a.last_pa_project_id = :last_pa_project_id ';
3837      ELSE
3838         x_where_clause := x_where_clause||' AND '||' a.last_pa_project_id = :last_pa_project_id ';
3839      END IF;
3840 ELSIF ( p_instance_query_rec.last_pa_project_id  IS  NULL) THEN
3841   IF x_where_clause IS NULL THEN
3842     x_where_clause := ' a.last_pa_project_id IS NULL ';
3843   ELSE
3844     x_where_clause := x_where_clause||' AND '||' a.last_pa_project_id IS NULL ';
3845   END IF;
3846 END IF;
3847 
3848 IF (( p_instance_query_rec.last_pa_task_id  IS NOT NULL)  AND
3849            ( p_instance_query_rec.last_pa_task_id  <> FND_API.G_MISS_NUM)) THEN
3850   IF x_where_clause IS NULL THEN
3851      x_where_clause := ' a.last_pa_task_id = :last_pa_task_id ';
3852   ELSE
3853      x_where_clause := x_where_clause||' AND '||' a.last_pa_task_id = :last_pa_task_id ';
3854   END IF;
3855 ELSIF ( p_instance_query_rec.last_pa_task_id  IS  NULL) THEN
3856   IF x_where_clause IS NULL THEN
3857     x_where_clause := ' a.last_pa_task_id IS NULL ';
3858   ELSE
3859     x_where_clause := x_where_clause||' AND '||' a.last_pa_task_id IS NULL ';
3860   END IF;
3861 END IF;
3862 
3863 IF (( p_instance_query_rec.last_oe_agreement_id  IS NOT NULL)  AND
3864            ( p_instance_query_rec.last_oe_agreement_id  <> FND_API.G_MISS_NUM)) THEN
3865   IF x_where_clause IS NULL THEN
3866     x_where_clause := ' a.last_oe_agreement_id = :last_oe_agreement_id ';
3867   ELSE
3868     x_where_clause := x_where_clause||' AND '||' a.last_oe_agreement_id = :last_oe_agreement_id ';
3869   END IF;
3870 ELSIF ( p_instance_query_rec.last_oe_agreement_id  IS NULL) THEN
3871   IF x_where_clause IS NULL THEN
3872     x_where_clause := ' a.last_oe_agreement_id IS NULL ';
3873   ELSE
3874     x_where_clause := x_where_clause||' AND '||' a.last_oe_agreement_id IS NULL ';
3875   END IF;
3876 END IF;
3877 
3878 IF (( p_instance_query_rec.install_date  IS NOT NULL)  AND
3879            ( p_instance_query_rec.install_date  <> FND_API.G_MISS_DATE)) THEN
3880    IF x_where_clause IS NULL THEN
3881      x_where_clause := ' a.install_date = :install_date ';
3882    ELSE
3883      x_where_clause := x_where_clause||' AND '||' a.install_date = :install_date ';
3884    END IF;
3885 ELSIF ( p_instance_query_rec.install_date  IS  NULL) THEN
3886  IF x_where_clause IS NULL THEN
3887    x_where_clause := ' a.install_date IS NULL ';
3888  ELSE
3889    x_where_clause := x_where_clause||' AND '||' a.install_date IS NULL ';
3890  END IF;
3891 END IF;
3892 
3893 IF (( p_instance_query_rec.manually_created_flag  IS NOT NULL)  AND
3894           ( p_instance_query_rec.manually_created_flag  <> FND_API.G_MISS_CHAR)) THEN
3895   IF x_where_clause IS NULL THEN
3896      x_where_clause := ' a.manually_created_flag = :manually_created_flag ';
3897   ELSE
3898     x_where_clause := x_where_clause||' AND '||' a.manually_created_flag = :manually_created_flag ';
3899   END IF;
3900 ELSIF ( p_instance_query_rec.manually_created_flag  IS  NULL) THEN
3901  IF x_where_clause IS NULL THEN
3902    x_where_clause := ' a.manually_created_flag IS NULL ';
3903  ELSE
3904    x_where_clause := x_where_clause||' AND '||' a.manually_created_flag IS NULL ';
3905  END IF;
3906 END IF;
3907 
3908 IF (( p_instance_query_rec.return_by_date  IS NOT NULL)  AND
3909              ( p_instance_query_rec.return_by_date  <> FND_API.G_MISS_DATE)) THEN
3910  IF x_where_clause IS NULL THEN
3911     x_where_clause := ' a.return_by_date = :return_by_date ';
3912  ELSE
3913    x_where_clause := x_where_clause||' AND '||' a.return_by_date = :return_by_date ';
3914  END IF;
3915 ELSIF ( p_instance_query_rec.return_by_date  IS  NULL) THEN
3916  IF x_where_clause IS NULL THEN
3917    x_where_clause := ' a.return_by_date IS NULL ';
3918  ELSE
3919    x_where_clause := x_where_clause||' AND '||' a.return_by_date IS NULL ';
3920  END IF;
3921 END IF;
3922 
3923 IF (( p_instance_query_rec.instance_usage_code  IS NOT NULL)  AND
3924              ( p_instance_query_rec.instance_usage_code  <> FND_API.G_MISS_CHAR)) THEN
3925  IF x_where_clause IS NULL THEN
3926     x_where_clause := ' a.instance_usage_code = :instance_usage_code ';
3927  ELSE
3928    x_where_clause := x_where_clause||' AND '||' a.instance_usage_code = :instance_usage_code ';
3929  END IF;
3930 ELSIF ( p_instance_query_rec.instance_usage_code  IS  NULL) THEN
3931  IF x_where_clause IS NULL THEN
3932    x_where_clause := ' a.instance_usage_code IS NULL ';
3933  ELSE
3934    x_where_clause := x_where_clause||' AND '||' a.instance_usage_code IS NULL ';
3935  END IF;
3936 END IF;
3937 
3938 -- Following code has been added by sguthiva for att enhancements
3939 
3940 IF (( p_instance_query_rec.config_inst_hdr_id  IS NOT NULL)  AND
3941            ( p_instance_query_rec.config_inst_hdr_id  <> FND_API.G_MISS_NUM)) THEN
3942     IF x_where_clause IS NULL THEN
3943       x_where_clause := ' a.config_inst_hdr_id = :config_inst_hdr_id ';
3944     ELSE
3945       x_where_clause := x_where_clause||' AND '||' a.config_inst_hdr_id = :config_inst_hdr_id ';
3946     END IF;
3947 ELSIF ( p_instance_query_rec.config_inst_hdr_id  IS  NULL) THEN
3948    IF x_where_clause IS NULL THEN
3949      x_where_clause := ' a.config_inst_hdr_id IS NULL ';
3950    ELSE
3951       x_where_clause := x_where_clause||' AND '||' a.config_inst_hdr_id IS NULL ';
3952    END IF;
3953 END IF;
3954 
3955 IF (( p_instance_query_rec.config_inst_rev_num  IS NOT NULL)  AND
3956             ( p_instance_query_rec.config_inst_rev_num  <> FND_API.G_MISS_NUM)) THEN
3957    IF x_where_clause IS NULL THEN
3958      x_where_clause := ' a.config_inst_rev_num = :config_inst_rev_num ';
3959    ELSE
3960       x_where_clause := x_where_clause||' AND '||' a.config_inst_rev_num = :config_inst_rev_num ';
3961    END IF;
3962 ELSIF ( p_instance_query_rec.config_inst_rev_num  IS NULL) THEN
3963    IF x_where_clause IS NULL THEN
3964      x_where_clause := ' a.config_inst_rev_num  IS NULL ';
3965    ELSE
3966      x_where_clause := x_where_clause||' AND '||' a.config_inst_rev_num  IS NULL ';
3967    END IF;
3968 END IF;
3969 
3970 IF (( p_instance_query_rec.config_inst_item_id  IS NOT NULL)  AND
3971           ( p_instance_query_rec.config_inst_item_id  <> FND_API.G_MISS_NUM)) THEN
3972     IF x_where_clause IS NULL THEN
3973       x_where_clause := ' a.config_inst_item_id = :config_inst_item_id ';
3974     ELSE
3975       x_where_clause := x_where_clause||' AND '||' a.config_inst_item_id = :config_inst_item_id ';
3976     END IF;
3977 ELSIF ( p_instance_query_rec.config_inst_item_id  IS NULL) THEN
3978   IF x_where_clause IS NULL THEN
3979      x_where_clause := ' a.config_inst_item_id IS NULL  ';
3980   ELSE
3981      x_where_clause := x_where_clause||' AND '||' a.config_inst_item_id IS NULL  ';
3982   END IF;
3983 END IF;
3984 
3985 IF (( p_instance_query_rec.instance_description  IS NOT NULL)  AND
3986           ( p_instance_query_rec.instance_description  <> FND_API.G_MISS_CHAR)) THEN
3987    IF x_where_clause IS NULL THEN
3988      x_where_clause := ' a.instance_description = :instance_description ';
3989    ELSE
3990      x_where_clause := x_where_clause||' AND '||' a.instance_description = :instance_description ';
3991    END IF;
3992 ELSIF ( p_instance_query_rec.instance_description  IS NULL) THEN
3993   IF x_where_clause IS NULL THEN
3994     x_where_clause :=  ' a.instance_description IS NULL ';
3995   ELSE
3996     x_where_clause := x_where_clause||' AND '||' a.instance_description IS NULL ';
3997   END IF;
3998 END IF;
3999 
4000 -- End of addition for att
4001 -- Addition of columns for FA Integration
4002 IF (( p_instance_query_rec.operational_status_code  IS NOT NULL)  AND
4003           ( p_instance_query_rec.operational_status_code  <> FND_API.G_MISS_CHAR)) THEN
4004    IF x_where_clause IS NULL THEN
4005      x_where_clause := ' a.operational_status_code = :operational_status_code ';
4006    ELSE
4007      x_where_clause := x_where_clause||' AND '||' a.operational_status_code = :operational_status_code ';
4008    END IF;
4009 ELSIF ( p_instance_query_rec.operational_status_code  IS NULL) THEN
4010   IF x_where_clause IS NULL THEN
4011     x_where_clause :=  ' a.operational_status_code IS NULL ';
4012   ELSE
4013     x_where_clause := x_where_clause||' AND '||' a.operational_status_code IS NULL ';
4014   END IF;
4015 END IF;
4016 -- End addition of columns for FA Integration
4017 
4018 IF (( p_instance_query_rec.actual_return_date  IS NOT NULL)  AND
4019              ( p_instance_query_rec.actual_return_date  <> FND_API.G_MISS_DATE)) THEN
4020     IF x_where_clause IS NULL THEN
4021       x_where_clause := ' a.actual_return_date = :actual_return_date ';
4022     ELSE
4023       x_where_clause := x_where_clause||' AND '||' a.actual_return_date = :actual_return_date ';
4024     END IF;
4025 ELSIF ( p_instance_query_rec.actual_return_date  IS  NULL) THEN
4026  IF x_where_clause IS NULL THEN
4027    x_where_clause :=  ' a.actual_return_date IS NULL ';
4028  ELSE
4029    x_where_clause := x_where_clause||' AND '||' a.actual_return_date IS NULL ';
4030  END IF;
4031 END IF;
4032 
4033 --sk added
4034 IF (( p_instance_query_rec.contract_number  IS NOT NULL)  AND
4035     ( p_instance_query_rec.contract_number  <> FND_API.G_MISS_CHAR)) THEN
4036 BEGIN
4037             l_flag := nvl(FND_PROFILE.VALUE('CSI_CONTRACTS_ENABLED'), 'N');
4038         l_inp_rec.contract_number := p_instance_query_rec.contract_number;
4039         l_inp_rec.party_id        := NULL;
4040         l_inp_rec.site_id         := NULL;
4041         l_inp_rec.cust_acct_id    := NULL;
4042         l_inp_rec.system_id       := NULL;
4043         l_inp_rec.item_id         := NULL;
4044         l_inp_rec.product_id      := NULL;
4045         l_inp_rec.request_date    := sysdate;
4046         l_inp_rec.validate_flag   := l_flag;
4047       OKS_ENTITLEMENTS_PUB.GET_CONTRACTS( p_api_version   => 1.0,
4048                                           p_init_msg_list => 'T',
4049                                           p_inp_rec       => l_inp_rec,
4050                                           x_return_status => x_return_status,
4051                                           x_msg_count     => x_msg_count,
4052                                           x_msg_data      => x_msg_data,
4053                                           x_ent_contracts => l_ent_contracts);
4054 
4055        IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4056                   l_msg_index := 1;
4057           l_msg_count := x_msg_count;
4058          WHILE l_msg_count > 0 LOOP
4059                   x_msg_data := FND_MSG_PUB.GET
4060                           (  l_msg_index,
4061                                      FND_API.G_FALSE    );
4062           csi_gen_utility_pvt.put_line( ' Error from OKS_ENTITLEMENTS_PUB.GET_CONTRACTS.. ');
4063           csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
4064               l_msg_index := l_msg_index + 1;
4065               l_msg_count := l_msg_count - 1;
4066              END LOOP;
4067          RAISE FND_API.G_EXC_ERROR;
4068        END IF;
4069       l_row_count := 1;
4070       l_rec_count := l_ent_contracts.FIRST;
4071       WHILE l_rec_count IS NOT NULL
4072       LOOP
4073       BEGIN
4074        l_covered_level_code := l_ent_contracts(l_rec_count).coverage_level_code ;
4075        l_coverage_level_id  := l_ent_contracts(l_rec_count).coverage_level_id ;
4076             IF (l_covered_level_code = 'COVER_PROD') THEN
4077                 IF  l_covered_cp_id IS NULL THEN
4078 
4079                    l_covered_cp_id := to_char(l_coverage_level_id) ;
4080                 ELSE
4081 
4082                    l_covered_cp_id := l_covered_cp_id ||','||to_char(l_coverage_level_id) ;
4083                 END IF;
4084             END IF;
4085            l_rec_count := l_ent_contracts.NEXT(l_rec_count);
4086        EXCEPTION
4087           WHEN OTHERS THEN
4088              NULL;
4089        END;
4090        END LOOP;
4091     IF (l_covered_cp_id IS NOT NULL) THEN
4092        IF x_where_clause IS NULL THEN
4093         x_where_clause := ' a.instance_id IN ( ' ||l_covered_cp_id ||' )' ;
4094        ELSE
4095         x_where_clause := x_where_clause||' AND '||' a.instance_id IN ( ' ||l_covered_cp_id ||' )' ;
4096        END IF;
4097     ELSE
4098 
4099        IF x_where_clause IS NULL THEN
4100         x_where_clause := ' a.instance_id IS NULL' ;
4101        ELSE
4102         x_where_clause := x_where_clause||' AND '||' a.instance_id IS NULL' ;
4103        END IF;
4104     END IF;
4105 
4106 EXCEPTION
4107    WHEN OTHERS THEN
4108       NULL;
4109 END;
4110 END IF;
4111 --end sk addition
4112 
4113 IF (( p_party_query_rec.instance_party_id  IS NOT NULL)  AND
4114                          ( p_party_query_rec.instance_party_id  <> FND_API.G_MISS_NUM)) THEN
4115        IF x_where_clause IS NULL THEN
4116           x_where_clause := ' b.instance_party_id = :instance_party_id ';
4117        ELSE
4118           x_where_clause := x_where_clause||' AND '||' b.instance_party_id = :instance_party_id ';
4119        END IF;
4120 
4121 ELSIF ( p_party_query_rec.instance_party_id  IS  NULL) THEN
4122     IF x_where_clause IS NULL THEN
4123      x_where_clause := ' b.instance_party_id IS NULL ';
4124     ELSE
4125      x_where_clause := x_where_clause||' AND '||' b.instance_party_id IS NULL ';
4126     END IF;
4127 END IF;
4128 
4129 IF ((p_party_query_rec.instance_id IS NOT NULL)       AND
4130                          (p_party_query_rec.instance_id <> FND_API.G_MISS_NUM))   THEN
4131     IF x_where_clause IS NULL THEN
4132         x_where_clause := ' b.instance_id = :instance_id ';
4133     ELSE
4134         x_where_clause := x_where_clause||' AND '||' b.instance_id = :instance_id ';
4135     END IF;
4136 ELSIF (p_party_query_rec.instance_id IS  NULL) THEN
4137     IF x_where_clause IS NULL THEN
4138       x_where_clause :=  ' b.instance_id IS NULL ';
4139     ELSE
4140       x_where_clause := x_where_clause||' AND '||' b.instance_id IS NULL ';
4141     END IF;
4142 END IF;
4143 
4144 IF ((p_party_query_rec.party_id  IS NOT NULL)         AND
4145                          (p_party_query_rec.party_id  <> FND_API.G_MISS_NUM)) THEN
4146      IF x_where_clause IS NULL THEN
4147         x_where_clause := ' b.party_id = :party_id ';
4148      ELSE
4149         x_where_clause := x_where_clause||' AND '||' b.party_id = :party_id ';
4150      END IF;
4151 
4152 ELSIF (p_party_query_rec.party_id  IS  NULL) THEN
4153      IF x_where_clause IS NULL THEN
4154          x_where_clause := ' b.party_id IS NULL ';
4155      ELSE
4156          x_where_clause := x_where_clause||' AND '||' b.party_id IS NULL ';
4157      END IF;
4158 END IF ;
4159 
4160 IF  ((p_party_query_rec.relationship_type_code IS NOT NULL) AND
4161                    (p_party_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR)) THEN
4162    IF x_where_clause IS NULL THEN
4163      x_where_clause := '  b.relationship_type_code = :relationship_type_code ';
4164    ELSE
4165      x_where_clause := x_where_clause||' AND '||'  b.relationship_type_code = :relationship_type_code ';
4166    END IF;
4167 ELSIF (p_party_query_rec.relationship_type_code IS  NULL) THEN
4168    IF x_where_clause IS NULL THEN
4169     x_where_clause := '  b.relationship_type_code IS NULL ';
4170    ELSE
4171     x_where_clause := x_where_clause||' AND '||'  b.relationship_type_code IS NULL ';
4172    END IF;
4173 END IF;
4174 -----
4175 
4176 IF (( p_pty_acct_query_rec.ip_account_id  IS NOT NULL)  AND
4177                          ( p_pty_acct_query_rec.ip_account_id  <> FND_API.G_MISS_NUM)) THEN
4178   IF x_where_clause IS NULL THEN
4179     x_where_clause := x_where_clause||' c.ip_account_id = :ip_account_id ';
4180   ELSE
4181     x_where_clause := x_where_clause||' AND '||' c.ip_account_id = :ip_account_id ';
4182   END IF;
4183 ELSIF ( p_pty_acct_query_rec.ip_account_id  IS  NULL) THEN
4184   IF x_where_clause IS NULL THEN
4185    x_where_clause := x_where_clause||' c.ip_account_id IS NULL ';
4186   ELSE
4187    x_where_clause := x_where_clause||' AND '||' c.ip_account_id IS NULL ';
4188   END IF;
4189 END IF;
4190 
4191 IF ((p_pty_acct_query_rec.instance_party_id IS NOT NULL)       AND
4192                          (p_pty_acct_query_rec.instance_party_id <> FND_API.G_MISS_NUM))   THEN
4193   IF x_where_clause IS NULL THEN
4194    x_where_clause := x_where_clause||' c.instance_party_id = :instance_party_id ';
4195   ELSE
4196    x_where_clause := x_where_clause||' AND '||' c.instance_party_id = :instance_party_id ';
4197   END IF;
4198 ELSIF (p_pty_acct_query_rec.instance_party_id IS  NULL) THEN
4199   IF x_where_clause IS NULL THEN
4200    x_where_clause := x_where_clause||' c.instance_party_id IS NULL ';
4201   ELSE
4202    x_where_clause := x_where_clause||' AND '||' c.instance_party_id IS NULL ';
4203   END IF;
4204 END IF;
4205 
4206 IF ((p_pty_acct_query_rec.party_account_id  IS NOT NULL)         AND
4207                          (p_pty_acct_query_rec.party_account_id  <> FND_API.G_MISS_NUM)) THEN
4208   IF x_where_clause IS NULL THEN
4209     x_where_clause := x_where_clause||' c.party_account_id = :party_account_id ';
4210   ELSE
4211     x_where_clause := x_where_clause||' AND '||' c.party_account_id = :party_account_id ';
4212   END IF;
4213 ELSIF (p_pty_acct_query_rec.party_account_id  IS  NULL) THEN
4214   IF x_where_clause IS NULL THEN
4215     x_where_clause := x_where_clause||' c.party_account_id IS NULL ';
4216   ELSE
4217     x_where_clause := x_where_clause||' AND '||' c.party_account_id IS NULL ';
4218   END IF;
4219 END IF ;
4220 
4221 IF  ((p_pty_acct_query_rec.relationship_type_code IS NOT NULL) AND
4222                    (p_pty_acct_query_rec.relationship_type_code <> FND_API.G_MISS_CHAR)) THEN
4223     IF x_where_clause IS NULL THEN
4224       x_where_clause := x_where_clause||'  c.relationship_type_code = :relationship_type_code ';
4225     ELSE
4226       x_where_clause := x_where_clause||' AND '||'  c.relationship_type_code = :relationship_type_code ';
4227     END IF;
4228 ELSIF (p_pty_acct_query_rec.relationship_type_code IS  NULL) THEN
4229     IF x_where_clause IS NULL  THEN
4230      x_where_clause := x_where_clause||'  c.relationship_type_code IS NULL ';
4231     ELSE
4232      x_where_clause := x_where_clause||' AND '||'  c.relationship_type_code IS NULL ';
4233     END IF;
4234 END IF;
4235 
4236 IF  p_active_instance_only = 'T' THEN
4237      x_where_clause := x_where_clause||' AND '||'( a.active_end_date IS NULL '||' OR '||' a.active_end_date > SYSDATE)';
4238 END IF;
4239 
4240 IF l_join_condition IS null THEN
4241  x_select_stmt  := ' SELECT '||l_select_columns ||' from '||l_from_clause ||' where '||l_join_condition||x_where_clause;
4242 ELSE
4243  x_select_stmt  := ' SELECT '||l_select_columns ||' from '||l_from_clause ||' where '||l_join_condition||' AND '||x_where_clause;
4244 END IF;
4245 
4246 IF ((l_instance_rec_exists OR
4247      l_party_rec_exists OR
4248      l_party_acct_rec_exists) AND
4249     (p_transaction_id is not null)) then
4250     x_select_stmt := x_select_stmt || ' INTERSECT '||l_union_stmt;
4251 
4252 ELSIF   NOT(l_instance_rec_exists) AND
4253         NOT(l_party_rec_exists)    AND
4254         NOT(l_party_acct_rec_exists) AND
4255        (p_transaction_id is not null)  then
4256     x_select_stmt := l_union_stmt;
4257 END IF;
4258 END Gen_Inst_Where_Clause;
4259 
4260 /*----------------------------------------------------------*/
4261 /* Procedure name:  Get_Inst_Column_Values                  */
4262 /* Description   :  This procedure gets the column values   */
4263 /*                  for the Dynamic SQL                     */
4264 /*----------------------------------------------------------*/
4265 
4266 PROCEDURE Get_Instance_Col_Values
4267 (
4268     p_get_instance_cur_id      IN       NUMBER,
4269     x_instance_rec             IN OUT   NOCOPY csi_datastructures_pub.instance_header_rec
4270 ) IS
4271 
4272 BEGIN
4273  dbms_sql.column_value(p_get_instance_cur_id, 1, x_instance_rec.instance_id);
4274  dbms_sql.column_value(p_get_instance_cur_id, 2, x_instance_rec.instance_number);
4275  dbms_sql.column_value(p_get_instance_cur_id, 3, x_instance_rec.external_reference);
4276  dbms_sql.column_value(p_get_instance_cur_id, 4, x_instance_rec.inventory_item_id);
4277  dbms_sql.column_value(p_get_instance_cur_id, 5, x_instance_rec.inventory_revision);
4278  dbms_sql.column_value(p_get_instance_cur_id, 6, x_instance_rec.inv_master_organization_id);
4279  dbms_sql.column_value(p_get_instance_cur_id, 7, x_instance_rec.serial_number);
4280  dbms_sql.column_value(p_get_instance_cur_id, 8, x_instance_rec.mfg_serial_number_flag);
4281  dbms_sql.column_value(p_get_instance_cur_id, 9, x_instance_rec.lot_number);
4282  dbms_sql.column_value(p_get_instance_cur_id, 10, x_instance_rec.quantity);
4283  dbms_sql.column_value(p_get_instance_cur_id, 11, x_instance_rec.unit_of_measure);
4284  dbms_sql.column_value(p_get_instance_cur_id, 12, x_instance_rec.accounting_class_code);
4285  dbms_sql.column_value(p_get_instance_cur_id, 13, x_instance_rec.instance_condition_id);
4286  dbms_sql.column_value(p_get_instance_cur_id, 14, x_instance_rec.instance_status_id);
4287  dbms_sql.column_value(p_get_instance_cur_id, 15, x_instance_rec.customer_view_flag);
4288  dbms_sql.column_value(p_get_instance_cur_id, 16, x_instance_rec.merchant_view_flag);
4289  dbms_sql.column_value(p_get_instance_cur_id, 17, x_instance_rec.sellable_flag);
4290  dbms_sql.column_value(p_get_instance_cur_id, 18, x_instance_rec.system_id);
4291  dbms_sql.column_value(p_get_instance_cur_id, 19, x_instance_rec.instance_type_code);
4292  dbms_sql.column_value(p_get_instance_cur_id, 20, x_instance_rec.active_start_date);
4293  dbms_sql.column_value(p_get_instance_cur_id, 21, x_instance_rec.active_end_date);
4294  dbms_sql.column_value(p_get_instance_cur_id, 22, x_instance_rec.location_type_code);
4295  dbms_sql.column_value(p_get_instance_cur_id, 23, x_instance_rec.location_id);
4296  dbms_sql.column_value(p_get_instance_cur_id, 24, x_instance_rec.inv_organization_id);
4297  dbms_sql.column_value(p_get_instance_cur_id, 25, x_instance_rec.inv_subinventory_name);
4298  dbms_sql.column_value(p_get_instance_cur_id, 26, x_instance_rec.inv_locator_id);
4299  dbms_sql.column_value(p_get_instance_cur_id, 27, x_instance_rec.pa_project_id);
4300  dbms_sql.column_value(p_get_instance_cur_id, 28, x_instance_rec.pa_project_task_id);
4301  dbms_sql.column_value(p_get_instance_cur_id, 29, x_instance_rec.in_transit_order_line_id);
4302  dbms_sql.column_value(p_get_instance_cur_id, 30, x_instance_rec.wip_job_id);
4303  dbms_sql.column_value(p_get_instance_cur_id, 31, x_instance_rec.po_order_line_id);
4304  dbms_sql.column_value(p_get_instance_cur_id, 32, x_instance_rec.last_oe_order_line_id);
4305  dbms_sql.column_value(p_get_instance_cur_id, 33, x_instance_rec.last_oe_rma_line_id);
4306  dbms_sql.column_value(p_get_instance_cur_id, 34, x_instance_rec.last_po_po_line_id);
4307  dbms_sql.column_value(p_get_instance_cur_id, 35, x_instance_rec.last_oe_po_number);
4308  dbms_sql.column_value(p_get_instance_cur_id, 36, x_instance_rec.last_wip_job_id);
4309  dbms_sql.column_value(p_get_instance_cur_id, 37, x_instance_rec.last_pa_project_id);
4310  dbms_sql.column_value(p_get_instance_cur_id, 38, x_instance_rec.last_pa_task_id);
4311  dbms_sql.column_value(p_get_instance_cur_id, 39, x_instance_rec.last_oe_agreement_id);
4312  dbms_sql.column_value(p_get_instance_cur_id, 40, x_instance_rec.install_date);
4313  dbms_sql.column_value(p_get_instance_cur_id, 41, x_instance_rec.manually_created_flag);
4314  dbms_sql.column_value(p_get_instance_cur_id, 42, x_instance_rec.return_by_date);
4315  dbms_sql.column_value(p_get_instance_cur_id, 43, x_instance_rec.actual_return_date);
4316  dbms_sql.column_value(p_get_instance_cur_id, 44, x_instance_rec.creation_complete_flag);
4317  dbms_sql.column_value(p_get_instance_cur_id, 45, x_instance_rec.completeness_flag);
4318  dbms_sql.column_value(p_get_instance_cur_id, 46, x_instance_rec.context);
4319  dbms_sql.column_value(p_get_instance_cur_id, 47, x_instance_rec.attribute1);
4320  dbms_sql.column_value(p_get_instance_cur_id, 48, x_instance_rec.attribute2);
4321  dbms_sql.column_value(p_get_instance_cur_id, 49, x_instance_rec.attribute3);
4322  dbms_sql.column_value(p_get_instance_cur_id, 50, x_instance_rec.attribute4);
4323  dbms_sql.column_value(p_get_instance_cur_id, 51, x_instance_rec.attribute5);
4324  dbms_sql.column_value(p_get_instance_cur_id, 52, x_instance_rec.attribute6);
4325  dbms_sql.column_value(p_get_instance_cur_id, 53, x_instance_rec.attribute7);
4326  dbms_sql.column_value(p_get_instance_cur_id, 54, x_instance_rec.attribute8);
4327  dbms_sql.column_value(p_get_instance_cur_id, 55, x_instance_rec.attribute9);
4328  dbms_sql.column_value(p_get_instance_cur_id, 56, x_instance_rec.attribute10);
4329  dbms_sql.column_value(p_get_instance_cur_id, 57, x_instance_rec.attribute11);
4330  dbms_sql.column_value(p_get_instance_cur_id, 58, x_instance_rec.attribute12);
4331  dbms_sql.column_value(p_get_instance_cur_id, 59, x_instance_rec.attribute13);
4332  dbms_sql.column_value(p_get_instance_cur_id, 60, x_instance_rec.attribute14);
4333  dbms_sql.column_value(p_get_instance_cur_id, 61, x_instance_rec.attribute15);
4334  dbms_sql.column_value(p_get_instance_cur_id, 62, x_instance_rec.object_version_number);
4335  dbms_sql.column_value(p_get_instance_cur_id, 63, x_instance_rec.last_txn_line_detail_id);
4336  dbms_sql.column_value(p_get_instance_cur_id, 64, x_instance_rec.install_location_type_code);
4337  dbms_sql.column_value(p_get_instance_cur_id, 65, x_instance_rec.install_location_id);
4338  dbms_sql.column_value(p_get_instance_cur_id, 66, x_instance_rec.instance_usage_code);
4339  dbms_sql.column_value(p_get_instance_cur_id, 67, x_instance_rec.vld_organization_id);
4340  dbms_sql.column_value(p_get_instance_cur_id, 68, x_instance_rec.config_inst_hdr_id);
4341  dbms_sql.column_value(p_get_instance_cur_id, 69, x_instance_rec.config_inst_rev_num);
4342  dbms_sql.column_value(p_get_instance_cur_id, 70, x_instance_rec.config_inst_item_id);
4343  dbms_sql.column_value(p_get_instance_cur_id, 71, x_instance_rec.config_valid_status);
4344  dbms_sql.column_value(p_get_instance_cur_id, 72, x_instance_rec.instance_description);
4345  --start of code for eam integration columns--
4346  dbms_sql.column_value(p_get_instance_cur_id, 73, x_instance_rec.network_asset_flag);
4347  dbms_sql.column_value(p_get_instance_cur_id, 74, x_instance_rec.maintainable_flag);
4348  dbms_sql.column_value(p_get_instance_cur_id, 75, x_instance_rec.pn_location_id);
4349  dbms_sql.column_value(p_get_instance_cur_id, 76, x_instance_rec.asset_criticality_code);
4350  dbms_sql.column_value(p_get_instance_cur_id, 77, x_instance_rec.category_id);
4351  dbms_sql.column_value(p_get_instance_cur_id, 78, x_instance_rec.equipment_gen_object_id);
4352  dbms_sql.column_value(p_get_instance_cur_id, 79, x_instance_rec.instantiation_flag);
4353  dbms_sql.column_value(p_get_instance_cur_id, 80, x_instance_rec.linear_location_id);
4354  dbms_sql.column_value(p_get_instance_cur_id, 81, x_instance_rec.operational_log_flag);
4355  dbms_sql.column_value(p_get_instance_cur_id, 82, x_instance_rec.checkin_status);
4356  dbms_sql.column_value(p_get_instance_cur_id, 83, x_instance_rec.supplier_warranty_exp_date);
4357  dbms_sql.column_value(p_get_instance_cur_id, 84, x_instance_rec.attribute16);
4358  dbms_sql.column_value(p_get_instance_cur_id, 85, x_instance_rec.attribute17);
4359  dbms_sql.column_value(p_get_instance_cur_id, 86, x_instance_rec.attribute18);
4360  dbms_sql.column_value(p_get_instance_cur_id, 87, x_instance_rec.attribute19);
4361  dbms_sql.column_value(p_get_instance_cur_id, 88, x_instance_rec.attribute20);
4362  dbms_sql.column_value(p_get_instance_cur_id, 89, x_instance_rec.attribute21);
4363  dbms_sql.column_value(p_get_instance_cur_id, 90, x_instance_rec.attribute22);
4364  dbms_sql.column_value(p_get_instance_cur_id, 91, x_instance_rec.attribute23);
4365  dbms_sql.column_value(p_get_instance_cur_id, 92, x_instance_rec.attribute24);
4366  dbms_sql.column_value(p_get_instance_cur_id, 93, x_instance_rec.attribute25);
4367  dbms_sql.column_value(p_get_instance_cur_id, 94, x_instance_rec.attribute26);
4368  dbms_sql.column_value(p_get_instance_cur_id, 95, x_instance_rec.attribute27);
4369  dbms_sql.column_value(p_get_instance_cur_id, 96, x_instance_rec.attribute28);
4370  dbms_sql.column_value(p_get_instance_cur_id, 97, x_instance_rec.attribute29);
4371  dbms_sql.column_value(p_get_instance_cur_id, 98, x_instance_rec.attribute30);
4372  --end of code for eam integration columns--
4373 
4374 -- Addition of columns for FA Integration
4375  dbms_sql.column_value(p_get_instance_cur_id, 99, x_instance_rec.purchase_unit_price);
4376  dbms_sql.column_value(p_get_instance_cur_id, 100, x_instance_rec.purchase_currency_code);
4377  dbms_sql.column_value(p_get_instance_cur_id, 101, x_instance_rec.payables_unit_price);
4378  dbms_sql.column_value(p_get_instance_cur_id, 102, x_instance_rec.payables_currency_code);
4379  dbms_sql.column_value(p_get_instance_cur_id, 103, x_instance_rec.sales_unit_price);
4380  dbms_sql.column_value(p_get_instance_cur_id, 104, x_instance_rec.sales_currency_code);
4381  dbms_sql.column_value(p_get_instance_cur_id, 105, x_instance_rec.operational_status_code);
4382 -- End addition of columns for FA Integration
4383 
4384 END Get_Instance_Col_Values;
4385 
4386 
4387 /*-------------------------------------------------------*/
4388 /* Procedure name:  Define_Inst_Columns                  */
4389 /* Description   :  This procedure defines the columns   */
4390 /*                  for the Dynamic SQL                  */
4391 /*-------------------------------------------------------*/
4392 
4393 PROCEDURE Define_Instance_Columns
4394 (
4395   p_get_instance_cur_id      IN   NUMBER
4396   ) IS
4397 
4398   l_instance_rec         csi_datastructures_pub.instance_header_rec;
4399 
4400 BEGIN
4401  dbms_sql.define_column(p_get_instance_cur_id, 1, l_instance_rec.instance_id);
4402  dbms_sql.define_column(p_get_instance_cur_id, 2, l_instance_rec.instance_number,30);
4403  dbms_sql.define_column(p_get_instance_cur_id, 3, l_instance_rec.external_reference,30);
4404  dbms_sql.define_column(p_get_instance_cur_id, 4, l_instance_rec.inventory_item_id);
4405  dbms_sql.define_column(p_get_instance_cur_id, 5, l_instance_rec.inventory_revision,3);
4406  dbms_sql.define_column(p_get_instance_cur_id, 6, l_instance_rec.inv_master_organization_id);
4407  dbms_sql.define_column(p_get_instance_cur_id, 7, l_instance_rec.serial_number,30);
4408  dbms_sql.define_column(p_get_instance_cur_id, 8, l_instance_rec.mfg_serial_number_flag,1);
4409  dbms_sql.define_column(p_get_instance_cur_id, 9, l_instance_rec.lot_number,80);
4410  dbms_sql.define_column(p_get_instance_cur_id, 10, l_instance_rec.quantity);
4411  dbms_sql.define_column(p_get_instance_cur_id, 11, l_instance_rec.unit_of_measure,3);
4412  dbms_sql.define_column(p_get_instance_cur_id, 12, l_instance_rec.accounting_class_code,10);
4413  dbms_sql.define_column(p_get_instance_cur_id, 13, l_instance_rec.instance_condition_id);
4414  dbms_sql.define_column(p_get_instance_cur_id, 14, l_instance_rec.instance_status_id);
4415  dbms_sql.define_column(p_get_instance_cur_id, 15, l_instance_rec.customer_view_flag,1);
4416  dbms_sql.define_column(p_get_instance_cur_id, 16, l_instance_rec.merchant_view_flag,1);
4417  dbms_sql.define_column(p_get_instance_cur_id, 17, l_instance_rec.sellable_flag,1);
4418  dbms_sql.define_column(p_get_instance_cur_id, 18, l_instance_rec.system_id);
4419  dbms_sql.define_column(p_get_instance_cur_id, 19, l_instance_rec.instance_type_code,30);
4420  dbms_sql.define_column(p_get_instance_cur_id, 20, l_instance_rec.active_start_date);
4421  dbms_sql.define_column(p_get_instance_cur_id, 21, l_instance_rec.active_end_date);
4422  dbms_sql.define_column(p_get_instance_cur_id, 22, l_instance_rec.location_type_code,30);
4423  dbms_sql.define_column(p_get_instance_cur_id, 23, l_instance_rec.location_id);
4424  dbms_sql.define_column(p_get_instance_cur_id, 24, l_instance_rec.inv_organization_id);
4425  dbms_sql.define_column(p_get_instance_cur_id, 25, l_instance_rec.inv_subinventory_name,10);
4426  dbms_sql.define_column(p_get_instance_cur_id, 26, l_instance_rec.inv_locator_id);
4427  dbms_sql.define_column(p_get_instance_cur_id, 27, l_instance_rec.pa_project_id);
4428  dbms_sql.define_column(p_get_instance_cur_id, 28, l_instance_rec.pa_project_task_id);
4429  dbms_sql.define_column(p_get_instance_cur_id, 29, l_instance_rec.in_transit_order_line_id);
4430  dbms_sql.define_column(p_get_instance_cur_id, 30, l_instance_rec.wip_job_id);
4431  dbms_sql.define_column(p_get_instance_cur_id, 31, l_instance_rec.po_order_line_id);
4432  dbms_sql.define_column(p_get_instance_cur_id, 32, l_instance_rec.last_oe_order_line_id);
4433  dbms_sql.define_column(p_get_instance_cur_id, 33, l_instance_rec.last_oe_rma_line_id);
4434  dbms_sql.define_column(p_get_instance_cur_id, 34, l_instance_rec.last_po_po_line_id);
4435  dbms_sql.define_column(p_get_instance_cur_id, 35, l_instance_rec.last_oe_po_number,30);
4436  dbms_sql.define_column(p_get_instance_cur_id, 36, l_instance_rec.last_wip_job_id);
4437  dbms_sql.define_column(p_get_instance_cur_id, 37, l_instance_rec.last_pa_project_id);
4438  dbms_sql.define_column(p_get_instance_cur_id, 38, l_instance_rec.last_pa_task_id);
4439  dbms_sql.define_column(p_get_instance_cur_id, 39, l_instance_rec.last_oe_agreement_id);
4440  dbms_sql.define_column(p_get_instance_cur_id, 40, l_instance_rec.install_date);
4441  dbms_sql.define_column(p_get_instance_cur_id, 41, l_instance_rec.manually_created_flag,1);
4442  dbms_sql.define_column(p_get_instance_cur_id, 42, l_instance_rec.return_by_date);
4443  dbms_sql.define_column(p_get_instance_cur_id, 43, l_instance_rec.actual_return_date);
4444  dbms_sql.define_column(p_get_instance_cur_id, 44, l_instance_rec.creation_complete_flag,1);
4445  dbms_sql.define_column(p_get_instance_cur_id, 45, l_instance_rec.completeness_flag,1);
4446  dbms_sql.define_column(p_get_instance_cur_id, 46, l_instance_rec.context,30);
4447  dbms_sql.define_column(p_get_instance_cur_id, 47, l_instance_rec.attribute1,150);
4448  dbms_sql.define_column(p_get_instance_cur_id, 48, l_instance_rec.attribute2,150);
4449  dbms_sql.define_column(p_get_instance_cur_id, 49, l_instance_rec.attribute3,150);
4450  dbms_sql.define_column(p_get_instance_cur_id, 50, l_instance_rec.attribute4,150);
4451  dbms_sql.define_column(p_get_instance_cur_id, 51, l_instance_rec.attribute5,150);
4452  dbms_sql.define_column(p_get_instance_cur_id, 52, l_instance_rec.attribute6,150);
4453  dbms_sql.define_column(p_get_instance_cur_id, 53, l_instance_rec.attribute7,150);
4454  dbms_sql.define_column(p_get_instance_cur_id, 54, l_instance_rec.attribute8,150);
4455  dbms_sql.define_column(p_get_instance_cur_id, 55, l_instance_rec.attribute9,150);
4456  dbms_sql.define_column(p_get_instance_cur_id, 56, l_instance_rec.attribute10,150);
4457  dbms_sql.define_column(p_get_instance_cur_id, 57, l_instance_rec.attribute11,150);
4458  dbms_sql.define_column(p_get_instance_cur_id, 58, l_instance_rec.attribute12,150);
4459  dbms_sql.define_column(p_get_instance_cur_id, 59, l_instance_rec.attribute13,150);
4460  dbms_sql.define_column(p_get_instance_cur_id, 60, l_instance_rec.attribute14,150);
4461  dbms_sql.define_column(p_get_instance_cur_id, 61, l_instance_rec.attribute15,150);
4462  dbms_sql.define_column(p_get_instance_cur_id, 62, l_instance_rec.object_version_number);
4463  dbms_sql.define_column(p_get_instance_cur_id, 63, l_instance_rec.last_txn_line_detail_id);
4464  dbms_sql.define_column(p_get_instance_cur_id, 64, l_instance_rec.install_location_type_code,30);
4465  dbms_sql.define_column(p_get_instance_cur_id, 65, l_instance_rec.install_location_id);
4466  dbms_sql.define_column(p_get_instance_cur_id, 66, l_instance_rec.instance_usage_code,30);
4467  dbms_sql.define_column(p_get_instance_cur_id, 67, l_instance_rec.vld_organization_id);
4468  dbms_sql.define_column(p_get_instance_cur_id, 68, l_instance_rec.config_inst_hdr_id);
4469  dbms_sql.define_column(p_get_instance_cur_id, 69, l_instance_rec.config_inst_rev_num);
4470  dbms_sql.define_column(p_get_instance_cur_id, 70, l_instance_rec.config_inst_item_id);
4471  dbms_sql.define_column(p_get_instance_cur_id, 71, l_instance_rec.config_valid_status,30);
4472  dbms_sql.define_column(p_get_instance_cur_id, 72, l_instance_rec.instance_description,240);
4473  --start of code for eam integration columns--
4474  dbms_sql.define_column(p_get_instance_cur_id, 73, l_instance_rec.network_asset_flag,1);
4475  dbms_sql.define_column(p_get_instance_cur_id, 74, l_instance_rec.maintainable_flag,1);
4476  dbms_sql.define_column(p_get_instance_cur_id, 75, l_instance_rec.pn_location_id);
4477  dbms_sql.define_column(p_get_instance_cur_id, 76, l_instance_rec.asset_criticality_code,30);
4478  dbms_sql.define_column(p_get_instance_cur_id, 77, l_instance_rec.category_id);
4479  dbms_sql.define_column(p_get_instance_cur_id, 78, l_instance_rec.equipment_gen_object_id);
4480  dbms_sql.define_column(p_get_instance_cur_id, 79, l_instance_rec.instantiation_flag,1);
4481  dbms_sql.define_column(p_get_instance_cur_id, 80, l_instance_rec.linear_location_id);
4482  dbms_sql.define_column(p_get_instance_cur_id, 81, l_instance_rec.operational_log_flag,1);
4483  dbms_sql.define_column(p_get_instance_cur_id, 82, l_instance_rec.checkin_status);
4484  dbms_sql.define_column(p_get_instance_cur_id, 83, l_instance_rec.supplier_warranty_exp_date);
4485  dbms_sql.define_column(p_get_instance_cur_id, 84, l_instance_rec.attribute16,240);
4486  dbms_sql.define_column(p_get_instance_cur_id, 85, l_instance_rec.attribute17,240);
4487  dbms_sql.define_column(p_get_instance_cur_id, 86, l_instance_rec.attribute18,240);
4488  dbms_sql.define_column(p_get_instance_cur_id, 87, l_instance_rec.attribute19,240);
4489  dbms_sql.define_column(p_get_instance_cur_id, 88, l_instance_rec.attribute20,240);
4490  dbms_sql.define_column(p_get_instance_cur_id, 89, l_instance_rec.attribute21,240);
4491  dbms_sql.define_column(p_get_instance_cur_id, 90, l_instance_rec.attribute22,240);
4492  dbms_sql.define_column(p_get_instance_cur_id, 91, l_instance_rec.attribute23,240);
4493  dbms_sql.define_column(p_get_instance_cur_id, 92, l_instance_rec.attribute24,240);
4494  dbms_sql.define_column(p_get_instance_cur_id, 93, l_instance_rec.attribute25,240);
4495  dbms_sql.define_column(p_get_instance_cur_id, 94, l_instance_rec.attribute26,240);
4496  dbms_sql.define_column(p_get_instance_cur_id, 95, l_instance_rec.attribute27,240);
4497  dbms_sql.define_column(p_get_instance_cur_id, 96, l_instance_rec.attribute28,240);
4498  dbms_sql.define_column(p_get_instance_cur_id, 97, l_instance_rec.attribute29,240);
4499  dbms_sql.define_column(p_get_instance_cur_id, 98, l_instance_rec.attribute30,240);
4500  --end of code for eam integration columns--
4501 -- Addition of columns for FA Integration
4502 dbms_sql.define_column(p_get_instance_cur_id, 99, l_instance_rec.purchase_unit_price);
4503 dbms_sql.define_column(p_get_instance_cur_id, 100, l_instance_rec.purchase_currency_code,15);
4504 dbms_sql.define_column(p_get_instance_cur_id, 101, l_instance_rec.payables_unit_price);
4505 dbms_sql.define_column(p_get_instance_cur_id, 102, l_instance_rec.payables_currency_code,15);
4506 dbms_sql.define_column(p_get_instance_cur_id, 103, l_instance_rec.sales_unit_price);
4507 dbms_sql.define_column(p_get_instance_cur_id, 104, l_instance_rec.sales_currency_code,15);
4508 dbms_sql.define_column(p_get_instance_cur_id, 105, l_instance_rec.operational_status_code,30);
4509 -- End addition of columns for FA Integration
4510 
4511 END Define_Instance_Columns;
4512 
4513 /*---------------------------------------------------------*/
4514 /* Procedure name:  Bind_Inst_variable                     */
4515 /* Description :    Procedure used to generate the where   */
4516 /*                  clause for Item Instances              */
4517 /*---------------------------------------------------------*/
4518 
4519 PROCEDURE Bind_Instance_variable
4520 (
4521     p_instance_rec              IN   csi_datastructures_pub.instance_header_rec,
4522     p_cur_get_instance_rel      IN   NUMBER
4523 ) IS
4524 
4525 BEGIN
4526 
4527  IF( (p_instance_rec.instance_id IS NOT NULL)
4528                   AND (p_instance_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
4529     DBMS_SQL.BIND_VARIABLE(p_cur_get_instance_rel, ':INSTANCE_ID', p_instance_rec.instance_id);
4530  END IF;
4531 
4532 END Bind_Instance_variable;
4533 
4534 
4535 /*--------------------------------------------------*/
4536 /* procedure name: create_item_instance             */
4537 /* description   : procedure used to                */
4538 /*                 create item instances            */
4539 /*                                                  */
4540 /*--------------------------------------------------*/
4541 
4542 PROCEDURE create_item_instance
4543  (
4544      p_api_version           IN     NUMBER
4545     ,p_commit                IN     VARCHAR2
4546     ,p_init_msg_list         IN     VARCHAR2
4547     ,p_validation_level      IN     NUMBER
4548     ,p_instance_rec          IN OUT NOCOPY csi_datastructures_pub.instance_rec
4549     ,p_txn_rec               IN OUT NOCOPY csi_datastructures_pub.transaction_rec
4550     ,p_party_tbl             IN OUT NOCOPY csi_datastructures_pub.party_tbl
4551     ,p_asset_tbl             IN OUT NOCOPY csi_datastructures_pub.instance_asset_tbl
4552     ,x_return_status         OUT    NOCOPY VARCHAR2
4553     ,x_msg_count             OUT    NOCOPY NUMBER
4554     ,x_msg_data              OUT    NOCOPY VARCHAR2
4555     ,p_item_attribute_tbl    IN OUT NOCOPY csi_item_instance_pvt.item_attribute_tbl
4556     ,p_location_tbl          IN OUT NOCOPY csi_item_instance_pvt.location_tbl
4557     ,p_generic_id_tbl        IN OUT NOCOPY csi_item_instance_pvt.generic_id_tbl
4558     ,p_lookup_tbl            IN OUT NOCOPY csi_item_instance_pvt.lookup_tbl
4559     ,p_ins_count_rec         IN OUT NOCOPY csi_item_instance_pvt.ins_count_rec
4560     ,p_called_from_grp       IN     VARCHAR2
4561     ,p_internal_party_id     IN     NUMBER
4562  )
4563     IS
4564 
4565     l_api_name               CONSTANT VARCHAR2(30)   := 'CREATE_ITEM_INSTANCE_PVT';
4566     l_api_version            CONSTANT NUMBER         := 1.0;
4567     l_debug_level            NUMBER;
4568     l_instance_id            NUMBER;
4569     l_party_owner_rec        csi_datastructures_pub.party_rec;
4570     l_csi_item_instance_h_id NUMBER;
4571     l_old_oks_cp_rec         OKS_IBINT_PUB.CP_REC_TYPE;
4572     l_new_oks_cp_rec         OKS_IBINT_PUB.CP_REC_TYPE;
4573     l_ctr_grp_id_template    NUMBER;
4574     l_ctr_grp_id_instance    NUMBER;
4575     l_ctr_id_template        csi_counter_template_pub.ctr_template_autoinst_tbl;
4576     l_ctr_id_instance        csi_counter_template_pub.counter_autoinstantiate_tbl;
4577     l_msg_count              NUMBER;
4578     l_msg_data               VARCHAR2(100);
4579     l_msg_index              NUMBER;
4580     l_line_count             NUMBER;
4581     l_version_label_rec      csi_datastructures_pub.version_label_rec;
4582     l_process_flag           BOOLEAN := TRUE;
4583     l_return_value           BOOLEAN;
4584     l_owner                  NUMBER;
4585     l_owner_count            NUMBER := 0;
4586     l_int_party_id           NUMBER;
4587     l_serial_control         NUMBER;
4588     l_lot_control            NUMBER;
4589     l_shelf_life_code        NUMBER;
4590     l_instance_status        VARCHAR2(50);
4591     l_contracts_status       VARCHAR2(3);
4592     l_account_id             NUMBER;
4593     l_version_label          VARCHAR2(30);
4594     l_sys_date               DATE := SYSDATE;
4595     l_last_vld_organization_id NUMBER;
4596     l_temp                   VARCHAR2(1);
4597     l_base_item_id           NUMBER;
4598     l_ctr_association_id     NUMBER;
4599     l_object_version_number  NUMBER;
4600     l_association_type       VARCHAR2(30) := 'PROD_ITEM';
4601 --    l_desc_flex              CS_COUNTERS_EXT_PVT.DFF_Rec_Type;
4602 -- Counter ref r12 changes
4603     l_desc_flex              csi_ctr_datastructures_pub.dff_rec_type;
4604     l_ctr_item_associations_rec csi_ctr_datastructures_pub.ctr_item_associations_rec;
4605     l_trackable_flag         VARCHAR2(1);
4606     l_uom_code               VARCHAR2(3);
4607     l_rev_control            NUMBER;
4608     l_exists_flag            VARCHAR2(1);
4609     l_valid_flag             VARCHAR2(1);
4610     l_call_counters          VARCHAR2(1) := FND_PROFILE.VALUE('CSI_COUNTERS_ENABLED');
4611     l_config_key             csi_utility_grp.config_instance_key;
4612     l_config_valid_status    VARCHAR2(10);
4613     l_return_message         VARCHAR2(100);
4614     l_component_ins_type     VARCHAR2(1):=NULL ;
4615     l_config_hdr_id          NUMBER;
4616     l_config_rev_nbr         NUMBER;
4617     l_terminated_flag        VARCHAR2(1);
4618     l_check_instance_rec     csi_datastructures_pub.instance_rec;
4619     l_prior_txn_id           NUMBER;
4620     l_ins_flag               VARCHAR2(1);
4621     l_eam_item               BOOLEAN := FALSE;
4622     l_eam_item_type          NUMBER;
4623     l_reason_failed          VARCHAR2(30);
4624     l_token                  VARCHAR2(30);
4625     l_dummy_location         VARCHAR2(1);
4626     l_counter_group_id       NUMBER :=0;
4627     l_gen_object_id          NUMBER;
4628     l_equipment_type         NUMBER;
4629     --
4630     -- Added variables for bug 8516781, FP bug 8551918
4631     l_exp_rltns_rec             csi_datastructures_pub.ii_relationship_rec;
4632     l_instance_id_lst           csi_datastructures_pub.id_tbl;
4633     l_msg_data                  VARCHAR2(2000);
4634 
4635 	l_transaction_type_id NUMBER := 0;
4636 	l_serial_tagged NUMBER := 1;
4637 
4638 
4639     CURSOR CTR_GROUP(p_src_object_id IN NUMBER) IS
4640 /*    R12 Changes ...
4641     SELECT counter_group_id
4642     FROM CS_CTR_ASSOCIATIONS
4643     WHERE source_object_id = p_src_object_id;
4644     */
4645     SELECT  group_id,
4646             associated_to_group,--Added for bug 9142776
4647 	     COUNTER_ID		--Added for bug 9142776
4648     FROM   csi_ctr_item_associations
4649     WHERE  inventory_item_id = p_src_object_id;
4650 BEGIN
4651     -- Standard Start of API savepoint
4652        SAVEPOINT  create_item_instance_pvt;
4653 
4654     -- Standard call to check for call compatibility.
4655        IF NOT FND_API.Compatible_API_Call (l_api_version,
4656                                            p_api_version,
4657                                            l_api_name   ,
4658                                            G_PKG_NAME    )
4659        THEN
4660              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4661        END IF;
4662 
4663     -- Initialize message list if p_init_msg_list is set to TRUE.
4664        IF FND_API.to_Boolean( p_init_msg_list ) THEN
4665              FND_MSG_PUB.initialize;
4666        END IF;
4667 
4668     -- Initialize API return status to success
4669        x_return_status := FND_API.G_RET_STS_SUCCESS;
4670 
4671         -- Check the profile option debug_level for debug message reporting
4672            l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
4673        --  If debug_level = 1 then dump the procedure name
4674            IF (l_debug_level > 0) THEN
4675               csi_gen_utility_pvt.put_line ('create_item_instance_pvt');
4676            END IF;
4677 
4678        -- If the debug level = 2 then dump all the parameters values.
4679            IF (l_debug_level > 1) THEN
4680                  csi_gen_utility_pvt.put_line ( 'create_item_instance_pvt' ||
4681                                                    p_api_version      ||'-'||
4682                                                    p_commit           ||'-'||
4683                                                    p_init_msg_list          );
4684                -- Dump the records in the log file
4685                  csi_gen_utility_pvt.dump_instance_rec(p_instance_rec);
4686                  csi_gen_utility_pvt.dump_party_tbl(p_party_tbl);
4687                  csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
4688            END IF;
4689 
4690         -- Start API body
4691          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
4692              (    p_instance_rec.INVENTORY_ITEM_ID  ,
4693                 ' p_instance_rec.INVENTORY_ITEM_ID ',
4694                   l_api_name
4695            );
4696 /* Code commented by sk for bug 2198575
4697 
4698          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
4699              (    p_instance_rec.INV_MASTER_ORGANIZATION_ID  ,
4700                 ' p_instance_rec.INV_MASTER_ORGANIZATION_ID ',
4701                   l_api_name
4702            );
4703 */
4704          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
4705              (    p_instance_rec.QUANTITY  ,
4706                 ' p_instance_rec.QUANTITY ',
4707                   l_api_name
4708            );
4709 
4710          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Char
4711              (    p_instance_rec.UNIT_OF_MEASURE  ,
4712                 ' p_instance_rec.UNIT_OF_MEASURE ',
4713                   l_api_name
4714            );
4715       --
4716       -- Initialize the Instance count
4717       --
4718       If p_ins_count_rec.inv_count is NULL OR
4719          p_ins_count_rec.inv_count = FND_API.G_MISS_NUM THEN
4720          p_ins_count_rec.inv_count := 0;
4721       End if;
4722       --
4723       If p_ins_count_rec.generic_count is NULL OR
4724          p_ins_count_rec.generic_count = FND_API.G_MISS_NUM THEN
4725          p_ins_count_rec.generic_count := 0;
4726       End if;
4727       --
4728       If p_ins_count_rec.location_count is NULL OR
4729          p_ins_count_rec.location_count = FND_API.G_MISS_NUM THEN
4730          p_ins_count_rec.location_count := 0;
4731       End if;
4732       --
4733       If p_ins_count_rec.lookup_count is NULL OR
4734          p_ins_count_rec.lookup_count = FND_API.G_MISS_NUM THEN
4735          p_ins_count_rec.lookup_count := 0;
4736       End if;
4737       --
4738 
4739       --Validations for the Create Item Instance
4740       --If vld_organization_id is passed and inv_master_organization_id is
4741       --not passed then derive master_organization_id from mtl_parameters.
4742       -- Start of modifications by sk on 02/19/02 for bug 2198575
4743       IF   ((p_instance_rec.vld_organization_id IS NOT NULL)  AND
4744             (p_instance_rec.vld_organization_id <> FND_API.G_MISS_NUM)) AND
4745            ((p_instance_rec.inv_master_organization_id IS NULL)  OR
4746             (p_instance_rec.inv_master_organization_id = FND_API.G_MISS_NUM))
4747       THEN
4748          BEGIN
4749             SELECT  master_organization_id
4750             INTO    p_instance_rec.inv_master_organization_id
4751             FROM    mtl_parameters
4752             WHERE   organization_id = p_instance_rec.vld_organization_id;
4753          EXCEPTION
4754            WHEN OTHERS THEN
4755              NULL;
4756          END;
4757       --If vld_organization_id is not passed and inv_master_organization_id is
4758       --passed then assign inv_master_organization_id to vld_organization_id.
4759       ELSIF ((p_instance_rec.vld_organization_id IS NULL)  OR
4760              (p_instance_rec.vld_organization_id = FND_API.G_MISS_NUM)) AND
4761             ((p_instance_rec.inv_master_organization_id IS NOT NULL)  AND
4762              (p_instance_rec.inv_master_organization_id <> FND_API.G_MISS_NUM))
4763       THEN
4764           IF NOT (csi_Item_Instance_Vld_Pvt.Is_Valid_Master_Org
4765                             (p_instance_rec.inv_master_organization_id)) THEN
4766              FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_MAST_ORG');
4767              FND_MSG_PUB.Add;
4768              RAISE FND_API.G_EXC_ERROR;
4769           END IF;
4770           p_instance_rec.vld_organization_id := p_instance_rec.inv_master_organization_id;
4771       --If both vld_organization_id and inv_master_organization_id are
4772       --passed then check the validity of passed inv_master_organization_id.
4773       ELSIF ((p_instance_rec.vld_organization_id IS NOT NULL)  AND
4774              (p_instance_rec.vld_organization_id <> FND_API.G_MISS_NUM)) AND
4775             ((p_instance_rec.inv_master_organization_id IS NOT NULL)  AND
4776              (p_instance_rec.inv_master_organization_id <> FND_API.G_MISS_NUM))
4777       THEN
4778             BEGIN
4779                SELECT  'x'
4780                INTO    l_temp
4781                FROM    mtl_parameters
4782                WHERE   organization_id = p_instance_rec.vld_organization_id
4783                AND     master_organization_id = p_instance_rec.inv_master_organization_id;
4784             EXCEPTION
4785               WHEN NO_DATA_FOUND THEN
4786                 FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_VLD_MAST_COMB');
4787                 FND_MSG_PUB.Add;
4788                 RAISE FND_API.G_EXC_ERROR;
4789             END;
4790       ELSE
4791                 FND_MESSAGE.SET_NAME('CSI','CSI_NO_VLD_ORG');
4792                 FND_MSG_PUB.Add;
4793                 RAISE FND_API.G_EXC_ERROR;
4794       END IF;
4795       -- End of modifications by sk on 02/19/02 for bug 2198575
4796 
4797 -- Validating the Instance Id
4798         IF  ((p_instance_rec.INSTANCE_ID IS  NULL) OR
4799              (p_instance_rec.INSTANCE_ID = FND_API.G_MISS_NUM)) THEN
4800            -- If the instance_id passed is null then generate from sequence
4801            -- and check if the value exists . If exists then generate
4802            -- again from the sequence till we get a value that does not exist
4803            WHILE l_process_flag LOOP
4804                 p_instance_rec.INSTANCE_ID := CSI_Item_Instance_vld_pvt.get_instance_id;
4805                 IF NOT(CSI_Item_Instance_vld_pvt.InstanceExists(p_instance_rec.INSTANCE_ID,
4806                                                             FALSE                    )) THEN
4807                     l_process_flag := FALSE;
4808                 END IF;
4809            END LOOP;
4810         ELSE
4811             -- Validate the instance_id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
4812             IF CSI_Item_Instance_vld_pvt.InstanceExists(p_instance_rec.INSTANCE_ID,
4813                                                         TRUE                       ) THEN
4814                 RAISE FND_API.G_EXC_ERROR;
4815             END IF;
4816         END IF;
4817 
4818        -- IF l_eam_item
4819        -- THEN
4820          IF (p_instance_rec.location_id IS NULL OR
4821              p_instance_rec.location_id =fnd_api.g_miss_num)
4822          THEN
4823            IF p_instance_rec.location_type_code IN ('WIP', 'HR_LOCATIONS','PROJECT','IN_TRANSIT','PO','INTERNAL_SITE')
4824            THEN
4825             BEGIN
4826               SELECT location_id
4827                 INTO p_instance_rec.location_id
4828                 FROM hr_all_organization_units
4829                WHERE organization_id = p_instance_rec.vld_organization_id;
4830             EXCEPTION
4831               WHEN NO_DATA_FOUND THEN
4832                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
4833                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4834                fnd_msg_pub.ADD;
4835 	           RAISE fnd_api.g_exc_error;
4836             END;
4837             IF p_instance_rec.location_id IS NULL
4838             THEN
4839                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
4840                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4841                fnd_msg_pub.ADD;
4842 	           RAISE fnd_api.g_exc_error;
4843             END IF;
4844            END IF;
4845          END IF;
4846 
4847          IF (p_instance_rec.install_location_id IS NULL OR
4848              p_instance_rec.install_location_id =fnd_api.g_miss_num)
4849          THEN
4850            IF p_instance_rec.install_location_type_code IN ('WIP','HR_LOCATIONS','PROJECT','IN_TRANSIT','PO','INTERNAL_SITE')
4851            THEN
4852             BEGIN
4853               SELECT location_id
4854                 INTO p_instance_rec.install_location_id
4855                 FROM hr_all_organization_units
4856                WHERE organization_id = p_instance_rec.vld_organization_id;
4857             EXCEPTION
4858               WHEN NO_DATA_FOUND THEN
4859                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
4860                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4861                fnd_msg_pub.ADD;
4862 	           RAISE fnd_api.g_exc_error;
4863             END;
4864             IF p_instance_rec.install_location_id IS NULL
4865             THEN
4866                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
4867                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4868                fnd_msg_pub.ADD;
4869 	           RAISE fnd_api.g_exc_error;
4870             END IF;
4871            END IF;
4872          END IF;
4873        -- END IF;
4874       -- End addition of code for eam integration
4875 
4876         IF csi_item_Instance_Vld_pvt.Is_InstanceNum_Valid(p_instance_rec.instance_id,
4877                                                           p_instance_rec.instance_number,
4878                                                           'CREATE')
4879         THEN
4880            IF p_instance_rec.instance_number IS NULL OR
4881               p_instance_rec.instance_number = fnd_api.g_miss_char
4882            THEN
4883               p_instance_rec.instance_number := substr(to_char(p_instance_rec.instance_id),1,30);
4884            END IF;
4885         ELSE
4886             RAISE fnd_api.g_exc_error;
4887         END IF;
4888         --
4889         -- Get the Required Inventory Attributes
4890         l_exists_flag := 'N';
4891         l_valid_flag := 'Y';
4892         IF p_item_attribute_tbl.count > 0 then
4893            FOR item_count in p_item_attribute_tbl.FIRST .. p_item_attribute_tbl.LAST
4894            LOOP
4895               IF p_item_attribute_tbl(item_count).inventory_item_id = p_instance_rec.inventory_item_id AND
4896                  p_item_attribute_tbl(item_count).organization_id = p_instance_rec.vld_organization_id AND
4897                  p_item_attribute_tbl(item_count).master_organization_id = p_instance_rec.inv_master_organization_id
4898               THEN
4899                  l_trackable_flag := p_item_attribute_tbl(item_count).trackable_flag;
4900                  l_rev_control := p_item_attribute_tbl(item_count).revision_control_code;
4901                  l_serial_control := p_item_attribute_tbl(item_count).serial_number_control_code;
4902                  l_lot_control := p_item_attribute_tbl(item_count).lot_control_code;
4903                  l_shelf_life_code := p_item_attribute_tbl(item_count).shelf_life_code;
4904                  l_uom_code := p_item_attribute_tbl(item_count).uom_code;
4905                  l_eam_item_type := p_item_attribute_tbl(item_count).eam_item_type;
4906                  l_equipment_type := p_item_attribute_tbl(item_count).equipment_type;
4907                  l_valid_flag := p_item_attribute_tbl(item_count).valid_flag;
4908                  l_exists_flag := 'Y';
4909                  EXIT;
4910               END IF;
4911            END LOOP;
4912            IF l_valid_flag <> 'Y'
4913            THEN
4914               FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
4915               FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
4916               FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4917               FND_MSG_PUB.Add;
4918               RAISE fnd_api.g_exc_error;
4919            END IF;
4920         END IF;
4921         --
4922         -- if item does not exist in cache then get from database.
4923         if l_exists_flag = 'N' then
4924            p_ins_count_rec.inv_count := p_ins_count_rec.inv_count + 1;
4925            p_item_attribute_tbl(p_ins_count_rec.inv_count).inventory_item_id := p_instance_rec.inventory_item_id;
4926            p_item_attribute_tbl(p_ins_count_rec.inv_count).organization_id := p_instance_rec.vld_organization_id;
4927            p_item_attribute_tbl(p_ins_count_rec.inv_count).master_organization_id := p_instance_rec.inv_master_organization_id;
4928            Begin
4929               select comms_nl_trackable_flag,primary_uom_code
4930               into l_trackable_flag,l_uom_code
4931               from MTL_SYSTEM_ITEMS_B
4932               where inventory_item_id = p_instance_rec.inventory_item_id
4933               and   organization_id = p_instance_rec.inv_master_organization_id
4934 	      and   enabled_flag = 'Y'
4935 	      and   nvl (start_date_active, sysdate) <= sysdate
4936 	      and   nvl (end_date_active, sysdate+1) > sysdate;
4937               --
4938 	      p_item_attribute_tbl(p_ins_count_rec.inv_count).trackable_flag := l_trackable_flag;
4939 	      p_item_attribute_tbl(p_ins_count_rec.inv_count).uom_code := l_uom_code;
4940               p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'Y';
4941 	   Exception
4942 	      when others then
4943 
4944 		 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
4945                  FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
4946                  FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4947                  FND_MSG_PUB.Add;
4948 		 RAISE fnd_api.g_exc_error;
4949            End;
4950            --
4951        BEGIN
4952          SELECT revision_qty_control_code
4953                ,serial_number_control_code
4954                --,lot_control_code
4955 	 		,nvl(csi_utl_pkg.get_lot_ctrl_code(p_txn_rec.inv_material_transaction_id),lot_control_code) lot_control_code-- Added for bug#14835893
4956                ,shelf_life_code
4957                ,eam_item_type
4958                ,equipment_type
4959            INTO l_rev_control
4960                ,l_serial_control
4961                ,l_lot_control
4962                ,l_shelf_life_code
4963                ,l_eam_item_type
4964                ,l_equipment_type
4965            FROM mtl_system_items_b
4966           WHERE inventory_item_id = p_instance_rec.inventory_item_id
4967 	        AND organization_id = p_instance_rec.vld_organization_id
4968             AND enabled_flag = 'Y'
4969             AND nvl (start_date_active, sysdate) <= sysdate
4970             AND nvl (end_date_active, sysdate+1) > sysdate;
4971               --
4972             p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'Y';
4973             p_item_attribute_tbl(p_ins_count_rec.inv_count).revision_control_code := l_rev_control;
4974             p_item_attribute_tbl(p_ins_count_rec.inv_count).serial_number_control_code := l_serial_control;
4975             p_item_attribute_tbl(p_ins_count_rec.inv_count).lot_control_code := l_lot_control;
4976             p_item_attribute_tbl(p_ins_count_rec.inv_count).shelf_life_code := l_shelf_life_code;
4977             p_item_attribute_tbl(p_ins_count_rec.inv_count).eam_item_type := l_eam_item_type;
4978             p_item_attribute_tbl(p_ins_count_rec.inv_count).equipment_type := l_equipment_type;
4979        EXCEPTION
4980         WHEN OTHERS THEN
4981              p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'N';
4982              FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
4983              FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
4984              FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
4985              FND_MSG_PUB.Add;
4986              RAISE fnd_api.g_exc_error;
4987        END;
4988         End if;
4989    -- Added the following code to fix bug 5506231
4990        IF p_instance_rec.instance_usage_code IS NULL OR
4991           p_instance_rec.instance_usage_code = fnd_api.g_miss_char
4992        THEN
4993           csi_gen_utility_pvt.put_line ('Instance_usage_code is passed as null or g_miss value');
4994           csi_gen_utility_pvt.put_line ('Hence deriving instance usage code');
4995          IF l_serial_control = 6 AND
4996             p_instance_rec.serial_number IS NOT NULL AND
4997             p_instance_rec.location_type_code = 'INVENTORY'
4998          THEN
4999             p_instance_rec.instance_usage_code := 'RETURNED';
5000          ELSE
5001            IF p_instance_rec.location_type_code = 'INVENTORY'
5002            THEN
5003               p_instance_rec.instance_usage_code := 'IN_INVENTORY';
5004            ELSIF p_instance_rec.location_type_code = 'WIP'
5005            THEN
5006                  p_instance_rec.instance_usage_code := 'IN_WIP';
5007            ELSE
5008                  p_instance_rec.instance_usage_code := 'OUT_OF_ENTERPRISE';
5009            END IF;
5010          END IF;
5011           csi_gen_utility_pvt.put_line ('Value of derived instance_usage_code is : '||p_instance_rec.instance_usage_code);
5012        END IF;
5013    -- End addition of code to fix bug 5506231
5014 
5015         -- Checking for Trackable Flag
5016         IF NOT csi_item_instance_vld_pvt.Is_Trackable
5017                            (p_instance_rec.inventory_item_id,
5018                             p_instance_rec.inv_master_organization_id,
5019                             l_trackable_flag
5020                            )  THEN
5021            RAISE fnd_api.g_exc_error;
5022         END IF;
5023         --
5024       -- Added following code for eam integration
5025       -- Check if the item is a rebuildable or an asset group
5026 
5027         IF csi_item_instance_vld_pvt.Check_for_eam_item
5028            (p_inventory_item_id  => p_instance_rec.inventory_item_id,
5029             p_organization_id    => p_instance_rec.vld_organization_id,
5030             p_eam_item_type      => l_eam_item_type)
5031         THEN
5032           l_eam_item := TRUE;
5033         END IF;
5034         -- Added for eam
5035          IF ((p_instance_rec.network_asset_flag IS NOT NULL AND
5036               p_instance_rec.network_asset_flag <> fnd_api.g_miss_char) OR
5037              (p_instance_rec.maintainable_flag IS NOT NULL AND
5038               p_instance_rec.maintainable_flag <> fnd_api.g_miss_char)  OR
5039              (p_instance_rec.pn_location_id IS NOT NULL AND
5040               p_instance_rec.pn_location_id <> fnd_api.g_miss_num) OR
5041              (p_instance_rec.asset_criticality_code IS NOT NULL AND
5042               p_instance_rec.asset_criticality_code <> fnd_api.g_miss_char) OR
5043              (p_instance_rec.category_id IS NOT NULL AND
5044               p_instance_rec.category_id <> fnd_api.g_miss_num) OR
5045              (p_instance_rec.equipment_gen_object_id IS NOT NULL AND
5046               p_instance_rec.equipment_gen_object_id <> fnd_api.g_miss_num) OR
5047              (p_instance_rec.linear_location_id IS NOT NULL AND
5048               p_instance_rec.linear_location_id <> fnd_api.g_miss_num) OR
5049              (p_instance_rec.operational_log_flag IS NOT NULL AND
5050               p_instance_rec.operational_log_flag <> fnd_api.g_miss_char) OR
5051              (p_instance_rec.checkin_status IS NOT NULL AND
5052               p_instance_rec.checkin_status <> fnd_api.g_miss_num) OR
5053              (p_instance_rec.supplier_warranty_exp_date IS NOT NULL AND
5054               p_instance_rec.supplier_warranty_exp_date <> fnd_api.g_miss_date))
5055          THEN
5056           IF l_eam_item
5057           THEN
5058             IF p_instance_rec.maintainable_flag IS NULL OR
5059                p_instance_rec.maintainable_flag = fnd_api.g_miss_char
5060             THEN
5061                p_instance_rec.maintainable_flag :='Y';
5062             END IF;
5063 
5064            IF NOT eam_assetnumber_pub.validate_fields
5065             (p_current_organization_id    => p_instance_rec.vld_organization_id
5066             ,p_inventory_item_id          => p_instance_rec.inventory_item_id
5067             ,p_serial_number              => p_instance_rec.serial_number
5068             ,p_network_asset_flag         => p_instance_rec.network_asset_flag
5069             ,p_maintainable_flag          => p_instance_rec.maintainable_flag
5070             ,p_pn_location_id             => p_instance_rec.pn_location_id
5071             ,p_asset_criticality_code     => p_instance_rec.asset_criticality_code
5072             ,p_category_id                => p_instance_rec.category_id
5073             ,p_equipment_object_id        => p_instance_rec.equipment_gen_object_id
5074             ,p_eam_linear_id              => p_instance_rec.linear_location_id
5075             ,p_operational_log_flag       => p_instance_rec.operational_log_flag
5076             ,p_checkin_status             => p_instance_rec.checkin_status
5077             ,p_supplier_warranty_exp_date => p_instance_rec.supplier_warranty_exp_date
5078             ,p_owning_department_id       => NULL
5079             ,x_reason_failed              => l_reason_failed
5080             ,x_token                      => l_token
5081             )
5082            THEN
5083           --  FND_MESSAGE.SET_NAME('CSI', l_reason_failed); -- commented for bug 5351886
5084           --  FND_MSG_PUB.Add;                              -- commented for bug 5351886
5085             csi_gen_utility_pvt.put_line('Call to eam_assetnumber_pub.validate_fields failed with following reason');
5086             csi_gen_utility_pvt.put_line(l_reason_failed);
5087             RAISE FND_API.G_EXC_ERROR;
5088            END IF;
5089           ELSE
5090             FND_MESSAGE.SET_NAME('CSI', 'CSI_NON_EAM_ITEM');
5091             FND_MSG_PUB.Add;
5092             RAISE FND_API.G_EXC_ERROR;
5093           END IF;
5094          END IF;
5095           -- Adding the following code as there could be a case
5096           -- where the item is an eam item but none of the eam columns were
5097           -- populated then above code will not assign a value to
5098           -- maintainable_flag.
5099           IF l_eam_item
5100           THEN
5101            IF p_instance_rec.maintainable_flag IS NULL OR
5102               p_instance_rec.maintainable_flag = fnd_api.g_miss_char
5103            THEN
5104               p_instance_rec.maintainable_flag :='Y';
5105            END IF;
5106           END IF;
5107         -- End addition for eam
5108 
5109         -- Validation for the Revision
5110         csi_item_instance_vld_pvt.Validate_Revision
5111                   (
5112                          p_inv_item_id              => p_instance_rec.inventory_item_id ,
5113                          p_inv_org_id               => p_instance_rec.vld_organization_id,
5114                          p_creation_complete_flag   => p_instance_rec.creation_complete_flag,
5115                          p_revision                 => p_instance_rec.inventory_revision,
5116                          l_return_value             => l_return_value,
5117                          p_rev_control_code         => l_rev_control
5118                    );
5119 
5120          IF l_return_value = FALSE THEN
5121             RAISE fnd_api.g_exc_error;
5122          END IF;
5123          -- Validation for the Lot Number
5124          csi_Item_Instance_Vld_pvt.Validate_Lot_Number
5125                    (
5126                          p_inv_org_id               => p_instance_rec.vld_organization_id,
5127                          p_inv_item_id              => p_instance_rec.inventory_item_id ,
5128                          p_lot_number               => p_instance_rec.lot_number,
5129                          p_mfg_serial_number_flag   => p_instance_rec.mfg_serial_number_flag,
5130                          p_txn_rec                  => p_txn_rec,
5131                          p_creation_complete_flag   => p_instance_rec.creation_complete_flag,
5132                          l_return_value             => l_return_value,
5133                          p_lot_control_code         => l_lot_control
5134                     );
5135          IF l_return_value = FALSE THEN
5136             RAISE fnd_api.g_exc_error;
5137          END IF;
5138 
5139          -- Validates the lot uniqueness and creates lot numbers in MLNs for manually created Instances
5140          -- Bug# 4011408
5141          IF ((p_instance_rec.lot_number <> FND_API.G_MISS_CHAR) AND
5142              (p_instance_rec.lot_number IS NOT NULL))
5143          THEN
5144             csi_gen_utility_pvt.put_line('Calling Create_Lot routine...');
5145             csi_item_instance_vld_pvt.Create_Lot
5146                (
5147                  p_inv_org_id                 =>  p_instance_rec.vld_organization_id,
5148                  p_inv_item_id                =>  p_instance_rec.inventory_item_id,
5149                  p_lot_number                 =>  p_instance_rec.lot_number,
5150                  p_shelf_life_code            =>  l_shelf_life_code,
5151                  p_instance_id                =>  p_instance_rec.instance_id,
5152                  l_return_value               =>  l_return_value
5153                );
5154              IF l_return_value = FALSE THEN
5155                 RAISE fnd_api.g_exc_error;
5156              END IF;
5157          END IF;
5158          -- Creates Serial number in MSNs for manually created serialized CPs
5159          l_ins_flag := FND_API.G_FALSE;
5160          IF ((p_instance_rec.serial_number <> FND_API.G_MISS_CHAR) AND
5161              (p_instance_rec.serial_number IS NOT NULL)) /* AND
5162              (nvl(p_instance_rec.mfg_serial_number_flag,'N') <> 'Y') ) */
5163          THEN
5164            csi_gen_utility_pvt.put_line('Calling Create_Serial...');
5165            csi_item_instance_vld_pvt.Create_Serial
5166                    (
5167                          p_inv_org_id         =>  p_instance_rec.vld_organization_id,
5168                          p_inv_item_id        =>  p_instance_rec.inventory_item_id,
5169                          p_serial_number      =>  p_instance_rec.serial_number,
5170                          p_mfg_srl_num_flag   =>  p_instance_rec.mfg_serial_number_flag,
5171                          p_location_type_code =>  p_instance_rec.location_type_code,
5172                          p_ins_flag           =>  l_ins_flag,
5173                          p_lot_number         =>  p_instance_rec.lot_number,
5174                          p_gen_object_id      =>  l_gen_object_id,
5175                          l_return_value       =>  l_return_value
5176                    );
5177 
5178            IF l_return_value = FALSE THEN
5179               RAISE fnd_api.g_exc_error;
5180            ELSE
5181               IF nvl(p_instance_rec.mfg_serial_number_flag,'N') <> 'Y'
5182               THEN
5183                 p_instance_rec.mfg_serial_number_flag := 'Y';
5184               END IF;
5185            END IF;
5186 
5187            IF l_eam_item AND
5188               l_equipment_type = 1
5189            THEN
5190               p_instance_rec.equipment_gen_object_id := l_gen_object_id;
5191            END IF;
5192 
5193            IF l_eam_item
5194            THEN
5195             csi_gen_utility_pvt.put_line( 'Calling eam_common_utilities_pvt.update_logical_asset...');
5196             csi_gen_utility_pvt.put_line( 'Inventory_item_id is       :'||p_instance_rec.inventory_item_id);
5197             csi_gen_utility_pvt.put_line( 'Serial_number is           :'||p_instance_rec.serial_number);
5198             csi_gen_utility_pvt.put_line( 'Network_asset_flag is      :'||p_instance_rec.network_asset_flag);
5199             csi_gen_utility_pvt.put_line( 'Pn_location_id is          :'||p_instance_rec.pn_location_id);
5200 			csi_gen_utility_pvt.put_line( 'Equipment_gen_object_id is :'||p_instance_rec.equipment_gen_object_id);
5201              eam_common_utilities_pvt.update_logical_asset
5202                ( p_inventory_item_id       => p_instance_rec.inventory_item_id
5203                 ,p_serial_number           => p_instance_rec.serial_number
5204                 ,p_network_asset_flag      => p_instance_rec.network_asset_flag
5205                 ,p_pn_location_id          => p_instance_rec.pn_location_id
5206                 ,p_equipment_gen_object_id => p_instance_rec.equipment_gen_object_id
5207                 ,x_return_status           => x_return_status
5208                 );
5209 	         IF NOT (x_return_status = FND_API.G_RET_STS_SUCCESS)
5210 			 THEN
5211 			    csi_gen_utility_pvt.put_line( 'Error from eam_common_utilities_pvt.update_logical_asset...');
5212 	            RAISE fnd_api.g_exc_error;
5213 	         END IF;
5214            END IF;
5215 
5216         END IF;
5217         -- Transaction Sequencing check
5218         -- By-pass sequencing if the serial number got created by the above routine
5219         IF p_instance_rec.serial_number IS NOT NULL AND
5220            p_instance_rec.serial_number <> FND_API.G_MISS_CHAR AND
5221            l_ins_flag = FND_API.G_FALSE THEN
5222 	  --  l_check_instance_rec.instance_id := p_instance_rec.instance_id;
5223 	   l_check_instance_rec.inventory_item_id := p_instance_rec.inventory_item_id;
5224 	   l_check_instance_rec.serial_number := p_instance_rec.serial_number;
5225 	   l_check_instance_rec.lot_number := p_instance_rec.lot_number;
5226 	   l_check_instance_rec.last_txn_line_detail_id := p_instance_rec.last_txn_line_detail_id;
5227 	   csi_gen_utility_pvt.put_line('Calling Check_Prior_Txn');
5228 	   csi_Item_Instance_Vld_pvt.Check_Prior_Txn
5229 		     (
5230 		       p_instance_rec              => l_check_instance_rec
5231 		      ,p_txn_rec                   => p_txn_rec
5232 		      ,p_prior_txn_id              => l_prior_txn_id
5233                ,p_mode                      => 'CREATE'
5234 		      ,x_return_status             => x_return_status
5235 		     );
5236 	   IF NOT (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5237 	      RAISE fnd_api.g_exc_error;
5238 	   END IF;
5239 	END IF;
5240         -- Validation for the Serial Number
5241           csi_gen_utility_pvt.put_line('Calling Validate_Serial_Number...');
5242           csi_Item_Instance_Vld_pvt.Validate_Serial_Number
5243                    (
5244                          p_inv_org_id               => p_instance_rec.vld_organization_id,
5245                          p_inv_item_id              => p_instance_rec.inventory_item_id ,
5246                          p_serial_number            => p_instance_rec.serial_number,
5247                          p_mfg_serial_number_flag   => p_instance_rec.mfg_serial_number_flag,
5248                          p_txn_rec                  => p_txn_rec,
5249                          p_creation_complete_flag   => p_instance_rec.creation_complete_flag,
5250                          p_location_type_code       => p_instance_rec.location_type_code,
5251                          p_instance_usage_code      => p_instance_rec.instance_usage_code,
5252                          l_return_value             => l_return_value,
5253                          p_srl_control_code         => l_serial_control
5254                     );
5255          IF l_return_value = FALSE THEN
5256             RAISE fnd_api.g_exc_error;
5257          END IF;
5258          -- Validation for the Unit of Measure
5259          -- validate/convert only if the uom is not a primary uom
5260          IF p_instance_rec.unit_of_measure <> l_uom_code THEN
5261             csi_item_instance_vld_pvt.Is_Valid_Uom
5262                     (
5263                          --p_inv_org_id               => p_instance_rec.inv_master_organization_id,	 --bug#13568912
5264 						 p_inv_org_id               => p_instance_rec.vld_organization_id,  --bug#13568912
5265                          p_inv_item_id              => p_instance_rec.inventory_item_id ,
5266                          p_uom_code                 => p_instance_rec.unit_of_measure,
5267                          p_quantity                 => p_instance_rec.quantity,
5268                          p_creation_complete_flag   => p_instance_rec.creation_complete_flag,
5269                          l_return_value             => l_return_value
5270                     );
5271             IF l_return_value = FALSE THEN
5272                RAISE FND_API.G_EXC_ERROR;
5273             END IF;
5274          END IF;
5275    -- Validation for Location Source and Location ID
5276    IF p_instance_rec.location_type_code = FND_API.G_MISS_CHAR OR
5277       p_instance_rec.location_type_code IS NULL THEN
5278       IF p_instance_rec.creation_complete_flag = 'Y' THEN
5279          FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_LOCATION');
5280          FND_MSG_PUB.ADD;
5281          RAISE fnd_api.g_exc_error;
5282       ELSE
5283          p_instance_rec.creation_complete_flag := 'N';
5284       END IF;
5285    ELSE
5286       IF p_instance_rec.location_id IS NULL OR
5287          p_instance_rec.location_id = FND_API.G_MISS_NUM THEN
5288          FND_MESSAGE.SET_NAME('CSI','CSI_API_LOCATION_NOT_VALID');
5289          FND_MSG_PUB.ADD;
5290          RAISE fnd_api.g_exc_error;
5291       ELSE
5292          -- Validate location_id
5293          l_exists_flag := 'N';
5294          l_valid_flag := 'Y';
5295          IF p_location_tbl.count > 0 THEN
5296             For loc_row in p_location_tbl.FIRST .. p_location_tbl.LAST
5297             Loop
5298                IF p_location_tbl(loc_row).location_type_code = p_instance_rec.location_type_code AND
5299                   p_location_tbl(loc_row).location_id = p_instance_rec.location_id THEN
5300                   l_exists_flag := 'Y';
5301                   l_valid_flag := p_location_tbl(loc_row).valid_flag;
5302                   EXIT;
5303                END IF;
5304             End Loop;
5305             --
5306             IF l_valid_flag <> 'Y' THEN
5307                FND_MESSAGE.SET_NAME('CSI','CSI_API_LOCATION_NOT_VALID');
5308                FND_MSG_PUB.ADD;
5309                RAISE fnd_api.g_exc_error;
5310             END IF;
5311          END IF; -- p_location_tbl count
5312          --
5313          IF l_exists_flag <> 'Y' THEN
5314             p_ins_count_rec.location_count := p_ins_count_rec.location_count + 1;
5315             p_location_tbl(p_ins_count_rec.location_count).location_type_code :=
5316                                            p_instance_rec.location_type_code;
5317             p_location_tbl(p_ins_count_rec.location_count).location_id := p_instance_rec.location_id;
5318             IF csi_item_instance_vld_pvt.Is_Valid_Location_ID
5319                                         (p_location_source_table => p_instance_rec.location_type_code
5320                                         ,p_location_id => p_instance_rec.location_id) THEN
5321                p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'Y';
5322             ELSE
5323                p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'N';
5324                RAISE fnd_api.g_exc_error;
5325             END IF;
5326          END IF;
5327          -- Validate Related Parameters
5328          IF NOT csi_item_instance_vld_pvt.Validate_Related_Loc_Params
5329                                    (
5330 				     p_location_source_table => p_instance_rec.location_type_code,
5331 				     p_location_id           => p_instance_rec.location_id,
5332 				     p_organization_id       => p_instance_rec.inv_organization_id,
5333 				     p_subinventory          => p_instance_rec.inv_subinventory_name,
5334 				     p_locator_id            => p_instance_rec.inv_locator_id,
5335 				     p_project_id            => p_instance_rec.pa_project_id,
5336 				     p_task_id               => p_instance_rec.pa_project_task_id,
5337 				     p_sales_ord_line_id     => p_instance_rec.in_transit_order_line_id,
5338 				     p_wip_job_id            => p_instance_rec.wip_job_id,
5339 				     p_po_line_id            => p_instance_rec.po_order_line_id,
5340 				     p_inst_usage_code       => p_instance_rec.instance_usage_code
5341 				   ) THEN
5342             RAISE fnd_api.g_exc_error;
5343          END IF;
5344       END IF; -- Location ID Valid
5345    END IF; -- Location Type code valid
5346    --
5347    -- Validation for the Quantity
5348    IF NOT csi_Item_Instance_Vld_pvt.Is_Quantity_Valid(
5349               p_instance_id         => p_instance_rec.instance_id,
5350               p_inv_organization_id => p_instance_rec.vld_organization_id,
5351               p_quantity            => p_instance_rec.quantity ,
5352               p_serial_control_code => l_serial_control,
5353               p_location_type_code  => p_instance_rec.location_type_code,
5354               p_flag                => 'CREATE',
5355               p_csi_txn_type_id     => p_txn_rec.transaction_type_id
5356             ) -- Added serial_control and location by sk on 09/14/01
5357    THEN
5358       RAISE fnd_api.g_exc_error;
5359    END IF;
5360    --validation for accounting classification_code
5361    IF (p_party_tbl.count < 1) THEN
5362       FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_PARTY_RECORD');
5363       FND_MSG_PUB.Add;
5364       RAISE FND_API.G_EXC_ERROR;
5365    ELSE
5366       FOR l_count IN p_party_tbl.FIRST..p_party_tbl.LAST LOOP
5367          IF p_party_tbl.EXISTS(l_count) THEN
5368             IF p_party_tbl(l_count).relationship_type_code = 'OWNER' THEN
5369                l_owner_count := l_owner_count + 1;
5370                l_owner := P_PARTY_TBL(l_count).party_id;
5371             END IF;
5372          END IF;
5373       END LOOP;
5374       IF l_owner_count <> 1 THEN
5375          FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_OWNER_EXISTS');
5376          FND_MESSAGE.SET_TOKEN('OWNER',l_owner);
5377          FND_MSG_PUB.Add;
5378          RAISE fnd_api.g_exc_error;
5379       END IF;
5380       --
5381       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
5382          csi_gen_utility_pvt.populate_install_param_rec;
5383       END IF;
5384       --
5385       l_int_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
5386       --
5387       IF l_int_party_id IS NULL THEN
5388          FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
5389          FND_MSG_PUB.ADD;
5390          RAISE FND_API.G_EXC_ERROR;
5391       END IF;
5392       --
5393       --   Start code addition for eam integration
5394       /* Commented code for bug 4906588
5395       IF l_eam_item
5396       THEN
5397          p_instance_rec.ACCOUNTING_CLASS_CODE := 'ASSET';
5398       ELSE
5399       */
5400          --   End code addition for eam integration
5401          IF l_owner = l_int_party_id THEN
5402             IF p_asset_tbl.COUNT > 0 THEN
5403                p_instance_rec.ACCOUNTING_CLASS_CODE := 'ASSET';
5404             ELSIF p_instance_rec.location_type_code = 'WIP' THEN
5405                p_instance_rec.ACCOUNTING_CLASS_CODE := 'WIP';
5406             ELSIF p_instance_rec.location_type_code = 'PROJECT' THEN
5407                p_instance_rec.ACCOUNTING_CLASS_CODE := 'PROJECT';
5408             ELSE
5409                p_instance_rec.ACCOUNTING_CLASS_CODE := 'INV';
5410             END IF;
5411          ELSE
5412             IF ((p_instance_rec.accounting_class_code  IS NULL) OR
5413                (p_instance_rec.accounting_class_code = FND_API.G_MISS_CHAR)) THEN
5414                p_instance_rec.accounting_class_code := 'CUST_PROD';
5415             ELSE
5416                IF ((p_instance_rec.accounting_class_code = 'WIP') OR
5417                     (p_instance_rec.accounting_class_code = 'PROJECT')) THEN
5418                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ACCOUNT_CLASS');
5419                   FND_MSG_PUB.Add;
5420                   RAISE FND_API.G_EXC_ERROR;
5421                END IF;
5422             END IF;
5423          END IF;
5424    --   END IF;
5425    END IF;
5426 
5427   --validation for owner uniqueness
5428    FOR l_count IN p_party_tbl.FIRST..p_party_tbl.LAST LOOP
5429       IF p_party_tbl.EXISTS(l_count) THEN
5430          IF p_party_tbl(l_count).relationship_type_code = 'OWNER' THEN
5431             l_party_owner_rec := p_party_tbl(l_count);
5432          END IF;
5433       END IF;
5434     END LOOP;
5435 
5436 	--Changes for bug 10114652
5437 	IF(nvl(p_txn_rec.inv_material_transaction_id, fnd_api.g_miss_num) <> fnd_api.g_miss_num) THEN
5438 		BEGIN
5439 			SELECT transaction_type_id INTO l_transaction_type_id
5440 			FROM mtl_material_transactions
5441 			WHERE transaction_id = p_txn_rec.inv_material_transaction_id;
5442 		EXCEPTION
5443 			WHEN NO_DATA_FOUND THEN
5444 				csi_gen_utility_pvt.put_line('No data Found while fetching txn type id, from Inv Mtl txn id');
5445 				RAISE FND_API.G_EXC_ERROR;
5446 			WHEN OTHERS THEN
5447 				csi_gen_utility_pvt.put_line('Other Exception while fetching txn type id, from Inv Mtl txn id');
5448 				RAISE FND_API.G_EXC_ERROR;
5449 		END;
5450 		csi_gen_utility_pvt.put_line('Serial Tagging Control before API call 1 - '||l_serial_tagged);
5451 		csi_gen_utility_pvt.put_line('inventory_item_id : ' || p_instance_rec.inventory_item_id);
5452 		csi_gen_utility_pvt.put_line('inv_organization_id : ' || p_instance_rec.inv_organization_id);
5453 		csi_gen_utility_pvt.put_line('transaction_type_id: '||l_transaction_type_id);
5454 
5455 		-- Get serial tagging control
5456 		l_serial_tagged := inv_cache.get_serial_tagged (
5457 		p_inventory_item_id   => p_instance_rec.inventory_item_id,
5458 		p_organization_id     => p_instance_rec.inv_organization_id,
5459 		p_transaction_type_id => l_transaction_type_id);
5460 	END IF;
5461 
5462 	csi_gen_utility_pvt.put_line('Serial Tagging Control - '||l_serial_tagged);
5463 
5464 	IF l_serial_tagged <> 2 THEN
5465 		csi_gen_utility_pvt.put_line('l_serial_tagged is not 2');
5466 		IF NOT csi_item_instance_vld_pvt.Validate_Uniqueness
5467                    (p_instance_rec     => p_instance_rec,
5468                     p_party_rec        => l_party_owner_rec,
5469                     p_srl_control_code => l_serial_control,
5470                     p_csi_txn_type_id  => p_txn_rec.transaction_type_id) THEN
5471 
5472 			RAISE FND_API.G_EXC_ERROR;
5473 		END IF;
5474 	END IF;
5475     -- validating the effective active start date
5476          IF ((p_instance_rec.active_start_date = FND_API.G_MISS_DATE) OR
5477              (p_instance_rec.active_start_date IS NULL)) THEN
5478                 p_instance_rec.active_start_date := SYSDATE;
5479          END IF;
5480 
5481          IF (p_instance_rec.active_end_date = FND_API.G_MISS_DATE) THEN
5482              p_instance_rec.active_end_date := NULL;
5483          END IF;
5484 
5485          IF NOT (csi_item_instance_vld_pvt.Is_StartDate_Valid
5486                     (p_instance_rec.active_start_date,
5487                      p_instance_rec.active_end_date
5488                     )) THEN
5489                 RAISE FND_API.G_EXC_ERROR;
5490          END IF;
5491 
5492 --Check whether the active start date is > sysdate.
5493          IF ((p_instance_rec.active_start_date IS NOT NULL) AND
5494              (p_instance_rec.active_start_date <> FND_API.G_MISS_DATE)) AND
5495              (p_instance_rec.active_start_date > SYSDATE)
5496          THEN
5497               FND_MESSAGE.SET_NAME('CSI','CSI_API_INSTANCE_START_DATE');
5498               FND_MSG_PUB.Add;
5499               RAISE FND_API.G_EXC_ERROR;
5500          END IF;
5501 
5502 -- validating the effective active start date
5503          IF NOT (csi_item_instance_vld_pvt.Is_EndDate_Valid
5504                     (p_instance_rec.active_start_date,
5505                      p_instance_rec.active_end_date
5506                     )) THEN
5507                 RAISE FND_API.G_EXC_ERROR;
5508          END IF;
5509 
5510 --validation for the instance condition id
5511          l_valid_flag := 'Y';
5512          l_exists_flag := 'N';
5513          IF p_instance_rec.instance_condition_id is not null AND
5514             p_instance_rec.instance_condition_id <> FND_API.G_MISS_NUM then
5515             IF p_generic_id_tbl.count > 0 then
5516                For gen_count in p_generic_id_tbl.FIRST .. p_generic_id_tbl.LAST
5517                LOOP
5518                   IF p_generic_id_tbl(gen_count).generic_id = p_instance_rec.instance_condition_id AND
5519                      p_generic_id_tbl(gen_count).id_type = 'INS_CONDITION' then
5520                      l_valid_flag := p_generic_id_tbl(gen_count).valid_flag;
5521                      l_exists_flag := 'Y';
5522                      exit;
5523                   END IF;
5524                END LOOP;
5525                --
5526                IF l_valid_flag <> 'Y' THEN
5527                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM_CONDITION');
5528                   FND_MESSAGE.SET_TOKEN('INSTANCE_CONDITION_ID',p_instance_rec.instance_condition_id);
5529                   FND_MSG_PUB.Add;
5530                   RAISE fnd_api.g_exc_error;
5531                END IF;
5532             END IF;
5533             --
5534 	    IF l_exists_flag = 'N' THEN
5535                p_ins_count_rec.generic_count := p_ins_count_rec.generic_count + 1;
5536                p_generic_id_tbl(p_ins_count_rec.generic_count).generic_id := p_instance_rec.instance_condition_id;
5537                p_generic_id_tbl(p_ins_count_rec.generic_count).id_type := 'INS_CONDITION';
5538 	       csi_item_instance_vld_pvt.Is_Valid_Condition
5539 			    (
5540 			    p_instance_condition_id  => p_instance_rec.instance_condition_id,
5541 			    p_creation_complete_flag => p_instance_rec.creation_complete_flag,
5542 			    l_return_value           => l_return_value
5543 			   );
5544 	       IF l_return_value = FALSE THEN
5545                   p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'N';
5546 		  RAISE fnd_api.g_exc_error;
5547                ELSE
5548                   p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'Y';
5549 	       END IF;
5550 	    END IF;
5551          END IF;
5552          --
5553 --validation for the instance status id
5554     l_valid_flag := 'Y';
5555     l_exists_flag := 'N';
5556     IF ((p_instance_rec.instance_status_id IS NULL) OR
5557         (p_instance_rec.instance_status_id = FND_API.G_MISS_NUM)) THEN
5558         l_instance_status := FND_PROFILE.VALUE('CSI_DEFAULT_INSTANCE_STATUS');
5559         BEGIN
5560             SELECT instance_status_id,terminated_flag
5561             INTO   p_instance_rec.instance_status_id
5562                   ,l_terminated_flag
5563             FROM   csi_instance_statuses
5564             WHERE  name = l_instance_status;
5565             --
5566             IF nvl(l_terminated_flag,'N') = 'Y' THEN
5567                FND_MESSAGE.SET_NAME('CSI','CSI_API_STATUS_NOT_ALLOWED');
5568                FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5569                FND_MSG_PUB.Add;
5570                RAISE FND_API.G_EXC_ERROR;
5571             END IF;
5572         EXCEPTION
5573             WHEN NO_DATA_FOUND THEN
5574                 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_STATUS_ID');
5575                 FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5576                 FND_MSG_PUB.Add;
5577                 RAISE FND_API.G_EXC_ERROR;
5578         END;
5579      ELSIF (p_instance_rec.instance_status_id = 1) THEN
5580            FND_MESSAGE.SET_NAME('CSI','CSI_API_STATUS_NOT_ALLOWED');
5581            FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5582            FND_MSG_PUB.Add;
5583            RAISE FND_API.G_EXC_ERROR;
5584     ELSE
5585        IF p_generic_id_tbl.count > 0 THEN
5586           For gen_count in p_generic_id_tbl.FIRST .. p_generic_id_tbl.LAST
5587           LOOP
5588              IF p_generic_id_tbl(gen_count).generic_id = p_instance_rec.instance_status_id AND
5589                 p_generic_id_tbl(gen_count).id_type = 'INS_STATUS' THEN
5590                 l_valid_flag := p_generic_id_tbl(gen_count).valid_flag;
5591                 l_terminated_flag := p_generic_id_tbl(gen_count).terminated_flag;
5592                 l_exists_flag := 'Y';
5593                 exit;
5594              END IF;
5595           END LOOP;
5596           --
5597           IF l_valid_flag <> 'Y' THEN
5598              FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_STATUS_ID');
5599              FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5600              FND_MSG_PUB.Add;
5601              RAISE FND_API.G_EXC_ERROR;
5602           END IF;
5603           --
5604           IF nvl(l_terminated_flag,'N') = 'Y' THEN
5605              FND_MESSAGE.SET_NAME('CSI','CSI_API_STATUS_NOT_ALLOWED');
5606              FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5607              FND_MSG_PUB.Add;
5608              RAISE FND_API.G_EXC_ERROR;
5609           END IF;
5610        END IF;
5611        --
5612        IF l_exists_flag <> 'Y' THEN
5613           p_ins_count_rec.generic_count := p_ins_count_rec.generic_count + 1;
5614           p_generic_id_tbl(p_ins_count_rec.generic_count).generic_id := p_instance_rec.instance_status_id;
5615           p_generic_id_tbl(p_ins_count_rec.generic_count).id_type := 'INS_STATUS';
5616           Begin
5617              select terminated_flag
5618              into l_terminated_flag
5619              from CSI_INSTANCE_STATUSES
5620              where instance_status_id = p_instance_rec.instance_status_id;
5621              --
5622              p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'Y';
5623              p_generic_id_tbl(p_ins_count_rec.generic_count).terminated_flag := l_terminated_flag;
5624              --
5625              IF nvl(l_terminated_flag,'N') = 'Y' THEN
5626                 FND_MESSAGE.SET_NAME('CSI','CSI_API_STATUS_NOT_ALLOWED');
5627                 FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5628                 FND_MSG_PUB.Add;
5629                 RAISE FND_API.G_EXC_ERROR;
5630              END IF;
5631           Exception
5632              when others then
5633                 p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'N';
5634                 p_generic_id_tbl(p_ins_count_rec.generic_count).terminated_flag := NULL;
5635                 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_STATUS_ID');
5636                 FND_MESSAGE.SET_TOKEN('INSTANCE_STATUS',p_instance_rec.instance_status_id);
5637                 FND_MSG_PUB.Add;
5638                 RAISE FND_API.G_EXC_ERROR;
5639           End;
5640        END IF;
5641     END IF;
5642 
5643 --validation for the system id
5644          l_valid_flag := 'Y';
5645          l_exists_flag := 'N';
5646          IF p_instance_rec.system_id is not null AND
5647             p_instance_rec.system_id <> FND_API.G_MISS_NUM THEN
5648             IF p_generic_id_tbl.count > 0 then
5649                For gen_count in p_generic_id_tbl.FIRST .. p_generic_id_tbl.LAST
5650                LOOP
5651                   IF p_generic_id_tbl(gen_count).generic_id = p_instance_rec.system_id AND
5652                      p_generic_id_tbl(gen_count).id_type = 'SYSTEM' then
5653                      l_valid_flag := p_generic_id_tbl(gen_count).valid_flag;
5654                      l_exists_flag := 'Y';
5655                      exit;
5656                   END IF;
5657                END LOOP;
5658                --
5659                IF l_valid_flag <> 'Y' THEN
5660                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_SYSTEM_ID');
5661                   FND_MESSAGE.SET_TOKEN('SYSTEM_ID',p_instance_rec.system_id);
5662                   FND_MSG_PUB.Add;
5663                   RAISE fnd_api.g_exc_error;
5664                END IF;
5665             END IF;
5666             --
5667             IF l_exists_flag <> 'Y' THEN
5668                p_ins_count_rec.generic_count := p_ins_count_rec.generic_count + 1;
5669                p_generic_id_tbl(p_ins_count_rec.generic_count).generic_id := p_instance_rec.system_id;
5670                p_generic_id_tbl(p_ins_count_rec.generic_count).id_type := 'SYSTEM';
5671                IF NOT csi_Item_Instance_Vld_pvt.Is_Valid_System_id(
5672                             p_instance_rec.system_id) THEN
5673                   p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'N';
5674                   RAISE fnd_api.g_exc_error;
5675                ELSE
5676                   p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'Y';
5677                END IF;
5678             END IF;
5679          END IF;
5680 
5681 --validation for the instance type
5682          l_valid_flag := 'Y';
5683          l_exists_flag := 'N';
5684          IF ((p_instance_rec.instance_type_code IS NOT NULL) AND
5685              (p_instance_rec.instance_type_code <> FND_API.G_MISS_CHAR)) THEN
5686             IF p_lookup_tbl.count > 0 then
5687                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
5688                LOOP
5689                   IF p_lookup_tbl(lookup_count).lookup_type = 'INSTANCE_TYPE' AND
5690                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.instance_type_code THEN
5691                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
5692                      l_exists_flag := 'Y';
5693                      exit;
5694                   END IF;
5695                END LOOP;
5696                --
5697                IF l_valid_flag <> 'Y' THEN
5698                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_TYPE');
5699                   FND_MESSAGE.SET_TOKEN('INSTANCE_TYPE_CODE',p_instance_rec.instance_type_code);
5700                   FND_MSG_PUB.Add;
5701                   RAISE fnd_api.g_exc_error;
5702                END IF;
5703             END IF;
5704             --
5705             IF l_exists_flag <> 'Y' THEN
5706                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
5707                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'INSTANCE_TYPE';
5708                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.instance_type_code;
5709                IF NOT csi_Item_Instance_Vld_pvt.Is_Valid_Instance_Type(
5710                          p_instance_rec.instance_type_code) THEN
5711                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
5712                   RAISE fnd_api.g_exc_error;
5713                ELSE
5714                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
5715                END IF;
5716             END IF;
5717          END IF;
5718 --validation for the instance usage code
5719          l_valid_flag := 'Y';
5720          l_exists_flag := 'N';
5721          IF ((p_instance_rec.instance_usage_code IS NOT NULL) AND
5722              (p_instance_rec.instance_usage_code <> FND_API.G_MISS_CHAR)) THEN
5723             IF p_lookup_tbl.count > 0 THEN
5724                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
5725                LOOP
5726                   IF p_lookup_tbl(lookup_count).lookup_type = 'INSTANCE_USAGE' AND
5727                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.instance_usage_code THEN
5728                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
5729                      l_exists_flag := 'Y';
5730                      exit;
5731                   END IF;
5732                End Loop;
5733                --
5734                if l_valid_flag <> 'Y' then
5735                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_USAGE_CODE');
5736                   FND_MESSAGE.SET_TOKEN('INSTANCE_USAGE_CODE',p_instance_rec.instance_usage_code);
5737                   FND_MSG_PUB.Add;
5738                   RAISE fnd_api.g_exc_error;
5739                end if;
5740             End if;
5741             --
5742             IF l_exists_flag <> 'Y' THEN
5743                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
5744                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'INSTANCE_USAGE';
5745                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.instance_usage_code;
5746                IF NOT csi_Item_Instance_Vld_pvt.Valid_Inst_Usage_Code(
5747                          p_instance_rec.instance_usage_code) THEN
5748                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
5749                   RAISE fnd_api.g_exc_error;
5750                ELSE
5751                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
5752                END IF;
5753             END IF;
5754          END IF;
5755    -- Addition of columns for FA Integration
5756    --validation for the operational status
5757          l_valid_flag := 'Y';
5758          l_exists_flag := 'N';
5759          IF ((p_instance_rec.operational_status_code IS NOT NULL) AND
5760              (p_instance_rec.operational_status_code <> FND_API.G_MISS_CHAR)) THEN
5761             IF p_lookup_tbl.count > 0 THEN
5762                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
5763                LOOP
5764                   IF p_lookup_tbl(lookup_count).lookup_type = 'OPERATIONAL_STATUS' AND
5765                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.operational_status_code
5766                   THEN
5767                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
5768                      l_exists_flag := 'Y';
5769                      exit;
5770                   END IF;
5771                End Loop;
5772                --
5773                if l_valid_flag <> 'Y' then
5774                   FND_MESSAGE.SET_NAME('CSI','CSI_OPERATIONAL_STATUS_CODE');
5775                   FND_MESSAGE.SET_TOKEN('OPERATIONAL_STATUS_CODE',p_instance_rec.operational_status_code);
5776                   FND_MSG_PUB.Add;
5777                   RAISE fnd_api.g_exc_error;
5778                end if;
5779             End if;
5780             --
5781             IF l_exists_flag <> 'Y' THEN
5782                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
5783                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'OPERATIONAL_STATUS';
5784                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.operational_status_code;
5785                IF NOT csi_Item_Instance_Vld_pvt.Valid_operational_status(
5786                          p_instance_rec.operational_status_code) THEN
5787                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
5788                   RAISE fnd_api.g_exc_error;
5789                ELSE
5790                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
5791                END IF;
5792             END IF;
5793          ELSE
5794           IF ((p_instance_rec.operational_status_code IS NULL) OR
5795               (p_instance_rec.operational_status_code = FND_API.G_MISS_CHAR))
5796           THEN
5797                p_instance_rec.operational_status_code:='NOT_USED';
5798           END IF;
5799          END IF;
5800 
5801 
5802  -- Following code has been added for operational_status_code
5803  -- If owner is Internal then
5804 
5805 
5806          IF l_owner = l_int_party_id
5807          THEN
5808             IF    p_instance_rec.location_type_code IN ('WIP','IN_TRANSIT','VENDOR_SITE')
5809               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE')
5810             THEN
5811                   p_instance_rec.operational_status_code := 'NOT_USED';
5812             ELSIF p_instance_rec.location_type_code IN ('PROJECT')
5813               AND p_instance_rec.operational_status_code ='IN_SERVICE'
5814              THEN
5815                   p_instance_rec.operational_status_code := 'NOT_USED';
5816             ELSIF p_instance_rec.location_type_code IN ('INVENTORY','HZ_LOCATIONS')
5817               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
5818              THEN
5819                   p_instance_rec.operational_status_code := 'NOT_USED';
5820             END IF;
5821          ELSE -- Owner is an external party
5822             IF    p_instance_rec.location_type_code IN ('WIP','IN_TRANSIT','VENDOR_SITE')
5823               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE')
5824             THEN
5825                   p_instance_rec.operational_status_code := 'NOT_USED';
5826             ELSIF p_instance_rec.location_type_code ='PROJECT'
5827               AND p_instance_rec.operational_status_code ='IN_SERVICE'
5828              THEN
5829                   p_instance_rec.operational_status_code := 'NOT_USED';
5830             ELSIF p_instance_rec.location_type_code IN ('INVENTORY','HZ_LOCATIONS')
5831               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
5832              THEN
5833                   p_instance_rec.operational_status_code := 'NOT_USED';
5834             END IF;
5835          END IF;
5836 
5837 
5838          IF ((p_instance_rec.purchase_currency_code IS NOT NULL) AND
5839              (p_instance_rec.purchase_currency_code <> FND_API.G_MISS_CHAR)
5840              )
5841          THEN
5842            p_instance_rec.purchase_currency_code := UPPER(p_instance_rec.purchase_currency_code);
5843            IF NOT csi_item_instance_vld_pvt.valid_currency_code
5844                  (p_currency_code => p_instance_rec.purchase_currency_code)
5845            THEN
5846               RAISE fnd_api.g_exc_error;
5847            END IF;
5848          END IF;
5849 
5850          IF ((p_instance_rec.payables_currency_code IS NOT NULL) AND
5851              (p_instance_rec.payables_currency_code <> FND_API.G_MISS_CHAR)
5852              )
5853          THEN
5854            p_instance_rec.payables_currency_code := UPPER(p_instance_rec.payables_currency_code);
5855            IF NOT csi_item_instance_vld_pvt.valid_currency_code
5856                  (p_currency_code => p_instance_rec.payables_currency_code)
5857            THEN
5858               RAISE fnd_api.g_exc_error;
5859            END IF;
5860          END IF;
5861 
5862          IF ((p_instance_rec.sales_currency_code IS NOT NULL) AND
5863              (p_instance_rec.sales_currency_code <> FND_API.G_MISS_CHAR)
5864              )
5865          THEN
5866            p_instance_rec.sales_currency_code := UPPER(p_instance_rec.sales_currency_code);
5867            IF NOT csi_item_instance_vld_pvt.valid_currency_code
5868                  (p_currency_code => p_instance_rec.sales_currency_code)
5869            THEN
5870               RAISE fnd_api.g_exc_error;
5871            END IF;
5872          END IF;
5873 
5874          IF (
5875              ((p_instance_rec.purchase_currency_code IS NOT NULL AND
5876                p_instance_rec.purchase_currency_code <> FND_API.G_MISS_CHAR) AND
5877               (p_instance_rec.purchase_unit_price IS NULL OR
5878                p_instance_rec.purchase_unit_price = FND_API.G_MISS_NUM))
5879                OR
5880              ((p_instance_rec.purchase_currency_code IS NULL OR
5881                p_instance_rec.purchase_currency_code = FND_API.G_MISS_CHAR) AND
5882               (p_instance_rec.purchase_unit_price IS NOT NULL AND
5883                p_instance_rec.purchase_unit_price <> FND_API.G_MISS_NUM))
5884                OR
5885              ((p_instance_rec.payables_currency_code IS NOT NULL AND
5886                p_instance_rec.payables_currency_code <> FND_API.G_MISS_CHAR) AND
5887               (p_instance_rec.payables_unit_price IS NULL OR
5888                p_instance_rec.payables_unit_price = FND_API.G_MISS_NUM))
5889                OR
5890              ((p_instance_rec.payables_currency_code IS NULL OR
5891                p_instance_rec.payables_currency_code = FND_API.G_MISS_CHAR) AND
5892               (p_instance_rec.payables_unit_price IS NOT NULL AND
5893                p_instance_rec.payables_unit_price <> FND_API.G_MISS_NUM))
5894                OR
5895              ((p_instance_rec.sales_currency_code IS NOT NULL AND
5896                p_instance_rec.sales_currency_code <> FND_API.G_MISS_CHAR) AND
5897               (p_instance_rec.sales_unit_price IS NULL OR
5898                p_instance_rec.sales_unit_price = FND_API.G_MISS_NUM))
5899                OR
5900              ((p_instance_rec.sales_currency_code IS NULL OR
5901                p_instance_rec.sales_currency_code = FND_API.G_MISS_CHAR) AND
5902               (p_instance_rec.sales_unit_price IS NOT NULL AND
5903                p_instance_rec.sales_unit_price <> FND_API.G_MISS_NUM))
5904             )
5905          THEN
5906              FND_MESSAGE.SET_NAME('CSI','CSI_NO_PRICE_OR_CODE');
5907              FND_MSG_PUB.Add;
5908              RAISE fnd_api.g_exc_error;
5909          END IF;
5910        -- End addition of columns for FA Integration
5911 
5912 --validation for customer view flag
5913     IF ((p_instance_rec.CUSTOMER_VIEW_FLAG IS NULL) OR
5914         (p_instance_rec.CUSTOMER_VIEW_FLAG  = FND_API.G_MISS_CHAR)) THEN
5915             p_instance_rec.CUSTOMER_VIEW_FLAG  := 'Y';
5916     END IF;
5917 
5918 --validation for merchant view flag
5919     IF ((p_instance_rec.MERCHANT_VIEW_FLAG IS NULL) OR
5920         (p_instance_rec.MERCHANT_VIEW_FLAG  = FND_API.G_MISS_CHAR)) THEN
5921             p_instance_rec.MERCHANT_VIEW_FLAG  := 'N';
5922     END IF;
5923 
5924 --validation for sellable flag
5925     IF ((p_instance_rec.SELLABLE_FLAG IS NULL) OR
5926         (p_instance_rec.SELLABLE_FLAG  = FND_API.G_MISS_CHAR)) THEN
5927             p_instance_rec.SELLABLE_FLAG  := 'Y';
5928     END IF;
5929 
5930 -- Begin Add Code for Siebel Genesis Project
5931 --validation for source_code
5932     IF ((p_instance_rec.SOURCE_CODE IS NULL) OR
5933         (p_instance_rec.SOURCE_CODE = FND_API.G_MISS_CHAR)) THEN
5934       p_instance_rec.SOURCE_CODE := 'ORCL';
5935     END IF;
5936 -- End Add Code for Siebel Genesis Project
5937 
5938 -- Validation of Creation_completion_flag
5939         IF ((p_instance_rec.instance_id IS NOT NULL)
5940            AND (p_instance_rec.inventory_item_id IS NOT NULL)
5941            AND (p_instance_rec.inv_master_organization_id IS NOT NULL)
5942           -- AND (((l_serial_control IN (2,5,6))
5943              AND (((csi_Item_Instance_Vld_pvt.Is_treated_serialized
5944                                       ( p_serial_control_code => l_serial_control
5945                                        ,p_location_type_code  => p_instance_rec.location_type_code
5946                                        ,p_transaction_type_id => p_txn_rec.transaction_type_id
5947                                        ))     --Added by sk on 09/13/01
5948                    AND ((p_instance_rec.serial_number IS NOT NULL)
5949                           AND (p_instance_rec.serial_number <> FND_API.G_MISS_CHAR)))
5950                 -- OR     (l_serial_control NOT IN (2,5,6)))
5951                    OR ( NOT (csi_Item_Instance_Vld_pvt.Is_treated_serialized
5952                                                   ( p_serial_control_code => l_serial_control
5953                                                    ,p_location_type_code  => p_instance_rec.location_type_code
5954                                                    ,p_transaction_type_id => p_txn_rec.transaction_type_id
5955                                                    )) ) ) --Added by sk on 09/13/01
5956            AND (((l_lot_control = 2)
5957                    AND ((p_instance_rec.lot_number IS NOT NULL)
5958                           AND (p_instance_rec.lot_number <> FND_API.G_MISS_CHAR)))
5959                    OR     (l_lot_control <> 2))
5960            AND (p_instance_rec.instance_status_id IS NOT NULL)
5961            AND (((l_rev_control = 2)
5962                    AND ((p_instance_rec.inventory_revision IS NOT NULL)
5963                           AND (p_instance_rec.inventory_revision <> FND_API.G_MISS_CHAR)))
5964                    OR     (l_rev_control <> 2))
5965            AND ((p_instance_rec.location_type_code IS NOT NULL) AND
5966                 (p_instance_rec.location_type_code <> FND_API.G_MISS_CHAR)))
5967         THEN
5968                p_instance_rec.creation_complete_flag := 'Y';
5969         ELSE
5970                p_instance_rec.creation_complete_flag := 'N';
5971         END IF;
5972 
5973         IF    p_instance_rec.vld_organization_id IS NOT NULL
5974          AND  p_instance_rec.vld_organization_id <> fnd_api.g_miss_num
5975         THEN
5976               l_last_vld_organization_id := p_instance_rec.vld_organization_id;
5977         ELSE
5978               l_last_vld_organization_id := p_instance_rec.inv_master_organization_id;
5979         END IF;
5980 
5981         -- Validation for install location
5982         -- Start addition by sk on 02/06/02 for bug 2213922
5983         IF p_instance_rec.install_location_type_code IS NOT NULL AND
5984            p_instance_rec.install_location_type_code <> fnd_api.g_miss_char
5985         THEN
5986            IF p_instance_rec.install_location_type_code = 'HZ_PARTY_SITES' OR
5987               p_instance_rec.install_location_type_code = 'HZ_LOCATIONS' OR
5988               p_instance_rec.install_location_type_code = 'VENDOR_SITE' OR
5989               p_instance_rec.install_location_type_code = 'INTERNAL_SITE' OR --4926773
5990 	      p_instance_rec.install_location_type_code = 'HR_LOCATIONS'
5991            THEN
5992               IF p_instance_rec.install_location_id IS NULL OR
5993                  p_instance_rec.install_location_id = FND_API.G_MISS_NUM THEN
5994                  FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
5995                  FND_MSG_PUB.ADD;
5996                  RAISE fnd_api.g_exc_error;
5997               END IF;
5998               --
5999               l_exists_flag := 'N';
6000               l_valid_flag := 'Y';
6001               IF p_location_tbl.count > 0 THEN
6002                  For loc_row in p_location_tbl.FIRST .. p_location_tbl.LAST
6003                  Loop
6004                     IF p_location_tbl(loc_row).location_type_code = p_instance_rec.install_location_type_code
6005                        AND p_location_tbl(loc_row).location_id = p_instance_rec.install_location_id THEN
6006                        l_exists_flag := 'Y';
6007                        l_valid_flag := p_location_tbl(loc_row).valid_flag;
6008                        EXIT;
6009                     END IF;
6010                  End Loop;
6011                  --
6012                  IF l_valid_flag <> 'Y' THEN
6013                     FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
6014                     FND_MSG_PUB.ADD;
6015                     RAISE fnd_api.g_exc_error;
6016                  END IF;
6017               END IF;
6018               --
6019                IF l_exists_flag <> 'Y' THEN
6020                   p_ins_count_rec.location_count := p_ins_count_rec.location_count + 1;
6021                   p_location_tbl(p_ins_count_rec.location_count).location_type_code :=
6022                                                      p_instance_rec.install_location_type_code;
6023                   p_location_tbl(p_ins_count_rec.location_count).location_id :=
6024                                                      p_instance_rec.install_location_id;
6025                   IF csi_item_instance_vld_pvt.Is_Valid_Location_ID
6026                                        (
6027                                          p_location_source_table => p_instance_rec.install_location_type_code
6028                                         ,p_location_id => p_instance_rec.install_location_id
6029                                        ) THEN
6030                      p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'Y';
6031                   ELSE
6032                      p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'N';
6033                      RAISE fnd_api.g_exc_error;
6034                   END IF;
6035                END IF;
6036            ELSE
6037               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
6038               FND_MSG_PUB.Add;
6039               RAISE FND_API.G_EXC_ERROR;
6040            END IF;
6041         END IF;
6042         csi_gen_utility_pvt.put_line('Before Insert row...');
6043         -- End addition by sk on 02/06/02 for bug 2213922
6044     IF p_called_from_grp <> fnd_api.g_true THEN
6045 -- Create a row in csi_item_instances
6046       CSI_ITEM_INSTANCES_PKG.Insert_Row
6047        (  px_INSTANCE_ID                    => p_instance_rec.INSTANCE_ID
6048           ,p_INSTANCE_NUMBER                => p_instance_rec.INSTANCE_NUMBER
6049           ,p_EXTERNAL_REFERENCE             => p_instance_rec.EXTERNAL_REFERENCE
6050           ,p_INVENTORY_ITEM_ID              => p_instance_rec.INVENTORY_ITEM_ID
6051           ,p_INVENTORY_REVISION             => p_instance_rec.INVENTORY_REVISION
6052           ,p_INV_MASTER_ORGANIZATION_ID     => p_instance_rec.INV_MASTER_ORGANIZATION_ID
6053           ,p_SERIAL_NUMBER                  => p_instance_rec.SERIAL_NUMBER
6054           ,p_MFG_SERIAL_NUMBER_FLAG         => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
6055           ,p_LOT_NUMBER                     => p_instance_rec.LOT_NUMBER
6056           ,p_QUANTITY                       => p_instance_rec.QUANTITY
6057           ,p_UNIT_OF_MEASURE                => p_instance_rec.UNIT_OF_MEASURE
6058           ,p_ACCOUNTING_CLASS_CODE          => p_instance_rec.ACCOUNTING_CLASS_CODE
6059           ,p_INSTANCE_CONDITION_ID          => p_instance_rec.INSTANCE_CONDITION_ID
6060           ,p_INSTANCE_STATUS_ID             => p_instance_rec.INSTANCE_STATUS_ID
6061           ,p_CUSTOMER_VIEW_FLAG             => p_instance_rec.CUSTOMER_VIEW_FLAG
6062           ,p_MERCHANT_VIEW_FLAG             => p_instance_rec.MERCHANT_VIEW_FLAG
6063           ,p_SELLABLE_FLAG                  => p_instance_rec.SELLABLE_FLAG
6064           ,p_SYSTEM_ID                      => p_instance_rec.SYSTEM_ID
6065           ,p_INSTANCE_TYPE_CODE             => p_instance_rec.INSTANCE_TYPE_CODE
6066           ,p_ACTIVE_START_DATE              => p_instance_rec.ACTIVE_START_DATE
6067           ,p_ACTIVE_END_DATE                => p_instance_rec.ACTIVE_END_DATE
6068           ,p_LOCATION_TYPE_CODE             => p_instance_rec.LOCATION_TYPE_CODE
6069           ,p_LOCATION_ID                    => p_instance_rec.LOCATION_ID
6070           ,p_INV_ORGANIZATION_ID            => p_instance_rec.INV_ORGANIZATION_ID
6071           ,p_INV_SUBINVENTORY_NAME          => p_instance_rec.INV_SUBINVENTORY_NAME
6072           ,p_INV_LOCATOR_ID                 => p_instance_rec.INV_LOCATOR_ID
6073           ,p_PA_PROJECT_ID                  => p_instance_rec.PA_PROJECT_ID
6074           ,p_PA_PROJECT_TASK_ID             => p_instance_rec.PA_PROJECT_TASK_ID
6075           ,p_IN_TRANSIT_ORDER_LINE_ID       => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
6076           ,p_WIP_JOB_ID                     => p_instance_rec.WIP_JOB_ID
6077           ,p_PO_ORDER_LINE_ID               => p_instance_rec.PO_ORDER_LINE_ID
6078           ,p_LAST_OE_ORDER_LINE_ID          => p_instance_rec.LAST_OE_ORDER_LINE_ID
6079           ,p_LAST_OE_RMA_LINE_ID            => p_instance_rec.LAST_OE_RMA_LINE_ID
6080           ,p_LAST_PO_PO_LINE_ID             => p_instance_rec.LAST_PO_PO_LINE_ID
6081           ,p_LAST_OE_PO_NUMBER              => p_instance_rec.LAST_OE_PO_NUMBER
6082           ,p_LAST_WIP_JOB_ID                => p_instance_rec.LAST_WIP_JOB_ID
6083           ,p_LAST_PA_PROJECT_ID             => p_instance_rec.LAST_PA_PROJECT_ID
6084           ,p_LAST_PA_TASK_ID                => p_instance_rec.LAST_PA_TASK_ID
6085           ,p_LAST_OE_AGREEMENT_ID           => p_instance_rec.LAST_OE_AGREEMENT_ID
6086           ,p_INSTALL_DATE                   => p_instance_rec.INSTALL_DATE
6087           ,p_MANUALLY_CREATED_FLAG          => p_instance_rec.MANUALLY_CREATED_FLAG
6088           ,p_RETURN_BY_DATE                 => p_instance_rec.RETURN_BY_DATE
6089           ,p_ACTUAL_RETURN_DATE             => p_instance_rec.ACTUAL_RETURN_DATE
6090           ,p_CREATION_COMPLETE_FLAG         => p_instance_rec.CREATION_COMPLETE_FLAG
6091           ,p_COMPLETENESS_FLAG              => p_instance_rec.COMPLETENESS_FLAG
6092           ,p_CONTEXT                        => p_instance_rec.CONTEXT
6093           ,p_ATTRIBUTE1                     => p_instance_rec.ATTRIBUTE1
6094           ,p_ATTRIBUTE2                     => p_instance_rec.ATTRIBUTE2
6095           ,p_ATTRIBUTE3                     => p_instance_rec.ATTRIBUTE3
6096           ,p_ATTRIBUTE4                     => p_instance_rec.ATTRIBUTE4
6097           ,p_ATTRIBUTE5                     => p_instance_rec.ATTRIBUTE5
6098           ,p_ATTRIBUTE6                     => p_instance_rec.ATTRIBUTE6
6099           ,p_ATTRIBUTE7                     => p_instance_rec.ATTRIBUTE7
6100           ,p_ATTRIBUTE8                     => p_instance_rec.ATTRIBUTE8
6101           ,p_ATTRIBUTE9                     => p_instance_rec.ATTRIBUTE9
6102           ,p_ATTRIBUTE10                    => p_instance_rec.ATTRIBUTE10
6103           ,p_ATTRIBUTE11                    => p_instance_rec.ATTRIBUTE11
6104           ,p_ATTRIBUTE12                    => p_instance_rec.ATTRIBUTE12
6105           ,p_ATTRIBUTE13                    => p_instance_rec.ATTRIBUTE13
6106           ,p_ATTRIBUTE14                    => p_instance_rec.ATTRIBUTE14
6107           ,p_ATTRIBUTE15                    => p_instance_rec.ATTRIBUTE15
6108           ,p_CREATED_BY                     => FND_GLOBAL.USER_ID
6109           ,p_CREATION_DATE                  => SYSDATE
6110           ,p_LAST_UPDATED_BY                => FND_GLOBAL.USER_ID
6111           ,p_LAST_UPDATE_DATE               => SYSDATE
6112           ,p_LAST_UPDATE_LOGIN              => FND_GLOBAL.CONC_LOGIN_ID
6113           ,p_OBJECT_VERSION_NUMBER          => 1
6114           ,p_LAST_TXN_LINE_DETAIL_ID        => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
6115           ,p_INSTALL_LOCATION_TYPE_CODE     => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
6116           ,p_INSTALL_LOCATION_ID            => p_instance_rec.INSTALL_LOCATION_ID
6117           ,p_INSTANCE_USAGE_CODE            => p_instance_rec.INSTANCE_USAGE_CODE
6118           ,p_last_vld_organization_id       => l_last_vld_organization_id
6119           ,p_CONFIG_INST_HDR_ID             => p_instance_rec.CONFIG_INST_HDR_ID
6120           ,p_CONFIG_INST_REV_NUM            => p_instance_rec.CONFIG_INST_REV_NUM
6121           ,p_CONFIG_INST_ITEM_ID            => p_instance_rec.CONFIG_INST_ITEM_ID
6122           ,p_CONFIG_VALID_STATUS            => p_instance_rec.CONFIG_VALID_STATUS
6123           ,p_INSTANCE_DESCRIPTION           => p_instance_rec.INSTANCE_DESCRIPTION
6124           ,p_REQUEST_ID                     => p_instance_rec.REQUEST_ID
6125           ,p_PROGRAM_APPLICATION_ID         => p_instance_rec.PROGRAM_APPLICATION_ID
6126           ,p_PROGRAM_ID                     => p_instance_rec.PROGRAM_ID
6127           ,p_PROGRAM_UPDATE_DATE            => p_instance_rec.PROGRAM_UPDATE_DATE
6128 	  --start of parameters addition for eam integration--
6129           ,p_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
6130           ,p_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
6131           ,p_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
6132           ,p_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
6133           ,p_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
6134           ,p_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
6135           ,p_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
6136           ,p_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
6137           ,p_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
6138           ,p_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
6139           ,p_SUPPLIER_WARRANTY_EXP_DATE     => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
6140           ,p_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
6141           ,p_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
6142           ,p_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
6143           ,p_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
6144           ,p_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
6145           ,p_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
6146           ,p_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
6147           ,p_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
6148           ,p_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
6149           ,p_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
6150           ,p_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
6151           ,p_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
6152           ,p_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
6153           ,p_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
6154           ,p_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
6155 	  --end of parameters addition for eam integration--
6156    -- Addition of columns for FA Integration
6157           ,p_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
6158           ,p_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
6159           ,p_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
6160           ,p_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
6161           ,p_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
6162           ,p_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
6163           ,p_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
6164     -- End addition of columns for FA Integration
6165           ,p_SOURCE_CODE                    => p_instance_rec.SOURCE_CODE -- Added Code for Siebel Genesis Project
6166 	  );
6167 
6168 
6169 
6170     IF NVL(l_call_counters,'N') = 'Y' AND
6171        NVL(p_instance_rec.network_asset_flag,'N') <> 'Y' -- Added for 5219534
6172     THEN
6173        IF p_instance_rec.quantity = 1 THEN
6174           -- calling the Counters API to associate counters to an instance
6175           -- Added to restrict the counter instantiation for an item in 'INVENTORY',
6176           -- by rtalluri for the enh. 2308703
6177 	  IF NOT((l_serial_control IN (1,6)) AND
6178 		 (p_instance_rec.location_type_code = 'INVENTORY')) THEN
6179 
6180       -- Since the replacement API CSI_COUNTER_TEMPLATE_PUB does not
6181       -- for  CS_Counters_PUB.Ctr_Grp_Template_Exists
6182       -- does not provide a function Ctr_Grp_Template_Exists,
6183       -- Hence writing the following code...
6184         --l_counter_group_id := NULL;
6185         BEGIN
6186           SELECT count(*)
6187             INTO l_counter_group_id
6188             FROM csi_ctr_item_associations
6189            WHERE inventory_item_id = p_instance_rec.inventory_item_id
6190              AND ROWNUM = 1;
6191         EXCEPTION
6192           WHEN NO_DATA_FOUND THEN
6193            NULL;
6194            -- Too many rows exception will not arise
6195            -- as ctr API will make sure there will be only one record in
6196            -- csi_ctr_item_associations with a particular inv_id.
6197         END;
6198        -- R12 Changes ...
6199 	   /* IF CS_Counters_PUB.Ctr_Grp_Template_Exists(p_instance_rec.inventory_item_id) THEN
6200 	       CS_Counters_PUB.AutoInstantiate_Counters */
6201 	    IF l_counter_group_id <> 0
6202         THEN
6203 	      -- CS_Counters_PUB.AutoInstantiate_Counters
6204          csi_counter_template_pub.autoinstantiate_counters
6205          ( p_api_version                => 1.0
6206           ,p_init_msg_list              => FND_API.G_FALSE
6207           ,p_commit                     => FND_API.G_FALSE
6208           ,x_return_status              => x_return_status
6209           ,x_msg_count                  => x_msg_count
6210           ,x_msg_data                   => x_msg_data
6211           ,p_source_object_id_template  => p_instance_rec.inventory_item_id
6212           ,p_source_object_id_instance  => p_instance_rec.instance_id
6213           ,x_ctr_id_template            => l_ctr_id_template
6214           ,x_ctr_id_instance            => l_ctr_id_instance
6215           ,x_ctr_grp_id_template        => l_ctr_grp_id_template
6216           ,x_ctr_grp_id_instance        => l_ctr_grp_id_instance
6217           ,p_organization_id            => l_last_vld_organization_id -- srramakr. should pass the organization_id
6218           );
6219 
6220         IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
6221         THEN
6222              FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_COUNTER_ASSOCIATION');
6223              FND_MESSAGE.SET_TOKEN('COUNTER','CSI_COUNTER_TEMPLATE_PUB.AUTOINSTANTIATE_COUNTERS');
6224              FND_MSG_PUB.Add;
6225              RAISE FND_API.G_EXC_ERROR;
6226         END IF;
6227 	  -- srramakr Bug # 2255391. In CTO, since the configured item is created as a part of Sales Order
6228 	  -- processing, there is no way a counter gets attached to this new item.
6229           -- In order to attach the counter, we look at the base model and use its counter group
6230           -- for the configured item. After attaching it, we call the Autoinstantiate API.
6231 	   ELSE
6232 	     l_base_item_id := null;
6233 	     Begin
6234 		select base_item_id
6235 		into l_base_item_id
6236 		from MTL_SYSTEM_ITEMS_B
6237 		where inventory_item_id = p_instance_rec.inventory_item_id
6238 		and   organization_id = l_last_vld_organization_id;
6239 	     Exception
6240 		when no_data_found then
6241 		   null;
6242 		when others then
6243 		   null;
6244 	     End;
6245 	     --
6246 	     IF l_base_item_id is not null THEN
6247 		-- call the Counter Grp association API for the Configured Item
6248 		   For ctr_rec in CTR_GROUP(l_base_item_id)
6249 		   Loop
6250 		      Begin
6251 	       IF(ctr_rec.group_id is not null) then
6252                 l_ctr_item_associations_rec.group_id          := ctr_rec.group_id;
6253 	       END IF;
6254 	       IF(ctr_rec.counter_id is not null) then
6255                 l_ctr_item_associations_rec.counter_id          := ctr_rec.counter_id;
6256 	       END IF;
6257                l_ctr_item_associations_rec.inventory_item_id := p_instance_rec.inventory_item_id;
6258 	       IF(ctr_rec.associated_to_group = 'Y') THEN
6259                 l_ctr_item_associations_rec.associated_to_group := ctr_rec.associated_to_group;-- Added for bug 9142776
6260 	       END IF;
6261 
6262 			--CS_Counters_PUB.Create_Ctr_Association
6263                csi_counter_template_pub.create_item_association
6264                (p_api_version               => 1.0
6265                ,p_commit                    => fnd_api.g_false
6266                ,p_init_msg_list             => fnd_api.g_false
6267                ,p_validation_level          => p_validation_level
6268                ,p_ctr_item_associations_rec => l_ctr_item_associations_rec
6269                ,x_return_status             => x_return_status
6270                ,x_msg_count                 => x_msg_count
6271                ,x_msg_data                  => x_msg_data
6272                );
6273 	       l_counter_group_id    := 1; -- Added for bug 9142776 -- As the assotiation for the configured item and this group ID has been created now
6274 		   End;
6275 		End Loop;
6276 		   --
6277 		--IF CS_Counters_PUB.Ctr_Grp_Template_Exists(p_instance_rec.inventory_item_id) THEN
6278           IF l_counter_group_id <> 0 THEN
6279 
6280           csi_counter_template_pub.autoinstantiate_counters
6281           ( p_api_version                => 1.0
6282            ,p_init_msg_list              => FND_API.G_FALSE
6283            ,p_commit                     => FND_API.G_FALSE
6284            ,x_return_status              => x_return_status
6285            ,x_msg_count                  => x_msg_count
6286            ,x_msg_data                   => x_msg_data
6287            ,p_source_object_id_template  => p_instance_rec.inventory_item_id
6288            ,p_source_object_id_instance  => p_instance_rec.instance_id
6289            ,x_ctr_id_template            => l_ctr_id_template
6290            ,x_ctr_id_instance            => l_ctr_id_instance
6291            ,x_ctr_grp_id_template        => l_ctr_grp_id_template
6292            ,x_ctr_grp_id_instance        => l_ctr_grp_id_instance
6293            ,p_organization_id            => l_last_vld_organization_id -- srramakr. should pass the organization_id
6294            );
6295 		      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
6296 			 FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_COUNTER_ASSOCIATION');
6297                          FND_MESSAGE.SET_TOKEN('COUNTER','CSI_COUNTER_TEMPLATE_PUB.AUTOINSTANTIATE_COUNTERS');
6298 			 FND_MSG_PUB.Add;
6299 			 RAISE FND_API.G_EXC_ERROR;
6300 		      END IF; -- return status
6301 		END IF; -- ctr. grp template exists1
6302 	     END IF; -- for l_base_item
6303 	   END IF; -- ctr.grp template exists2
6304 	 END IF; -- restrict counter instantiation for 'INVENTORY'
6305        END IF; -- qty check
6306    END IF; -- l_call_counters check
6307 
6308      -- Start code addition for eam integration
6309      IF l_eam_item
6310      THEN
6311           eam_objectinstantiation_pub.instantiate_object
6312           (p_api_version             => 1.0
6313           ,p_init_msg_list           => fnd_api.g_false
6314           ,p_commit                  => fnd_api.g_false
6315           ,p_validation_level        => p_validation_level
6316           ,p_maintenance_object_id   => p_instance_rec.instance_id
6317           ,p_maintenance_object_type => 3
6318           ,x_return_status           => x_return_status
6319           ,x_msg_count               => x_msg_count
6320           ,x_msg_data                => x_msg_data
6321           );
6322        IF NOT(x_return_status = fnd_api.g_ret_sts_success)
6323        THEN
6324           csi_gen_utility_pvt.put_line( 'Error from eam_objectinstantiation_pub.instantiate_object...');
6325           RAISE fnd_api.g_exc_error;
6326        END IF;
6327      END IF;
6328      -- End code addition for eam integration
6329    -- Call create_transaction to create txn log
6330         CSI_TRANSACTIONS_PVT.Create_transaction
6331           (
6332              p_api_version            => p_api_version
6333             ,p_commit                 => p_commit
6334             ,p_init_msg_list          => p_init_msg_list
6335             ,p_validation_level       => p_validation_level
6336             ,p_Success_IF_Exists_Flag => 'Y'
6337             ,p_transaction_rec        => p_txn_rec
6338             ,x_return_status          => x_return_status
6339             ,x_msg_count              => x_msg_count
6340             ,x_msg_data               => x_msg_data
6341           );
6342 
6343          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
6344               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
6345               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
6346               FND_MSG_PUB.Add;
6347               RAISE FND_API.G_EXC_ERROR;
6348          END IF;
6349 
6350 -- Get a unique history item instance id from the sequence
6351               l_csi_item_instance_h_id :=
6352                              csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
6353 
6354 -- Create a row in csi_item_instances_history table
6355    CSI_ITEM_INSTANCES_H_PKG.Insert_Row
6356            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
6357             ,p_INSTANCE_ID                       => p_instance_rec.INSTANCE_ID
6358             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
6359             ,p_OLD_INSTANCE_NUMBER               => NULL
6360             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
6361             ,p_OLD_EXTERNAL_REFERENCE            => NULL
6362             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
6363             ,p_OLD_INVENTORY_ITEM_ID             => NULL
6364             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
6365             ,p_OLD_INVENTORY_REVISION            => NULL
6366             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
6367             ,p_OLD_INV_MASTER_ORGZN_ID           => NULL
6368             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
6369             ,p_OLD_SERIAL_NUMBER                 => NULL
6370             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
6371             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => NULL
6372             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
6373             ,p_OLD_LOT_NUMBER                    => NULL
6374             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
6375             ,p_OLD_QUANTITY                      => NULL
6376             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
6377             ,p_OLD_UNIT_OF_MEASURE               => NULL
6378             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
6379             ,p_OLD_ACCOUNTING_CLASS_CODE         => NULL
6380             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
6381             ,p_OLD_INSTANCE_CONDITION_ID         => NULL
6382             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
6383             ,p_OLD_INSTANCE_STATUS_ID            => NULL
6384             ,p_NEW_INSTANCE_STATUS_ID            => p_instance_rec.INSTANCE_STATUS_ID
6385             ,p_OLD_CUSTOMER_VIEW_FLAG            => NULL
6386             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
6387             ,p_OLD_MERCHANT_VIEW_FLAG            => NULL
6388             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
6389             ,p_OLD_SELLABLE_FLAG                 => NULL
6390             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
6391             ,p_OLD_SYSTEM_ID                     => NULL
6392             ,p_NEW_SYSTEM_ID                     => p_instance_rec.SYSTEM_ID
6393             ,p_OLD_INSTANCE_TYPE_CODE            => NULL
6394             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
6395             ,p_OLD_ACTIVE_START_DATE             => NULL
6396             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
6397             ,p_OLD_ACTIVE_END_DATE               => NULL
6398             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
6399             ,p_OLD_LOCATION_TYPE_CODE            => NULL
6400             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
6401             ,p_OLD_LOCATION_ID                   => NULL
6402             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
6403             ,p_OLD_INV_ORGANIZATION_ID           => NULL
6404             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
6405             ,p_OLD_INV_SUBINVENTORY_NAME         => NULL
6406             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
6407             ,p_OLD_INV_LOCATOR_ID                => NULL
6408             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
6409             ,p_OLD_PA_PROJECT_ID                 => NULL
6410             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
6411             ,p_OLD_PA_PROJECT_TASK_ID            => NULL
6412             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
6413             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => NULL
6414             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
6415             ,p_OLD_WIP_JOB_ID                    => NULL
6416             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
6417             ,p_OLD_PO_ORDER_LINE_ID              => NULL
6418             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
6419             ,p_OLD_COMPLETENESS_FLAG             => NULL
6420             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
6421             ,p_FULL_DUMP_FLAG                    => 'N'
6422             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
6423             ,P_OLD_CONTEXT                       => NULL
6424             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
6425             ,p_OLD_ATTRIBUTE1                    => NULL
6426             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
6427             ,p_OLD_ATTRIBUTE2                    => NULL
6428             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
6429             ,p_OLD_ATTRIBUTE3                    => NULL
6430             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
6431             ,p_OLD_ATTRIBUTE4                    => NULL
6432             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
6433             ,p_OLD_ATTRIBUTE5                    => NULL
6434             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
6435             ,p_OLD_ATTRIBUTE6                    => NULL
6436             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
6437             ,p_OLD_ATTRIBUTE7                    => NULL
6438             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
6439             ,p_OLD_ATTRIBUTE8                    => NULL
6440             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
6441             ,p_OLD_ATTRIBUTE9                    => NULL
6442             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
6443             ,p_OLD_ATTRIBUTE10                   => NULL
6444             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
6445             ,p_OLD_ATTRIBUTE11                   => NULL
6446             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
6447             ,p_OLD_ATTRIBUTE12                   => NULL
6448             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
6449             ,p_OLD_ATTRIBUTE13                   => NULL
6450             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
6451             ,p_OLD_ATTRIBUTE14                   => NULL
6452             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
6453             ,p_OLD_ATTRIBUTE15                   => NULL
6454             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
6455             ,p_CREATION_DATE                     => SYSDATE
6456             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
6457             ,p_LAST_UPDATE_DATE                  => SYSDATE
6458             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
6459             ,p_OBJECT_VERSION_NUMBER             => 1
6460             ,p_OLD_INST_LOC_TYPE_CODE            => NULL
6461             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
6462             ,p_OLD_INST_LOC_ID                   => NULL
6463             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
6464             ,p_OLD_INST_USAGE_CODE               => NULL
6465             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
6466             ,p_OLD_last_vld_organization_id      => NULL
6467             ,p_NEW_last_vld_organization_id      => l_last_vld_organization_id
6468             ,p_OLD_CONFIG_INST_REV_NUM           => NULL
6469             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
6470             ,p_OLD_CONFIG_VALID_STATUS           => NULL
6471             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
6472             ,p_OLD_INSTANCE_DESCRIPTION          => NULL
6473             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
6474             ,p_OLD_INSTALL_DATE                  => NULL
6475             ,p_NEW_INSTALL_DATE                  => p_instance_rec.INSTALL_DATE
6476             ,p_OLD_RETURN_BY_DATE                => NULL
6477             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
6478             ,p_OLD_ACTUAL_RETURN_DATE            => NULL
6479             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
6480             ,p_old_last_oe_agreement_id          => NULL
6481             ,p_new_last_oe_agreement_id          => p_instance_rec.last_oe_agreement_id
6482             ,p_OLD_LAST_OE_ORDER_LINE_ID         => NULL
6483             ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
6484             ,p_OLD_LAST_OE_RMA_LINE_ID           => NULL
6485             ,p_NEW_LAST_OE_RMA_LINE_ID           => p_instance_rec.LAST_OE_RMA_LINE_ID
6486             ,p_OLD_LAST_WIP_JOB_ID               => NULL
6487             ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
6488             ,p_OLD_LAST_PO_PO_LINE_ID            => NULL
6489             ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
6490             ,p_OLD_LAST_PA_PROJECT_ID            => NULL
6491             ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
6492             ,p_OLD_LAST_PA_TASK_ID               => NULL
6493             ,p_NEW_LAST_PA_TASK_ID               => p_instance_rec.LAST_PA_TASK_ID
6494             ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => NULL
6495             ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
6496             ,p_OLD_LAST_OE_PO_NUMBER             => NULL
6497             ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
6498             --start of parameters addition for eam integration--
6499             ,p_OLD_NETWORK_ASSET_FLAG             => NULL
6500             ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
6501             ,p_OLD_MAINTAINABLE_FLAG              => NULL
6502             ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
6503             ,p_OLD_PN_LOCATION_ID                 => NULL
6504             ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
6505             ,p_OLD_ASSET_CRITICALITY_CODE         => NULL
6506             ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
6507             ,p_OLD_CATEGORY_ID                    => NULL
6508             ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
6509             ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => NULL
6510             ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
6511             ,p_OLD_INSTANTIATION_FLAG             => NULL
6512             ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
6513             ,p_OLD_LINEAR_LOCATION_ID             => NULL
6514             ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
6515             ,p_OLD_OPERATIONAL_LOG_FLAG           => NULL
6516             ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
6517             ,p_OLD_CHECKIN_STATUS                 => NULL
6518             ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
6519             ,p_OLD_SUP_WARRANTY_EXP_DATE          => NULL
6520             ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
6521             ,p_OLD_ATTRIBUTE16                    => NULL
6522             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
6523             ,p_OLD_ATTRIBUTE17                    => NULL
6524             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
6525             ,p_OLD_ATTRIBUTE18                    => NULL
6526             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
6527             ,p_OLD_ATTRIBUTE19                    => NULL
6528             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
6529             ,p_OLD_ATTRIBUTE20                    => NULL
6530             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
6531             ,p_OLD_ATTRIBUTE21                    => NULL
6532             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
6533             ,p_OLD_ATTRIBUTE22                    => NULL
6534             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
6535             ,p_OLD_ATTRIBUTE23                    => NULL
6536             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
6537             ,p_OLD_ATTRIBUTE24                    => NULL
6538             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
6539             ,p_OLD_ATTRIBUTE25                    => NULL
6540             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
6541             ,p_OLD_ATTRIBUTE26                    => NULL
6542             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
6543             ,p_OLD_ATTRIBUTE27                    => NULL
6544             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
6545             ,p_OLD_ATTRIBUTE28                    => NULL
6546             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
6547             ,p_OLD_ATTRIBUTE29                    => NULL
6548             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
6549             ,p_OLD_ATTRIBUTE30                    => NULL
6550             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
6551   	  --end of parameters addition for eam integration--
6552    -- Addition of columns for FA Integration
6553             ,p_OLD_PAYABLES_UNIT_PRICE            => NULL
6554             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
6555             ,p_OLD_PAYABLES_CURRENCY_CODE         => NULL
6556             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
6557             ,p_OLD_PURCHASE_UNIT_PRICE            => NULL
6558             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
6559             ,p_OLD_PURCHASE_CURRENCY_CODE         => NULL
6560             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
6561             ,p_OLD_SALES_UNIT_PRICE               => NULL
6562             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
6563             ,p_OLD_SALES_CURRENCY_CODE            => NULL
6564             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
6565             ,p_OLD_OPERATIONAL_STATUS_CODE        => NULL
6566             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
6567     -- End addition of columns for FA Integration
6568             -- Begin Add Code for Siebel Genesis Project
6569             ,p_OLD_SOURCE_CODE                    => NULL
6570             ,p_NEW_SOURCE_CODE                    => p_instance_rec.SOURCE_CODE
6571             -- End Add Code for Siebel Genesis Project
6572             );
6573 
6574 
6575          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
6576               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_CREATE_HISTORY');
6577               FND_MSG_PUB.Add;
6578               RAISE FND_API.G_EXC_ERROR;
6579          END IF;
6580 
6581       END IF;  -- Check for p_called_from_grp
6582       -- End of API body
6583 
6584       -- Standard check of p_commit.
6585       IF FND_API.To_Boolean( p_commit ) THEN
6586            COMMIT WORK;
6587       END IF;
6588 
6589       -- Standard call to get message count and IF count is  get message info.
6590       FND_MSG_PUB.Count_And_Get
6591           (p_encoded => FND_API.G_FALSE,   --Added for bug 7657438
6592            p_count   =>  x_msg_count,
6593            p_data    =>  x_msg_data
6594            );
6595 
6596 EXCEPTION
6597     WHEN FND_API.G_EXC_ERROR THEN
6598           ROLLBACK TO create_item_instance_pvt;
6599             x_return_status := FND_API.G_RET_STS_ERROR ;
6600             FND_MSG_PUB.Count_And_Get
6601                 (p_encoded => FND_API.G_FALSE,   --Added for bug 7657438
6602                  p_count   =>  x_msg_count,
6603                  p_data    =>  x_msg_data
6604                 );
6605     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6606           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6607           ROLLBACK TO create_item_instance_pvt;
6608           FND_MSG_PUB.Count_And_Get
6609                 ( p_encoded => FND_API.G_FALSE,
6610                  p_count  =>  x_msg_count,
6611                   p_data   =>  x_msg_data
6612                 );
6613     WHEN OTHERS THEN
6614           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6615           ROLLBACK TO create_item_instance_pvt;
6616               IF   FND_MSG_PUB.Check_Msg_Level
6617                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6618               THEN
6619                     FND_MSG_PUB.Add_Exc_Msg
6620                   (G_PKG_NAME ,
6621                    l_api_name
6622                   );
6623               END IF;
6624               FND_MSG_PUB.Count_And_Get
6625                   (p_encoded => FND_API.G_FALSE,
6626                  p_count  =>  x_msg_count,
6627                    p_data   =>  x_msg_data
6628                   );
6629 
6630 END create_item_instance;
6631 
6632 /*---------------------------------------------------*/
6633 /* Procedure name:  Anything_To_Update               */
6634 /* Description   :  This function  checks if any of  */
6635 /*                  the columns related to instance  */
6636 /*                  are changing                     */
6637 /*---------------------------------------------------*/
6638 
6639 FUNCTION Anything_To_Update(p_instance_rec    csi_datastructures_pub.instance_rec)
6640 
6641 RETURN BOOLEAN
6642 IS
6643 
6644     l_return_value BOOLEAN := FALSE;
6645 
6646 BEGIN
6647 
6648             IF ((p_instance_rec.instance_number            IS NULL) OR
6649                 (p_instance_rec.instance_number            <> FND_API.G_MISS_CHAR)) OR
6650                ((p_instance_rec.external_reference         IS NULL) OR
6651                 (p_instance_rec.external_reference         <> FND_API.G_MISS_CHAR)) OR
6652                ((p_instance_rec.inventory_item_id          IS NULL) OR
6653                 (p_instance_rec.inventory_item_id          <> FND_API.G_MISS_NUM)) OR
6654                ((p_instance_rec.inventory_revision         IS NULL) OR
6655                 (p_instance_rec.inventory_revision         <> FND_API.G_MISS_CHAR)) OR
6656                ((p_instance_rec.inv_master_organization_id IS NULL) OR
6657                 (p_instance_rec.inv_master_organization_id <> FND_API.G_MISS_NUM)) OR
6658                ((p_instance_rec.serial_number              IS NULL) OR
6659                 (p_instance_rec.serial_number              <> FND_API.G_MISS_CHAR)) OR
6660                ((p_instance_rec.mfg_serial_number_flag     IS NULL) OR
6661                 (p_instance_rec.mfg_serial_number_flag     <> FND_API.G_MISS_CHAR)) OR
6662                ((p_instance_rec.lot_number                 IS NULL) OR
6663                 (p_instance_rec.lot_number                 <> FND_API.G_MISS_CHAR)) OR
6664                ((p_instance_rec.quantity                   IS NULL) OR
6665                 (p_instance_rec.quantity                   <> FND_API.G_MISS_NUM)) OR
6666                ((p_instance_rec.unit_of_measure            IS NULL) OR
6667                 (p_instance_rec.unit_of_measure            <> FND_API.G_MISS_CHAR)) OR
6668                ((p_instance_rec.accounting_class_code      IS NULL) OR
6669                 (p_instance_rec.accounting_class_code      <> FND_API.G_MISS_CHAR)) OR
6670                ((p_instance_rec.instance_condition_id      IS NULL) OR
6671                 (p_instance_rec.instance_condition_id      <> FND_API.G_MISS_NUM)) OR
6672                ((p_instance_rec.instance_status_id         IS NULL) OR
6673                 (p_instance_rec.instance_status_id         <> FND_API.G_MISS_NUM)) OR
6674                ((p_instance_rec.customer_view_flag         IS NULL) OR
6675                 (p_instance_rec.customer_view_flag         <> FND_API.G_MISS_CHAR)) OR
6676                ((p_instance_rec.merchant_view_flag         IS NULL) OR
6677                 (p_instance_rec.merchant_view_flag         <> FND_API.G_MISS_CHAR)) OR
6678                ((p_instance_rec.sellable_flag              IS NULL) OR
6679                 (p_instance_rec.sellable_flag              <> FND_API.G_MISS_CHAR)) OR
6680                ((p_instance_rec.system_id                  IS NULL) OR
6681                 (p_instance_rec.system_id                  <> FND_API.G_MISS_NUM)) OR
6682                ((p_instance_rec.instance_type_code         IS NULL) OR
6683                 (p_instance_rec.instance_type_code         <> FND_API.G_MISS_CHAR)) OR
6684                ((p_instance_rec.active_start_date          IS NULL) OR
6685                 (p_instance_rec.active_start_date          <> FND_API.G_MISS_DATE)) OR
6686                ((p_instance_rec.active_end_date            IS NULL) OR
6687                 (p_instance_rec.active_end_date            <> FND_API.G_MISS_DATE)) OR
6688                ((p_instance_rec.location_type_code         IS NULL) OR
6689                 (p_instance_rec.location_type_code         <> FND_API.G_MISS_CHAR)) OR
6690                ((p_instance_rec.location_id                IS NULL) OR
6691                 (p_instance_rec.location_id                <> FND_API.G_MISS_NUM)) OR
6692                ((p_instance_rec.inv_organization_id        IS NULL) OR
6693                 (p_instance_rec.inv_organization_id        <> FND_API.G_MISS_NUM)) OR
6694                ((p_instance_rec.inv_subinventory_name      IS NULL) OR
6695                 (p_instance_rec.inv_subinventory_name      <> FND_API.G_MISS_CHAR)) OR
6696                ((p_instance_rec.inv_locator_id             IS NULL) OR
6697                 (p_instance_rec.inv_locator_id             <> FND_API.G_MISS_NUM)) OR
6698                ((p_instance_rec.pa_project_id              IS NULL) OR
6699                 (p_instance_rec.pa_project_id              <> FND_API.G_MISS_NUM)) OR
6700                ((p_instance_rec.pa_project_task_id         IS NULL) OR
6701                 (p_instance_rec.pa_project_task_id         <> FND_API.G_MISS_NUM)) OR
6702                ((p_instance_rec.in_transit_order_line_id   IS NULL) OR
6703                 (p_instance_rec.in_transit_order_line_id   <> FND_API.G_MISS_NUM)) OR
6704                ((p_instance_rec.wip_job_id                 IS NULL) OR
6705                 (p_instance_rec.wip_job_id                 <> FND_API.G_MISS_NUM)) OR
6706                ((p_instance_rec.po_order_line_id           IS NULL) OR
6707                 (p_instance_rec.po_order_line_id           <> FND_API.G_MISS_NUM)) OR
6708                ((p_instance_rec.last_oe_order_line_id      IS NULL) OR
6709                 (p_instance_rec.last_oe_order_line_id      <> FND_API.G_MISS_NUM)) OR
6710                ((p_instance_rec.last_oe_rma_line_id        IS NULL) OR
6711                 (p_instance_rec.last_oe_rma_line_id        <> FND_API.G_MISS_NUM)) OR
6712                ((p_instance_rec.last_po_po_line_id         IS NULL) OR
6713                 (p_instance_rec.last_po_po_line_id         <> FND_API.G_MISS_NUM)) OR
6714                ((p_instance_rec.last_oe_po_number          IS NULL) OR
6715                 (p_instance_rec.last_oe_po_number          <> FND_API.G_MISS_CHAR)) OR
6716                ((p_instance_rec.last_wip_job_id            IS NULL) OR
6717                 (p_instance_rec.last_wip_job_id            <> FND_API.G_MISS_NUM)) OR
6718                ((p_instance_rec.last_pa_project_id         IS NULL) OR
6719                 (p_instance_rec.last_pa_project_id         <> FND_API.G_MISS_NUM)) OR
6720                ((p_instance_rec.last_pa_task_id            IS NULL) OR
6721                 (p_instance_rec.last_pa_task_id            <> FND_API.G_MISS_NUM)) OR
6722                ((p_instance_rec.last_oe_agreement_id       IS NULL) OR
6723                 (p_instance_rec.last_oe_agreement_id       <> FND_API.G_MISS_NUM)) OR
6724                ((p_instance_rec.install_date               IS NULL) OR
6725                 (p_instance_rec.install_date               <> FND_API.G_MISS_DATE)) OR
6726                ((p_instance_rec.manually_created_flag      IS NULL) OR
6727                 (p_instance_rec.manually_created_flag      <> FND_API.G_MISS_CHAR)) OR
6728                ((p_instance_rec.return_by_date             IS NULL) OR
6729                 (p_instance_rec.return_by_date             <> FND_API.G_MISS_DATE)) OR
6730                ((p_instance_rec.actual_return_date         IS NULL) OR
6731                 (p_instance_rec.actual_return_date         <> FND_API.G_MISS_DATE)) OR
6732                ((p_instance_rec.creation_complete_flag     IS NULL) OR
6733                 (p_instance_rec.creation_complete_flag     <> FND_API.G_MISS_CHAR)) OR
6734                ((p_instance_rec.completeness_flag          IS NULL) OR
6735                 (p_instance_rec.completeness_flag          <> FND_API.G_MISS_CHAR)) OR
6736                ((p_instance_rec.context                    IS NULL) OR
6737                 (p_instance_rec.context                    <> FND_API.G_MISS_CHAR)) OR
6738                ((p_instance_rec.attribute1                 IS NULL) OR
6739                 (p_instance_rec.attribute1                 <> FND_API.G_MISS_CHAR)) OR
6740                ((p_instance_rec.attribute2                 IS NULL) OR
6741                 (p_instance_rec.attribute2                 <> FND_API.G_MISS_CHAR)) OR
6742                ((p_instance_rec.attribute3                 IS NULL) OR
6743                 (p_instance_rec.attribute3                 <> FND_API.G_MISS_CHAR)) OR
6744                ((p_instance_rec.attribute4                 IS NULL) OR
6745                 (p_instance_rec.attribute4                 <> FND_API.G_MISS_CHAR)) OR
6746                ((p_instance_rec.attribute5                 IS NULL) OR
6747                 (p_instance_rec.attribute5                 <> FND_API.G_MISS_CHAR)) OR
6748                ((p_instance_rec.attribute6                 IS NULL) OR
6749                 (p_instance_rec.attribute6                 <> FND_API.G_MISS_CHAR)) OR
6750                ((p_instance_rec.attribute7                 IS NULL) OR
6751                 (p_instance_rec.attribute7                 <> FND_API.G_MISS_CHAR)) OR
6752                ((p_instance_rec.attribute8                 IS NULL) OR
6753                 (p_instance_rec.attribute8                 <> FND_API.G_MISS_CHAR)) OR
6754                ((p_instance_rec.attribute9                 IS NULL) OR
6755                 (p_instance_rec.attribute9                 <> FND_API.G_MISS_CHAR)) OR
6756                ((p_instance_rec.attribute10                IS NULL) OR
6757                 (p_instance_rec.attribute10                <> FND_API.G_MISS_CHAR)) OR
6758                ((p_instance_rec.attribute11                IS NULL) OR
6759                 (p_instance_rec.attribute11                <> FND_API.G_MISS_CHAR)) OR
6760                ((p_instance_rec.attribute12                IS NULL) OR
6761                 (p_instance_rec.attribute12                <> FND_API.G_MISS_CHAR)) OR
6762                ((p_instance_rec.attribute13                IS NULL) OR
6763                 (p_instance_rec.attribute13                <> FND_API.G_MISS_CHAR)) OR
6764                ((p_instance_rec.attribute14                IS NULL) OR
6765                 (p_instance_rec.attribute14                <> FND_API.G_MISS_CHAR)) OR
6766                ((p_instance_rec.attribute15                IS NULL) OR
6767                 (p_instance_rec.attribute15                <> FND_API.G_MISS_CHAR)) OR
6768                ((p_instance_rec.last_txn_line_detail_id    IS NULL) OR
6769                 (p_instance_rec.last_txn_line_detail_id    <> FND_API.G_MISS_NUM)) OR
6770                ((p_instance_rec.install_location_type_code IS NULL) OR
6771                 (p_instance_rec.install_location_type_code <> FND_API.G_MISS_CHAR)) OR
6772                ((p_instance_rec.install_location_id        IS NULL) OR
6773                 (p_instance_rec.install_location_id        <> FND_API.G_MISS_NUM)) OR
6774                ((p_instance_rec.instance_usage_code        IS NULL) OR
6775                 (p_instance_rec.instance_usage_code        <> FND_API.G_MISS_CHAR)) OR
6776   -- The following code has been added by sguthiva for att enhancements
6777                ((p_instance_rec.config_inst_hdr_id         IS NULL) OR
6778                 (p_instance_rec.config_inst_hdr_id         <> FND_API.G_MISS_NUM)) OR
6779                ((p_instance_rec.config_inst_rev_num        IS NULL) OR
6780                 (p_instance_rec.config_inst_rev_num        <> FND_API.G_MISS_NUM)) OR
6781                ((p_instance_rec.config_inst_item_id        IS NULL) OR
6782                 (p_instance_rec.config_inst_item_id        <> FND_API.G_MISS_NUM)) OR
6783                ((p_instance_rec.config_valid_status        IS NULL) OR
6784                 (p_instance_rec.config_valid_status        <> FND_API.G_MISS_CHAR)) OR
6785                ((p_instance_rec.instance_description       IS NULL) OR
6786                 (p_instance_rec.instance_description       <> FND_API.G_MISS_CHAR)) OR
6787                 --start of code for eam integration--
6788                ((p_instance_rec.network_asset_flag           IS NULL) OR
6789                 (p_instance_rec.network_asset_flag          <> FND_API.G_MISS_CHAR)) OR
6790                ((p_instance_rec.maintainable_flag            IS NULL) OR
6791                 (p_instance_rec.maintainable_flag            <> FND_API.G_MISS_CHAR)) OR
6792                ((p_instance_rec.pn_location_id               IS NULL) OR
6793                 (p_instance_rec.pn_location_id               <> FND_API.G_MISS_NUM)) OR
6794                ((p_instance_rec.asset_criticality_code       IS NULL) OR
6795                 (p_instance_rec.asset_criticality_code       <> FND_API.G_MISS_CHAR)) OR
6796                ((p_instance_rec.category_id                  IS NULL) OR
6797                 (p_instance_rec.category_id                  <> FND_API.G_MISS_NUM)) OR
6798                ((p_instance_rec.equipment_gen_object_id      IS NULL) OR
6799                 (p_instance_rec.equipment_gen_object_id      <> FND_API.G_MISS_NUM)) OR
6800                ((p_instance_rec.instantiation_flag           IS NULL) OR
6801                 (p_instance_rec.instantiation_flag           <> FND_API.G_MISS_CHAR)) OR
6802                ((p_instance_rec.linear_location_id           IS NULL) OR
6803                 (p_instance_rec.linear_location_id           <> FND_API.G_MISS_NUM)) OR
6804                ((p_instance_rec.operational_log_flag         IS NULL) OR
6805                 (p_instance_rec.operational_log_flag         <> FND_API.G_MISS_CHAR)) OR
6806                ((p_instance_rec.checkin_status               IS NULL) OR
6807                 (p_instance_rec.checkin_status               <> FND_API.G_MISS_NUM)) OR
6808                ((p_instance_rec.supplier_warranty_exp_date   IS NULL) OR
6809                 (p_instance_rec.supplier_warranty_exp_date   <> FND_API.G_MISS_DATE)) OR
6810                ((p_instance_rec.attribute16                  IS NULL) OR
6811                 (p_instance_rec.attribute16                  <> FND_API.G_MISS_CHAR)) OR
6812                ((p_instance_rec.attribute17                  IS NULL) OR
6813                 (p_instance_rec.attribute17                  <> FND_API.G_MISS_CHAR)) OR
6814                ((p_instance_rec.attribute18                  IS NULL) OR
6815                 (p_instance_rec.attribute18                  <> FND_API.G_MISS_CHAR)) OR
6816                ((p_instance_rec.attribute19                  IS NULL) OR
6817                 (p_instance_rec.attribute19                  <> FND_API.G_MISS_CHAR)) OR
6818                ((p_instance_rec.attribute20                  IS NULL) OR
6819                 (p_instance_rec.attribute20                  <> FND_API.G_MISS_CHAR)) OR
6820                ((p_instance_rec.attribute21                  IS NULL) OR
6821                 (p_instance_rec.attribute21                  <> FND_API.G_MISS_CHAR)) OR
6822                ((p_instance_rec.attribute22                  IS NULL) OR
6823                 (p_instance_rec.attribute22                  <> FND_API.G_MISS_CHAR)) OR
6824                ((p_instance_rec.attribute23                  IS NULL) OR
6825                 (p_instance_rec.attribute23                  <> FND_API.G_MISS_CHAR)) OR
6826                ((p_instance_rec.attribute24                  IS NULL) OR
6827                 (p_instance_rec.attribute24                  <> FND_API.G_MISS_CHAR)) OR
6828                ((p_instance_rec.attribute25                  IS NULL) OR
6829                 (p_instance_rec.attribute25                  <> FND_API.G_MISS_CHAR)) OR
6830                ((p_instance_rec.attribute26                  IS NULL) OR
6831                 (p_instance_rec.attribute26                  <> FND_API.G_MISS_CHAR)) OR
6832                ((p_instance_rec.attribute27                  IS NULL) OR
6833                 (p_instance_rec.attribute27                  <> FND_API.G_MISS_CHAR)) OR
6834                ((p_instance_rec.attribute28                  IS NULL) OR
6835                 (p_instance_rec.attribute28                  <> FND_API.G_MISS_CHAR)) OR
6836                ((p_instance_rec.attribute29                  IS NULL) OR
6837                 (p_instance_rec.attribute29                  <> FND_API.G_MISS_CHAR)) OR
6838                ((p_instance_rec.attribute30                  IS NULL) OR
6839                 (p_instance_rec.attribute30                  <> FND_API.G_MISS_CHAR)) OR
6840                  --end of code for eam integration--
6841                  -- Addition of columns for FA Integration
6842                ((p_instance_rec.purchase_unit_price          IS NULL) OR
6843                 (p_instance_rec.purchase_unit_price          <> FND_API.G_MISS_NUM)) OR
6844                ((p_instance_rec.purchase_currency_code       IS NULL) OR
6845                 (p_instance_rec.purchase_currency_code       <> FND_API.G_MISS_CHAR)) OR
6846                ((p_instance_rec.payables_unit_price          IS NULL) OR
6847                 (p_instance_rec.payables_unit_price          <> FND_API.G_MISS_NUM)) OR
6848                ((p_instance_rec.payables_currency_code       IS NULL) OR
6849                 (p_instance_rec.payables_currency_code       <> FND_API.G_MISS_CHAR)) OR
6850                ((p_instance_rec.sales_unit_price             IS NULL) OR
6851                 (p_instance_rec.sales_unit_price             <> FND_API.G_MISS_NUM)) OR
6852                ((p_instance_rec.sales_currency_code          IS NULL) OR
6853                 (p_instance_rec.sales_currency_code          <> FND_API.G_MISS_CHAR)) OR
6854                ((p_instance_rec.operational_status_code      IS NULL) OR
6855                 (p_instance_rec.operational_status_code      <> FND_API.G_MISS_CHAR))
6856     -- End addition of columns for FA Integration
6857              THEN
6858   -- End of code addition by sguthiva for att enhancements
6859 
6860                         l_return_value := TRUE;
6861              END IF;
6862 
6863 
6864 RETURN l_return_value;
6865 
6866 END Anything_To_Update;
6867 
6868 /*----------------------------------------------------*/
6869 /*  This Procedure validates the accounting class code*/
6870 /*  depending upon the location type code             */
6871 /*----------------------------------------------------*/
6872 PROCEDURE get_and_update_acct_class
6873 ( p_api_version          IN      NUMBER
6874  ,p_commit               IN      VARCHAR2
6875  ,p_init_msg_list        IN      VARCHAR2
6876  ,p_validation_level     IN      NUMBER
6877  ,p_instance_id          IN      NUMBER
6878  ,p_instance_expiry_flag IN      VARCHAR2
6879  ,p_txn_rec              IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
6880  ,x_acct_class_code      OUT     NOCOPY VARCHAR2
6881  ,x_return_status        OUT     NOCOPY VARCHAR2
6882  ,x_msg_count            OUT     NOCOPY NUMBER
6883  ,x_msg_data             OUT     NOCOPY VARCHAR2
6884 )
6885 
6886 IS
6887 
6888 l_api_name            CONSTANT VARCHAR2(30)   := 'GET_AND_UPDATE_ACCT_CLASS';
6889 l_api_version         CONSTANT NUMBER         := 1.0;
6890 l_debug_level         NUMBER;
6891 l_acct_class_code     VARCHAR2(10);
6892 l_accounting_class    VARCHAR2(10);
6893 l_loc_type_code       VARCHAR2(30);
6894 --l_obj_ver_num       NUMBER;
6895 l_instance_rec        csi_datastructures_pub.instance_rec;
6896 l_instance_id_lst     csi_datastructures_pub.id_tbl ;
6897 x_msg_index_out       NUMBER;
6898 l_item_attribute_tbl  csi_item_instance_pvt.item_attribute_tbl;
6899 l_location_tbl        csi_item_instance_pvt.location_tbl;
6900 l_generic_id_tbl      csi_item_instance_pvt.generic_id_tbl;
6901 l_lookup_tbl          csi_item_instance_pvt.lookup_tbl;
6902 l_ins_count_rec       csi_item_instance_pvt.ins_count_rec;
6903 px_oks_txn_inst_tbl   oks_ibint_pub.txn_instance_tbl;
6904 px_child_inst_tbl     csi_item_instance_grp.child_inst_tbl;
6905 
6906 BEGIN
6907 
6908     -- Standard Start of API savepoint
6909        IF fnd_api.to_boolean(p_commit)
6910        THEN
6911         SAVEPOINT  get_and_update_acct_class;
6912        END IF;
6913 
6914     -- Standard call to check for call compatibility.
6915        IF NOT FND_API.Compatible_API_Call (l_api_version,
6916                                            p_api_version,
6917                                            l_api_name   ,
6918                                            G_PKG_NAME    )
6919        THEN
6920              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6921        END IF;
6922 
6923     -- Initialize message list if p_init_msg_list is set to TRUE.
6924        IF FND_API.to_Boolean( p_init_msg_list ) THEN
6925              FND_MSG_PUB.initialize;
6926        END IF;
6927 
6928     -- Initialize API return status to success
6929        x_return_status := FND_API.G_RET_STS_SUCCESS;
6930 
6931         -- Check the profile option debug_level for debug message reporting
6932            l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
6933        --  If debug_level = 1 then dump the procedure name
6934            IF (l_debug_level > 0) THEN
6935               csi_gen_utility_pvt.put_line ('get_and_update_acct_class');
6936            END IF;
6937 
6938        -- If the debug level = 2 then dump all the parameters values.
6939            IF (l_debug_level > 1) THEN
6940                  csi_gen_utility_pvt.put_line ( 'get_and_update_acct_class' ||
6941                                                    p_api_version       ||'-'||
6942                                                    p_commit
6943                                                );
6944            END IF;
6945 
6946     l_instance_rec.instance_id := p_instance_id;
6947 
6948    BEGIN
6949       SELECT location_type_code,
6950              accounting_class_code,
6951              object_version_number,
6952              inventory_item_id,
6953              last_vld_organization_id,
6954              quantity
6955       INTO   l_loc_type_code,
6956              l_accounting_class,
6957              l_instance_rec.object_version_number,
6958              l_instance_rec.inventory_item_id,
6959              l_instance_rec.vld_organization_id,
6960              l_instance_rec.quantity
6961       FROM   csi_item_instances
6962       WHERE  instance_id = l_instance_rec.instance_id;
6963    EXCEPTION
6964       WHEN NO_DATA_FOUND THEN
6965            FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_NUM');
6966            FND_MESSAGE.SET_TOKEN('INSTANCE_NUMBER', l_instance_rec.instance_id);
6967            FND_MSG_PUB.Add;
6968           RAISE FND_API.G_EXC_ERROR;
6969    END;
6970 
6971 
6972     csi_item_instance_vld_pvt.get_valid_acct_class(p_instance_id          => p_instance_id,
6973                                                    p_curr_acct_class_code => NULL, --l_accounting_class,
6974                                                    p_loc_type_code        => l_loc_type_code,
6975                                                    x_acct_class_code      => l_acct_class_code
6976                                                    );
6977 
6978     IF l_acct_class_code <> l_accounting_class THEN
6979 
6980       l_instance_rec.accounting_class_code := l_acct_class_code;
6981       l_instance_rec.check_for_instance_expiry  :=  p_instance_expiry_flag;
6982       update_item_instance
6983        (
6984          p_api_version      => p_api_version
6985         ,p_commit           => fnd_api.g_false
6986         ,p_init_msg_list    => p_init_msg_list
6987         ,p_validation_level => p_validation_level
6988         ,p_instance_rec     => l_instance_rec
6989         ,p_txn_rec          => p_txn_rec
6990         ,x_instance_id_lst  => l_instance_id_lst
6991         ,x_return_status    => x_return_status
6992         ,x_msg_count        => x_msg_count
6993         ,x_msg_data         => x_msg_data
6994         ,p_item_attribute_tbl => l_item_attribute_tbl
6995         ,p_location_tbl     => l_location_tbl
6996         ,p_generic_id_tbl     => l_generic_id_tbl
6997         ,p_lookup_tbl         => l_lookup_tbl
6998         ,p_ins_count_rec      => l_ins_count_rec
6999         ,p_oks_txn_inst_tbl   => px_oks_txn_inst_tbl
7000         ,p_child_inst_tbl     => px_child_inst_tbl
7001        );
7002 
7003       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7004           FOR i in 1..x_msg_Count LOOP
7005             FND_MSG_PUB.Get(p_msg_index     => i,
7006                             p_encoded       => 'F',
7007                             p_data          => x_msg_data,
7008                             p_msg_index_out => x_msg_index_out );
7009 
7010          End LOOP;
7011          RAISE fnd_api.g_exc_error;
7012       END IF;
7013 
7014     END IF;
7015 
7016     IF FND_API.To_Boolean( p_commit )
7017     THEN
7018                 COMMIT WORK;
7019     END IF;
7020 
7021      -- Standard call to get message count and IF count is  get message info.
7022       FND_MSG_PUB.Count_And_Get
7023            (p_encoded => FND_API.G_FALSE,
7024                  p_count  =>  x_msg_count,
7025             p_data   =>  x_msg_data
7026            );
7027 
7028 EXCEPTION
7029     WHEN FND_API.G_EXC_ERROR THEN
7030            IF FND_API.To_Boolean( p_commit )
7031            THEN
7032             ROLLBACK TO get_and_update_acct_class;
7033            END IF;
7034             x_return_status := FND_API.G_RET_STS_ERROR ;
7035             FND_MSG_PUB.Count_And_Get
7036                 (p_encoded => FND_API.G_FALSE,
7037                  p_count  =>  x_msg_count,
7038                  p_data   =>  x_msg_data
7039                 );
7040     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7041           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7042            IF FND_API.To_Boolean( p_commit )
7043            THEN
7044             ROLLBACK TO get_and_update_acct_class;
7045            END IF;
7046           FND_MSG_PUB.Count_And_Get
7047                 ( p_encoded => FND_API.G_FALSE,
7048                  p_count  =>  x_msg_count,
7049                   p_data   =>  x_msg_data
7050                 );
7051     WHEN OTHERS THEN
7052           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
7053            IF FND_API.To_Boolean( p_commit )
7054            THEN
7055             ROLLBACK TO get_and_update_acct_class;
7056            END IF;
7057               IF   FND_MSG_PUB.Check_Msg_Level
7058                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7059               THEN
7060                     FND_MSG_PUB.Add_Exc_Msg
7061                   (G_PKG_NAME ,
7062                    l_api_name
7063                   );
7064               END IF;
7065               FND_MSG_PUB.Count_And_Get
7066                   (p_encoded => FND_API.G_FALSE,
7067                  p_count  =>  x_msg_count,
7068                    p_data   =>  x_msg_data
7069                   );
7070 
7071 END get_and_update_acct_class;
7072 
7073 /*------------------------------------------------------*/
7074 /* Procedure name: update_child_instance_location       */
7075 /* Description   : procedure used to update the child   */
7076 /*                 Instances                            */
7077 /*------------------------------------------------------*/
7078 
7079 PROCEDURE update_child_instance_location
7080      (p_api_version         IN     NUMBER,
7081       p_commit              IN     VARCHAR2,
7082       p_init_msg_list       IN     VARCHAR2,
7083       p_validation_level    IN     NUMBER,
7084       p_instance_rec        IN OUT NOCOPY csi_datastructures_pub.instance_rec,
7085       p_original_status_id  IN     NUMBER,
7086       p_original_system_id  IN     NUMBER,
7087       p_txn_rec             IN OUT NOCOPY csi_datastructures_pub.transaction_rec,
7088       x_instance_id_lst     OUT    NOCOPY csi_datastructures_pub.id_tbl,
7089       x_return_status       OUT    NOCOPY VARCHAR2,
7090       p_unexpire            IN     VARCHAR2,
7091       p_oks_txn_inst_tbl    IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl,
7092       p_child_inst_tbl      IN OUT NOCOPY csi_item_instance_grp.child_inst_tbl,
7093       p_orig_install_date   IN     DATE,
7094       x_msg_count           OUT    NOCOPY NUMBER,
7095       x_msg_data            OUT    NOCOPY VARCHAR2
7096      )
7097 IS
7098     l_api_name               CONSTANT VARCHAR2(30)   := 'UPDATE_CHILD_INST_LOCATION';
7099     l_api_version            CONSTANT NUMBER         := 1.0;
7100     l_debug_level            NUMBER;
7101     l_instance_id            NUMBER;
7102     l_dummy                  NUMBER;
7103     l_instance_rec           csi_datastructures_pub.instance_rec:=p_instance_rec;
7104     l_object_version_number  NUMBER;
7105     l_return_value           BOOLEAN;
7106     l_csi_item_instance_h_id NUMBER;
7107     l_full_dump_frequency    NUMBER;
7108     l_mod_value              NUMBER;
7109     l_dump_flag              VARCHAR2(1);
7110     l_msg_index              NUMBER;
7111     l_msg_count              NUMBER;
7112     l_instance_hist_rec      csi_datastructures_pub.instance_history_rec;
7113     --Start of:Added for bug 5615169
7114     l_inst_hist_tbl_blk_ins  csi_datastructures_pub.instance_history_tbl; -- used for bulk insert
7115     l_inst_hist_rec_tab      csi_item_instance_grp.instance_history_rec_tab; -- used for column table
7116     l_ciih_blk_ins_cnt       NUMBER  := 0;
7117     l_user_id      NUMBER := FND_GLOBAL.USER_ID;
7118     l_login_id     NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
7119     --End of:Added for bug 5615169
7120 
7121     --Added for bug 7708851, base bug 7239642
7122     l_raise_bes_event        VARCHAR2(1) := nvl(fnd_profile.value('CSI_RAISE_BES_CUST_OWNED_INSTANCES'),'N');
7123     l_create_event_called    VARCHAR2(1) := 'N';
7124 
7125 CURSOR curr_instance_rec(p_instance_id IN NUMBER)  IS
7126            SELECT
7127                  INSTANCE_ID,
7128                  INSTANCE_NUMBER,
7129                  EXTERNAL_REFERENCE,
7130                  INVENTORY_ITEM_ID,
7131                  NULL VLD_ORGANIZATION_ID,
7132                  INVENTORY_REVISION,
7133                  INV_MASTER_ORGANIZATION_ID,
7134                  SERIAL_NUMBER,
7135                  MFG_SERIAL_NUMBER_FLAG,
7136                  LOT_NUMBER,
7137                  QUANTITY,
7138                  UNIT_OF_MEASURE,
7139                  ACCOUNTING_CLASS_CODE,
7140                  INSTANCE_CONDITION_ID,
7141                  INSTANCE_STATUS_ID,
7142                  CUSTOMER_VIEW_FLAG,
7143                  MERCHANT_VIEW_FLAG,
7144                  SELLABLE_FLAG,
7145                  SYSTEM_ID,
7146                  INSTANCE_TYPE_CODE,
7147                  ACTIVE_START_DATE,
7148                  ACTIVE_END_DATE,
7149                  LOCATION_TYPE_CODE,
7150                  LOCATION_ID,
7151                  INV_ORGANIZATION_ID,
7152                  INV_SUBINVENTORY_NAME,
7153                  INV_LOCATOR_ID,
7154                  PA_PROJECT_ID,
7155                  PA_PROJECT_TASK_ID,
7156                  IN_TRANSIT_ORDER_LINE_ID,
7157                  WIP_JOB_ID,
7158                  PO_ORDER_LINE_ID,
7159                  LAST_OE_ORDER_LINE_ID,
7160                  LAST_OE_RMA_LINE_ID,
7161                  LAST_PO_PO_LINE_ID,
7162                  LAST_OE_PO_NUMBER,
7163                  LAST_WIP_JOB_ID,
7164                  LAST_PA_PROJECT_ID,
7165                  LAST_PA_TASK_ID,
7166                  LAST_OE_AGREEMENT_ID,
7167                  INSTALL_DATE,
7168                  MANUALLY_CREATED_FLAG,
7169                  RETURN_BY_DATE,
7170                  ACTUAL_RETURN_DATE,
7171                  CREATION_COMPLETE_FLAG,
7172                  COMPLETENESS_FLAG,
7173                  NULL VERSION_LABEL,
7174                  NULL VERSION_LABEL_DESCRIPTION,
7175                  CONTEXT,
7176                  ATTRIBUTE1,
7177                  ATTRIBUTE2,
7178                  ATTRIBUTE3,
7179                  ATTRIBUTE4,
7180                  ATTRIBUTE5,
7181                  ATTRIBUTE6,
7182                  ATTRIBUTE7,
7183                  ATTRIBUTE8,
7184                  ATTRIBUTE9,
7185                  ATTRIBUTE10,
7186                  ATTRIBUTE11,
7187                  ATTRIBUTE12,
7188                  ATTRIBUTE13,
7189                  ATTRIBUTE14,
7190                  ATTRIBUTE15,
7191                  OBJECT_VERSION_NUMBER,
7192                  LAST_TXN_LINE_DETAIL_ID,
7193                  INSTALL_LOCATION_TYPE_CODE,
7194                  INSTALL_LOCATION_ID,
7195                  INSTANCE_USAGE_CODE,
7196                  LAST_VLD_ORGANIZATION_ID,
7197                  CONFIG_INST_REV_NUM,
7198                  CONFIG_VALID_STATUS,
7199                  INSTANCE_DESCRIPTION,
7200                --start of column addition for eam integration--
7201                  NETWORK_ASSET_FLAG,
7202                  MAINTAINABLE_FLAG,
7203                  PN_LOCATION_ID,
7204                  ASSET_CRITICALITY_CODE,
7205                  CATEGORY_ID,
7206                  EQUIPMENT_GEN_OBJECT_ID,
7207                  INSTANTIATION_FLAG,
7208                  LINEAR_LOCATION_ID,
7209                  OPERATIONAL_LOG_FLAG,
7210                  CHECKIN_STATUS,
7211                  SUPPLIER_WARRANTY_EXP_DATE,
7212                  ATTRIBUTE16,
7213                  ATTRIBUTE17,
7214                  ATTRIBUTE18,
7215                  ATTRIBUTE19,
7216                  ATTRIBUTE20,
7217                  ATTRIBUTE21,
7218                  ATTRIBUTE22,
7219                  ATTRIBUTE23,
7220                  ATTRIBUTE24,
7221                  ATTRIBUTE25,
7222                  ATTRIBUTE26,
7223                  ATTRIBUTE27,
7224                  ATTRIBUTE28,
7225                  ATTRIBUTE29,
7226                  ATTRIBUTE30,
7227                --end of column addition for eam integration--
7228                -- Addition of columns for FA Integration
7229                  PURCHASE_UNIT_PRICE,
7230                  PURCHASE_CURRENCY_CODE,
7231                  PAYABLES_UNIT_PRICE,
7232                  PAYABLES_CURRENCY_CODE,
7233                  SALES_UNIT_PRICE,
7234                  SALES_CURRENCY_CODE,
7235                  OPERATIONAL_STATUS_CODE,
7236                -- End addition of columns for FA Integration
7237                  SOURCE_CODE -- Added Code for Siebel Genesis Project
7238            FROM  csi_item_instances
7239            WHERE instance_id = p_instance_id
7240            FOR UPDATE OF OBJECT_VERSION_NUMBER ;
7241 
7242     l_curr_instance_rec      curr_instance_rec%ROWTYPE;
7243     --
7244     CURSOR new_instance_rec(p_instance_id IN NUMBER) IS
7245     select * from csi_item_instances
7246     where instance_id = p_instance_id;
7247     --
7248     l_new_instance_rec      new_instance_rec%ROWTYPE;
7249 
7250  CURSOR ins_hist_csr(p_instance_history_id NUMBER) IS
7251              SELECT  instance_history_id
7252                     ,instance_id
7253                     ,transaction_id
7254                     ,old_instance_number
7255                     ,new_instance_number
7256                     ,old_external_reference
7257                     ,new_external_reference
7258                     ,old_inventory_item_id
7259                     ,new_inventory_item_id
7260                     ,old_inventory_revision
7261                     ,new_inventory_revision
7262                     ,old_inv_master_organization_id
7263                     ,new_inv_master_organization_id
7264                     ,old_serial_number
7265                     ,new_serial_number
7266                     ,old_mfg_serial_number_flag
7267                     ,new_mfg_serial_number_flag
7268                     ,old_lot_number
7269                     ,new_lot_number
7270                     ,old_quantity
7271                     ,new_quantity
7272                     ,old_unit_of_measure
7273                     ,new_unit_of_measure
7274                     ,old_accounting_class_code
7275                     ,new_accounting_class_code
7276                     ,old_instance_condition_id
7277                     ,new_instance_condition_id
7278                     ,old_instance_status_id
7279                     ,new_instance_status_id
7280                     ,old_customer_view_flag
7281                     ,new_customer_view_flag
7282                     ,old_merchant_view_flag
7283                     ,new_merchant_view_flag
7284                     ,old_sellable_flag
7285                     ,new_sellable_flag
7286                     ,old_system_id
7287                     ,new_system_id
7288                     ,old_instance_type_code
7289                     ,new_instance_type_code
7290                     ,old_active_start_date
7291                     ,new_active_start_date
7292                     ,old_active_end_date
7293                     ,new_active_end_date
7294                     ,old_location_type_code
7295                     ,new_location_type_code
7296                     ,old_location_id
7297                     ,new_location_id
7298                     ,old_inv_organization_id
7299                     ,new_inv_organization_id
7300                     ,old_inv_subinventory_name
7301                     ,new_inv_subinventory_name
7302                     ,old_inv_locator_id
7303                     ,new_inv_locator_id
7304                     ,old_pa_project_id
7305                     ,new_pa_project_id
7306                     ,old_pa_project_task_id
7307                     ,new_pa_project_task_id
7308                     ,old_in_transit_order_line_id
7309                     ,new_in_transit_order_line_id
7310                     ,old_wip_job_id
7311                     ,new_wip_job_id
7312                     ,old_po_order_line_id
7313                     ,new_po_order_line_id
7314                     ,old_completeness_flag
7315                     ,new_completeness_flag
7316                     ,old_context
7317                     ,new_context
7318                     ,old_attribute1
7319                     ,new_attribute1
7320                     ,old_attribute2
7321                     ,new_attribute2
7322                     ,old_attribute3
7323                     ,new_attribute3
7324                     ,old_attribute4
7325                     ,new_attribute4
7326                     ,old_attribute5
7327                     ,new_attribute5
7328                     ,old_attribute6
7329                     ,new_attribute6
7330                     ,old_attribute7
7331                     ,new_attribute7
7332                     ,old_attribute8
7333                     ,new_attribute8
7334                     ,old_attribute9
7335                     ,new_attribute9
7336                     ,old_attribute10
7337                     ,new_attribute10
7338                     ,old_attribute11
7339                     ,new_attribute11
7340                     ,old_attribute12
7341                     ,new_attribute12
7342                     ,old_attribute13
7343                     ,new_attribute13
7344                     ,old_attribute14
7345                     ,new_attribute14
7346                     ,old_attribute15
7347                     ,new_attribute15
7348                     ,full_dump_flag
7349                     ,old_inst_loc_type_code
7350                     ,new_inst_loc_type_code
7351                     ,old_inst_loc_id
7352                     ,new_inst_loc_id
7353                     ,old_inst_usage_code
7354                     ,new_inst_usage_code
7355                     ,old_last_vld_organization_id
7356                     ,new_last_vld_organization_id
7357                     ,old_config_inst_rev_num
7358                     ,new_config_inst_rev_num
7359                     ,old_config_valid_status
7360                     ,new_config_valid_status
7361                     ,old_instance_description
7362                     ,new_instance_description
7363                     ,old_oe_agreement_id
7364                     ,new_oe_agreement_id
7365                     ,old_last_oe_order_line_id
7366                     ,new_last_oe_order_line_id
7367                     ,old_last_oe_rma_line_id
7368                     ,new_last_oe_rma_line_id
7369                     ,old_last_wip_job_id
7370                     ,new_last_wip_job_id
7371                     ,old_last_po_po_line_id
7372                     ,new_last_po_po_line_id
7373                     ,old_last_pa_project_id
7374                     ,new_last_pa_project_id
7375                     ,old_last_pa_task_id
7376                     ,new_last_pa_task_id
7377                     ,old_last_txn_line_detail_id
7378                     ,new_last_txn_line_detail_id
7379                     ,old_last_oe_po_number
7380                     ,new_last_oe_po_number
7381 		    --start of column addition for eam integration--
7382                     ,old_network_asset_flag
7383                     ,new_network_asset_flag
7384                     ,old_maintainable_flag
7385                     ,new_maintainable_flag
7386                     ,old_pn_location_id
7387                     ,new_pn_location_id
7388                     ,old_asset_criticality_code
7389                     ,new_asset_criticality_code
7390                     ,old_category_id
7391                     ,new_category_id
7392                     ,old_equipment_gen_object_id
7393                     ,new_equipment_gen_object_id
7394                     ,old_instantiation_flag
7395                     ,new_instantiation_flag
7396                     ,old_linear_location_id
7397                     ,new_linear_location_id
7398                     ,old_operational_log_flag
7399                     ,new_operational_log_flag
7400                     ,old_checkin_status
7401                     ,new_checkin_status
7402                     ,old_supplier_warranty_exp_date
7403                     ,new_supplier_warranty_exp_date
7404                     ,old_attribute16
7405                     ,new_attribute16
7406                     ,old_attribute17
7407                     ,new_attribute17
7408                     ,old_attribute18
7409                     ,new_attribute18
7410                     ,old_attribute19
7411                     ,new_attribute19
7412                     ,old_attribute20
7413                     ,new_attribute20
7414                     ,old_attribute21
7415                     ,new_attribute21
7416                     ,old_attribute22
7417                     ,new_attribute22
7418                     ,old_attribute23
7419                     ,new_attribute23
7420                     ,old_attribute24
7421                     ,new_attribute24
7422                     ,old_attribute25
7423                     ,new_attribute25
7424                     ,old_attribute26
7425                     ,new_attribute26
7426                     ,old_attribute27
7427                     ,new_attribute27
7428                     ,old_attribute28
7429                     ,new_attribute28
7430                     ,old_attribute29
7431                     ,new_attribute29
7432                     ,old_attribute30
7433                     ,new_attribute30
7434                     ,old_install_date
7435                     ,new_install_date
7436 		    --end of column addition for eam integration--
7437             -- Addition of columns for FA Integration
7438                     ,old_payables_unit_price
7439                     ,new_payables_unit_price
7440                     ,old_payables_currency_code
7441                     ,new_payables_currency_code
7442                     ,old_purchase_unit_price
7443                     ,new_purchase_unit_price
7444                     ,old_purchase_currency_code
7445                     ,new_purchase_currency_code
7446                     ,old_sales_unit_price
7447                     ,new_sales_unit_price
7448                     ,old_sales_currency_code
7449                     ,new_sales_currency_code
7450                     ,old_operational_status_code
7451                     ,new_operational_status_code
7452              -- End addition of columns for FA Integration
7453                     -- Begin Add Code for Siebel Genesis Project
7454                     ,OLD_SOURCE_CODE
7455                     ,NEW_SOURCE_CODE
7456                     -- End Add Code for Siebel Genesis Project
7457              FROM   csi_item_instances_h
7458              WHERE  instance_history_id = p_instance_history_id
7459              FOR UPDATE OF OBJECT_VERSION_NUMBER ;
7460 
7461    l_ins_hist_id             NUMBER;
7462    l_ins_hist_csr            ins_hist_csr%ROWTYPE;
7463    l_last_vld_organization_id NUMBER;
7464    l_child_temp               VARCHAR2(1);
7465    p_rel_query_rec            csi_datastructures_pub.relationship_query_rec;
7466    l_rel_tbl                  csi_datastructures_pub.ii_relationship_tbl;
7467    l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
7468    l_vld_org_id               NUMBER;
7469    PROCESS_NEXT               EXCEPTION;
7470    l_instance_status_id       NUMBER;
7471    l_system_id                NUMBER;
7472    l_termination_status       BOOLEAN := FALSE;
7473    l_order_line_id            NUMBER;
7474    l_oks_txn_type             VARCHAR2(3);
7475    l_internal_party_id        NUMBER;
7476    l_party_id                 NUMBER;
7477    l_eam_item                 BOOLEAN := FALSE;
7478    l_instance_history_id      NUMBER;
7479    l_maintenance_object_type  NUMBER := 3;
7480    l_child_count              NUMBER;
7481    l_install_date             DATE;
7482    l_valid                    BOOLEAN     := TRUE;
7483    l_creation_flag            VARCHAR2(1);
7484    l_config_inst_hdr_id       NUMBER := fnd_api.g_miss_num;
7485    l_config_inst_rev_num      NUMBER := fnd_api.g_miss_num;
7486    l_config_inst_item_id      NUMBER := fnd_api.g_miss_num;
7487    l_config_valid_status VARCHAR2(30) := fnd_api.g_miss_char;
7488    l_root_asset_id            NUMBER;
7489    l_exists                   VARCHAR2(1);
7490 BEGIN
7491 
7492    -- Standard Start of API savepoint
7493       IF FND_API.To_Boolean( p_commit )
7494       THEN
7495         SAVEPOINT    update_child_instance_pvt;
7496       END IF;
7497 
7498 
7499    -- Standard call to check for call compatibility.
7500       IF NOT FND_API.Compatible_API_Call (l_api_version,
7501                                           p_api_version,
7502                                           l_api_name   ,
7503                                           G_PKG_NAME    )
7504       THEN
7505             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7506       END IF;
7507 
7508    -- Initialize message list if p_init_msg_list is set to TRUE.
7509       IF FND_API.to_Boolean( p_init_msg_list ) THEN
7510             FND_MSG_PUB.initialize;
7511       END IF;
7512    -- Initialize API return status to success
7513       x_return_status := FND_API.G_RET_STS_SUCCESS;
7514 
7515    -- Check the profile option debug_level for debug message reporting
7516       l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
7517 
7518    -- If debug_level = 1 then dump the procedure name
7519       IF (l_debug_level > 0) THEN
7520           csi_gen_utility_pvt.put_line ( 'update_child_instance_pvt');
7521       END IF;
7522 
7523    -- If the debug level = 2 then dump all the parameters values.
7524       IF (l_debug_level > 1) THEN
7525           csi_gen_utility_pvt.put_line ( 'update_child_instance_pvt:'    ||
7526                                               p_api_version         ||'-'||
7527                                               p_commit              ||'-'||
7528                                               p_init_msg_list            );
7529       END IF;
7530 
7531    -- Start API body
7532    IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
7533       csi_gen_utility_pvt.populate_install_param_rec;
7534    END IF;
7535    --
7536    l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
7537    --
7538    IF l_internal_party_id IS NULL THEN
7539       FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
7540       FND_MSG_PUB.ADD;
7541       RAISE FND_API.G_EXC_ERROR;
7542    END IF;
7543    --
7544    -- ADDED FOR BUG 2957236
7545      IF p_instance_rec.instance_status_id IS NOT NULL AND
7546         p_instance_rec.instance_status_id <> fnd_api.g_miss_num
7547      THEN
7548          IF csi_item_instance_vld_pvt.termination_status
7549             ( p_instance_status_id => p_instance_rec.instance_status_id )
7550          THEN
7551              l_termination_status := TRUE;
7552              l_config_inst_hdr_id := null;
7553              l_config_inst_rev_num := null;
7554              l_config_inst_item_id := null;
7555              l_config_valid_status := null;
7556          ELSE
7557              l_termination_status := FALSE;
7558          END IF;
7559      END IF;
7560     -- END ADDITION FOR BUG 2957236
7561 
7562  -- Start API body
7563  p_rel_query_rec.object_id := p_instance_rec.instance_id;
7564  p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
7565  --
7566 IF p_rel_query_rec.object_id IS NOT NULL AND
7567    p_rel_query_rec.object_id <> FND_API.G_MISS_NUM THEN
7568    IF p_unexpire = FND_API.G_TRUE THEN
7569        csi_gen_utility_pvt.put_line ( 'Calling Get_Children for Un-expiry...');
7570        csi_ii_relationships_pvt.Get_Children
7571 	 ( p_relationship_query_rec   => p_rel_query_rec,
7572 	   p_rel_tbl                  => l_rel_tbl,
7573 	   p_depth                    => NULL,
7574 	   p_active_relationship_only => FND_API.G_TRUE,
7575            p_active_instances_only    => FND_API.G_FALSE, -- should be passed only when un-expiring
7576 	   p_time_stamp               => FND_API.G_MISS_DATE,
7577 	   p_get_dfs                  => FND_API.G_FALSE,
7578 	   p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
7579 	   x_return_status            => x_return_status,
7580 	   x_msg_count                => x_msg_count,
7581 	   x_msg_data                 => x_msg_data
7582 	 );
7583        --
7584        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7585 	  FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
7586 	  FND_MSG_PUB.Add;
7587 	  RAISE FND_API.G_EXC_ERROR;
7588        END IF;
7589    ELSE
7590       csi_gen_utility_pvt.put_line ( 'Calling Get_Children for Regular Inheritance...');
7591       csi_ii_relationships_pvt.Get_Children
7592 	 ( p_relationship_query_rec   => p_rel_query_rec,
7593 	   p_rel_tbl                  => l_rel_tbl,
7594 	   p_depth                    => NULL,
7595 	   p_active_relationship_only => FND_API.G_TRUE,
7596 	   p_time_stamp               => FND_API.G_MISS_DATE,
7597 	   p_get_dfs                  => FND_API.G_FALSE,
7598 	   p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
7599 	   x_return_status            => x_return_status,
7600 	   x_msg_count                => x_msg_count,
7601 	   x_msg_data                 => x_msg_data
7602 	 );
7603        --
7604        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7605 	  FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
7606 	  FND_MSG_PUB.Add;
7607 	  RAISE FND_API.G_EXC_ERROR;
7608        END IF;
7609    END IF;
7610 END IF;
7611   --
7612 csi_gen_utility_pvt.put_line ( 'Rel Table count is : '||to_char(l_rel_tbl.count));
7613 --
7614 -- FOR l_child_instance_id IN child_instances
7615 IF l_rel_tbl.count > 0 THEN
7616    FOR j IN l_rel_tbl.FIRST .. l_rel_tbl.LAST
7617    LOOP
7618        BEGIN
7619            csi_gen_utility_pvt.put_line ( 'Processing Child Instance : '||to_char(l_rel_tbl(j).subject_id));
7620            -- Opening Cursor to retrieve Child Id records Details
7621               OPEN curr_instance_rec(l_rel_tbl(j).subject_id);
7622               FETCH curr_instance_rec INTO l_curr_instance_rec;
7623                  IF curr_instance_rec%NOTFOUND THEN
7624                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
7625                     FND_MSG_PUB.ADD;
7626                     RAISE FND_API.G_EXC_ERROR;
7627                  END IF;
7628               CLOSE curr_instance_rec;
7629               --This code has been added to make sure that the expired child instance should not get inherited
7630               --if there is any update to the parent in the component-of relationship.
7631               --Start of modifications for Bug#2887590
7632               --
7633               -- srramakr commented out active_end_date condition since the inheritance should look only for Qty
7634               -- active_end_date check will not allow you to un-expire a child instance having qty > 0.
7635               -- No need to select from CSI_ITEM_INSTANCES since l_curr_instance_re already has the instance info.
7636               IF l_curr_instance_rec.quantity = 0 THEN
7637                  RAISE PROCESS_NEXT;
7638               END IF;
7639               --End of modifications for Bug#2887590
7640               --
7641 
7642        p_instance_rec.object_version_number := l_curr_instance_rec.object_version_number + 1;
7643 
7644          -- Following code is added for bug 2957236.
7645          -- If termination_status then it should be assigned to all the child instances
7646          -- else it should be assigned to only those instances which are with the same instance status
7647          -- as that of the parent.
7648          l_instance_status_id:= fnd_api.g_miss_num;
7649          IF l_termination_status
7650          THEN
7651             l_instance_status_id := p_instance_rec.instance_status_id;
7652          ELSIF NOT(l_termination_status)
7653          THEN
7654             IF  p_original_status_id=l_curr_instance_rec.instance_status_id
7655             AND p_original_status_id <> fnd_api.g_miss_num
7656             THEN
7657                l_instance_status_id:=p_instance_rec.instance_status_id;
7658             END IF;
7659          END IF;
7660          -- System_id Cascade
7661          l_system_id := fnd_api.g_miss_num;
7662          IF p_original_system_id IS NOT NULL AND
7663             p_original_system_id <> fnd_api.g_miss_num THEN
7664             IF p_original_system_id = nvl(l_curr_instance_rec.system_id,-999) THEN
7665                l_system_id := p_instance_rec.system_id;
7666             END IF;
7667          ELSIF p_original_system_id IS NULL AND
7668                l_curr_instance_rec.system_id IS NULL THEN
7669             l_system_id := p_instance_rec.system_id;
7670          END IF;
7671          -- Install Date Cascade
7672          -- Cascade only if the component has the same install date as parent
7673          l_install_date := fnd_api.g_miss_date;
7674          IF p_orig_install_date IS NOT NULL AND
7675             p_orig_install_date <> fnd_api.g_miss_date THEN
7676             IF p_orig_install_date = nvl(l_curr_instance_rec.install_date,fnd_api.g_miss_date) THEN
7677                l_install_date := p_instance_rec.install_date;
7678             END IF;
7679          ELSIF p_orig_install_date IS NULL AND
7680                l_curr_instance_rec.install_date IS NULL THEN
7681             l_install_date := p_instance_rec.install_date;
7682          END IF;
7683          -- Start code addition for eam integration
7684            IF csi_item_instance_vld_pvt.Check_for_eam_item
7685               (p_inventory_item_id  => l_curr_instance_rec.inventory_item_id,
7686                p_organization_id    => l_curr_instance_rec.last_vld_organization_id)
7687            THEN
7688              l_eam_item := TRUE;
7689            END IF;
7690 
7691            IF l_eam_item AND
7692              (p_instance_rec.active_end_date IS NOT NULL AND
7693               p_instance_rec.active_end_date <> fnd_api.g_miss_date)
7694            THEN
7695             IF NOT eam_common_utilities_pvt.check_deactivate
7696               (p_maintenance_object_id   => l_rel_tbl(j).subject_id
7697               ,p_maintenance_object_type => l_maintenance_object_type)
7698             THEN
7699               csi_gen_utility_pvt.put_line('Error from eam_common_utilities_pvt.check_deactivate API ');
7700               RAISE fnd_api.g_exc_error;
7701             END IF;
7702            END IF;
7703         -- End code addition for eam integration
7704         --
7705         l_child_count := p_child_inst_tbl.count + 1;
7706         p_child_inst_tbl(l_child_count) := l_rel_tbl(j).subject_id;
7707         --
7708     -- validate instance status id
7709        IF NVL(l_instance_status_id,fnd_api.g_miss_num) <> fnd_api.g_miss_num
7710        THEN
7711          csi_item_instance_vld_pvt.is_valid_status(
7712            p_instance_status_id     => l_instance_status_id,
7713            p_creation_complete_flag => l_creation_flag,
7714            l_return_value           => l_valid);
7715           IF NOT(l_valid)
7716           THEN
7717              RAISE fnd_api.g_exc_error;
7718           END IF;
7719         END IF;
7720 
7721         IF l_instance_status_id IS NOT NULL AND
7722            l_instance_status_id <> FND_API.G_MISS_NUM AND
7723            l_instance_status_id <> l_curr_instance_rec.INSTANCE_STATUS_ID
7724         THEN
7725            IF NOT csi_item_instance_vld_pvt.is_status_updateable
7726                   (p_instance_status => l_instance_status_id
7727                   ,p_current_status  => l_curr_instance_rec.INSTANCE_STATUS_ID)
7728            THEN
7729              RAISE fnd_api.g_exc_error;
7730            END IF;
7731         END IF;
7732 
7733         --Start of:Added for bug 6177045
7734 	--Modified for bug 13039570
7735         IF l_curr_instance_rec.LAST_OE_ORDER_LINE_ID IS NULL
7736 	THEN
7737             l_curr_instance_rec.LAST_OE_ORDER_LINE_ID := p_instance_Rec.LAST_OE_ORDER_LINE_ID;
7738         ELSE
7739             BEGIN
7740               SELECT  'Y'
7741               INTO    l_exists
7742               FROM    oe_order_lines_all ool1,
7743                       oe_order_lines_all ool2
7744               WHERE   ool1.header_id = ool2.header_id
7745               AND     ool1.line_id = l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
7746               AND     ool2.line_id = p_instance_Rec.LAST_OE_ORDER_LINE_ID
7747               AND     ROWNUM = 1;
7748             EXCEPTION
7749             WHEN No_Data_Found THEN
7750               l_curr_instance_rec.LAST_OE_ORDER_LINE_ID := p_instance_Rec.LAST_OE_ORDER_LINE_ID;
7751              END;
7752          END IF;
7753         --End of:Added for bug 6177045
7754 
7755 		--Added for bug 7708851, base bug 7239642
7756 	    BEGIN
7757 	      SELECT 'Y'
7758 	      INTO l_create_event_called
7759 	      FROM csi_item_instances_h
7760 	      WHERE instance_id = l_rel_tbl(j).subject_id
7761 	      AND new_accounting_class_code = 'CUST_PROD'
7762 	      AND ROWNUM = 1;
7763 	    EXCEPTION
7764 	      WHEN OTHERS THEN
7765 	        l_create_event_called := 'N';
7766 	    END;
7767 	    IF (l_debug_level > 1) THEN
7768 	      csi_gen_utility_pvt.put_line('l_create_event_called  : '||l_create_event_called);
7769 	    END IF;
7770 
7771        CSI_ITEM_INSTANCES_PKG.Update_Row
7772        (  p_INSTANCE_ID                 => l_rel_tbl(j).subject_id,
7773           p_INSTANCE_NUMBER             => FND_API.G_MISS_CHAR,
7774           p_EXTERNAL_REFERENCE          => FND_API.G_MISS_CHAR,
7775           p_INVENTORY_ITEM_ID           => FND_API.G_MISS_NUM,
7776           p_INVENTORY_REVISION          => FND_API.G_MISS_CHAR,
7777           p_INV_MASTER_ORGANIZATION_ID  => FND_API.G_MISS_NUM,
7778           p_SERIAL_NUMBER               => FND_API.G_MISS_CHAR,
7779           p_MFG_SERIAL_NUMBER_FLAG      => FND_API.G_MISS_CHAR,
7780           p_LOT_NUMBER                  => FND_API.G_MISS_CHAR,
7781           p_QUANTITY                    => FND_API.G_MISS_NUM,
7782           p_UNIT_OF_MEASURE             => FND_API.G_MISS_CHAR,
7783           p_ACCOUNTING_CLASS_CODE       => p_instance_rec.ACCOUNTING_CLASS_CODE,
7784           p_INSTANCE_CONDITION_ID       => FND_API.G_MISS_NUM,
7785           p_INSTANCE_STATUS_ID          => l_instance_status_id, --p_instance_rec.INSTANCE_STATUS_ID,
7786           p_CUSTOMER_VIEW_FLAG          => FND_API.G_MISS_CHAR,
7787           p_MERCHANT_VIEW_FLAG          => FND_API.G_MISS_CHAR,
7788           p_SELLABLE_FLAG               => FND_API.G_MISS_CHAR,
7789           p_SYSTEM_ID                   => l_system_id,--FND_API.G_MISS_NUM,
7790           p_INSTANCE_TYPE_CODE          => FND_API.G_MISS_CHAR,
7791           p_ACTIVE_START_DATE           => FND_API.G_MISS_DATE,
7792           p_ACTIVE_END_DATE             => p_instance_Rec.ACTIVE_END_DATE,
7793           p_LOCATION_TYPE_CODE          => p_instance_rec.LOCATION_TYPE_CODE,
7794           p_LOCATION_ID                 => p_instance_rec.LOCATION_ID,
7795           p_INV_ORGANIZATION_ID         => p_instance_rec.INV_ORGANIZATION_ID,
7796           p_INV_SUBINVENTORY_NAME       => p_instance_rec.INV_SUBINVENTORY_NAME,
7797           p_INV_LOCATOR_ID              => p_instance_rec.INV_LOCATOR_ID,
7798           p_PA_PROJECT_ID               => p_instance_rec.PA_PROJECT_ID,
7799           p_PA_PROJECT_TASK_ID          => p_instance_rec.PA_PROJECT_TASK_ID,
7800           p_IN_TRANSIT_ORDER_LINE_ID    => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID,
7801           p_WIP_JOB_ID                  => p_instance_rec.WIP_JOB_ID,
7802           p_PO_ORDER_LINE_ID            => p_instance_rec.PO_ORDER_LINE_ID,
7803           --p_LAST_OE_ORDER_LINE_ID       => p_instance_rec.LAST_OE_ORDER_LINE_ID,  Commented for bug 6177045
7804 	  p_LAST_OE_ORDER_LINE_ID       => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID, --Added for bug 6177045
7805           --Start of changes for bug:5899043
7806 	  p_LAST_OE_RMA_LINE_ID         => FND_API.G_MISS_NUM, --p_instance_rec.LAST_OE_RMA_LINE_ID,
7807           p_LAST_PO_PO_LINE_ID          => FND_API.G_MISS_NUM, --p_instance_rec.LAST_PO_PO_LINE_ID,
7808           p_LAST_OE_PO_NUMBER           => FND_API.G_MISS_CHAR,--p_instance_rec.LAST_OE_PO_NUMBER,
7809           p_LAST_WIP_JOB_ID             => FND_API.G_MISS_NUM, --p_instance_rec.LAST_WIP_JOB_ID,
7810           p_LAST_PA_PROJECT_ID          => FND_API.G_MISS_NUM, --p_instance_rec.LAST_PA_PROJECT_ID,
7811           p_LAST_PA_TASK_ID             => FND_API.G_MISS_NUM, --p_instance_rec.LAST_PA_TASK_ID,
7812           p_LAST_OE_AGREEMENT_ID        => FND_API.G_MISS_NUM, --p_instance_rec.LAST_OE_AGREEMENT_ID,
7813 	  --End of changes for bug:5899043
7814           p_INSTALL_DATE                => l_install_date, -- Install Date should be cascaded
7815           p_MANUALLY_CREATED_FLAG       => FND_API.G_MISS_CHAR,
7816           p_RETURN_BY_DATE              => FND_API.G_MISS_DATE,
7817           p_ACTUAL_RETURN_DATE          => FND_API.G_MISS_DATE,
7818           p_CREATION_COMPLETE_FLAG      => FND_API.G_MISS_CHAR,
7819           p_COMPLETENESS_FLAG           => FND_API.G_MISS_CHAR,
7820           p_CONTEXT                     => FND_API.G_MISS_CHAR,
7821           p_ATTRIBUTE1                  => FND_API.G_MISS_CHAR,
7822           p_ATTRIBUTE2                  => FND_API.G_MISS_CHAR,
7823           p_ATTRIBUTE3                  => FND_API.G_MISS_CHAR,
7824           p_ATTRIBUTE4                  => FND_API.G_MISS_CHAR,
7825           p_ATTRIBUTE5                  => FND_API.G_MISS_CHAR,
7826           p_ATTRIBUTE6                  => FND_API.G_MISS_CHAR,
7827           p_ATTRIBUTE7                  => FND_API.G_MISS_CHAR,
7828           p_ATTRIBUTE8                  => FND_API.G_MISS_CHAR,
7829           p_ATTRIBUTE9                  => FND_API.G_MISS_CHAR,
7830           p_ATTRIBUTE10                 => FND_API.G_MISS_CHAR,
7831           p_ATTRIBUTE11                 => FND_API.G_MISS_CHAR,
7832           p_ATTRIBUTE12                 => FND_API.G_MISS_CHAR,
7833           p_ATTRIBUTE13                 => FND_API.G_MISS_CHAR,
7834           p_ATTRIBUTE14                 => FND_API.G_MISS_CHAR,
7835           p_ATTRIBUTE15                 => FND_API.G_MISS_CHAR,
7836           p_CREATED_BY                  => fnd_api.g_miss_num,
7837           p_CREATION_DATE               => fnd_api.g_miss_date,
7838           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID,
7839           p_LAST_UPDATE_DATE            => SYSDATE,
7840           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.CONC_LOGIN_ID,
7841           p_OBJECT_VERSION_NUMBER       => p_instance_rec.OBJECT_VERSION_NUMBER,
7842           p_LAST_TXN_LINE_DETAIL_ID     => FND_API.G_MISS_NUM,
7843           p_INSTALL_LOCATION_TYPE_CODE  => p_instance_rec.INSTALL_LOCATION_TYPE_CODE,
7844           p_INSTALL_LOCATION_ID         => p_instance_rec.INSTALL_LOCATION_ID,
7845           p_INSTANCE_USAGE_CODE         => FND_API.G_MISS_CHAR,
7846           p_LAST_VLD_ORGANIZATION_ID    => FND_API.G_MISS_NUM,
7847           p_CONFIG_INST_HDR_ID          => l_config_inst_hdr_id, --FND_API.G_MISS_NUM,
7848           p_CONFIG_INST_REV_NUM         => l_config_inst_rev_num, --FND_API.G_MISS_NUM,
7849           p_CONFIG_INST_ITEM_ID         => l_config_inst_item_id, --FND_API.G_MISS_NUM,
7850           p_CONFIG_VALID_STATUS         => l_config_valid_status,--FND_API.G_MISS_CHAR,
7851           p_INSTANCE_DESCRIPTION        => FND_API.G_MISS_CHAR,
7852           p_REQUEST_ID                  => FND_API.G_MISS_NUM,
7853           p_PROGRAM_APPLICATION_ID      => FND_API.G_MISS_NUM,
7854           p_PROGRAM_ID                  => FND_API.G_MISS_NUM,
7855           p_PROGRAM_UPDATE_DATE         => FND_API.G_MISS_DATE,
7856 	  --start of parameters addition for eam integration--
7857           p_NETWORK_ASSET_FLAG          => FND_API.G_MISS_CHAR,
7858           p_MAINTAINABLE_FLAG           => FND_API.G_MISS_CHAR,
7859           p_PN_LOCATION_ID              => FND_API.G_MISS_NUM,
7860           p_ASSET_CRITICALITY_CODE      => FND_API.G_MISS_CHAR,
7861           p_CATEGORY_ID                 => FND_API.G_MISS_NUM,
7862           p_EQUIPMENT_GEN_OBJECT_ID     => FND_API.G_MISS_NUM,
7863           p_INSTANTIATION_FLAG          => FND_API.G_MISS_CHAR,
7864           p_LINEAR_LOCATION_ID          => FND_API.G_MISS_NUM,
7865           p_OPERATIONAL_LOG_FLAG        => FND_API.G_MISS_CHAR,
7866           p_CHECKIN_STATUS              => FND_API.G_MISS_NUM,
7867           p_SUPPLIER_WARRANTY_EXP_DATE  => FND_API.G_MISS_DATE,
7868           p_ATTRIBUTE16                 => FND_API.G_MISS_CHAR,
7869           p_ATTRIBUTE17                 => FND_API.G_MISS_CHAR,
7870           p_ATTRIBUTE18                 => FND_API.G_MISS_CHAR,
7871           p_ATTRIBUTE19                 => FND_API.G_MISS_CHAR,
7872           p_ATTRIBUTE20                 => FND_API.G_MISS_CHAR,
7873           p_ATTRIBUTE21                 => FND_API.G_MISS_CHAR,
7874           p_ATTRIBUTE22                 => FND_API.G_MISS_CHAR,
7875           p_ATTRIBUTE23                 => FND_API.G_MISS_CHAR,
7876           p_ATTRIBUTE24                 => FND_API.G_MISS_CHAR,
7877           p_ATTRIBUTE25                 => FND_API.G_MISS_CHAR,
7878           p_ATTRIBUTE26                 => FND_API.G_MISS_CHAR,
7879           p_ATTRIBUTE27                 => FND_API.G_MISS_CHAR,
7880           p_ATTRIBUTE28                 => FND_API.G_MISS_CHAR,
7881           p_ATTRIBUTE29                 => FND_API.G_MISS_CHAR,
7882           p_ATTRIBUTE30                 => FND_API.G_MISS_CHAR,
7883 	  --end of parameters addition for eam integration--
7884    -- Addition of columns for FA Integration
7885           p_PURCHASE_UNIT_PRICE         => FND_API.G_MISS_NUM,
7886           p_PURCHASE_CURRENCY_CODE      => FND_API.G_MISS_CHAR,
7887           p_PAYABLES_UNIT_PRICE         => FND_API.G_MISS_NUM,
7888           p_PAYABLES_CURRENCY_CODE      => FND_API.G_MISS_CHAR,
7889           p_SALES_UNIT_PRICE            => FND_API.G_MISS_NUM,
7890           p_SALES_CURRENCY_CODE         => FND_API.G_MISS_CHAR,
7891           p_OPERATIONAL_STATUS_CODE     => p_instance_rec.operational_status_code,
7892     -- End addition of columns for FA Integration
7893           p_SOURCE_CODE                 => p_instance_rec.SOURCE_CODE -- Added Code for Siebel Genesis Project
7894     );
7895 
7896 	  --If block added for bug 7239642
7897       csi_gen_utility_pvt.put_line('l_raise_bes_event                  : ' || l_raise_bes_event);
7898       csi_gen_utility_pvt.put_line('p_instance_rec.INSTANCE_USAGE_CODE : ' || p_instance_rec.INSTANCE_USAGE_CODE);
7899       IF l_raise_bes_event = 'Y' THEN
7900         IF p_instance_rec.INSTANCE_USAGE_CODE = 'OUT_OF_ENTERPRISE' THEN
7901           IF l_create_event_called = 'N' THEN
7902             csi_gen_utility_pvt.put_line('Calling Create Instance Event');
7903             CSI_BUSINESS_EVENT_PVT.CREATE_INSTANCE_EVENT
7904               ( p_api_version         => p_api_version
7905                ,p_commit              => fnd_api.g_false
7906                ,p_init_msg_list       => p_init_msg_list
7907                ,p_validation_level    => p_validation_level
7908                ,p_instance_id         => l_rel_tbl(j).subject_id
7909                ,p_subject_instance_id => null
7910                ,x_return_status       => x_return_status
7911                ,x_msg_count           => x_msg_count
7912                ,x_msg_data            => x_msg_data
7913               );
7914 
7915             IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7916                 l_msg_index := 1;
7917                 l_msg_count := x_msg_count;
7918 
7919                 WHILE l_msg_count > 0 LOOP
7920                    x_msg_data := FND_MSG_PUB.GET(l_msg_index, FND_API.G_FALSE);
7921                    csi_gen_utility_pvt.put_line(' Error from CSI_BUSINESS_EVENT.CREATE_INSTANCE_EVENT');
7922                    csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
7923                    l_msg_index := l_msg_index + 1;
7924                    l_msg_count := l_msg_count - 1;
7925                 END LOOP;
7926                 RAISE FND_API.G_EXC_ERROR;
7927             END IF;
7928 
7929             --Added call to update instance event for bug 7699277
7930             --As the integration design requires a create event to create the asset
7931             --and an update event to create the relationship hierarchy
7932             l_root_asset_id := csi_ii_relationships_pvt.Get_Root_Parent(l_rel_tbl(j).subject_id,
7933                                             l_rel_tbl(j).relationship_type_code,
7934                                             l_rel_tbl(j).object_id);
7935             csi_gen_utility_pvt.put_line('l_rel_tbl(' || j || ').subject_id             : ' || l_rel_tbl(j).subject_id);
7936             csi_gen_utility_pvt.put_line('l_rel_tbl(' || j || ').relationship_type_code : ' || l_rel_tbl(j).relationship_type_code);
7937             csi_gen_utility_pvt.put_line('l_rel_tbl(' || j || ').object_id              : ' || l_rel_tbl(j).object_id);
7938             csi_gen_utility_pvt.put_line('l_root_asset_id                     : ' || l_root_asset_id);
7939             csi_gen_utility_pvt.put_line('Calling Update Instance Event');
7940             CSI_BUSINESS_EVENT_PVT.UPDATE_INSTANCE_EVENT
7941               ( p_api_version         => p_api_version
7942                ,p_commit              => fnd_api.g_false
7943                ,p_init_msg_list       => p_init_msg_list
7944                ,p_validation_level    => p_validation_level
7945                ,p_instance_id         => l_rel_tbl(j).subject_id
7946                ,p_subject_instance_id => nvl(l_root_asset_id, l_rel_tbl(j).object_id)
7947                ,x_return_status       => x_return_status
7948                ,x_msg_count           => x_msg_count
7949                ,x_msg_data            => x_msg_data
7950               );
7951 
7952             IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7953                 l_msg_index := 1;
7954                 l_msg_count := x_msg_count;
7955 
7956                 WHILE l_msg_count > 0 LOOP
7957                    x_msg_data := FND_MSG_PUB.GET(l_msg_index, FND_API.G_FALSE);
7958                    csi_gen_utility_pvt.put_line(' Error from CSI_BUSINESS_EVENT.UPDATE_INSTANCE_EVENT');
7959                    csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
7960                    l_msg_index := l_msg_index + 1;
7961                    l_msg_count := l_msg_count - 1;
7962                 END LOOP;
7963                 RAISE FND_API.G_EXC_ERROR;
7964             END IF;
7965           ELSIF l_create_event_called = 'Y' THEN
7966             csi_gen_utility_pvt.put_line('Calling Update Instance Event');
7967             CSI_BUSINESS_EVENT_PVT.UPDATE_INSTANCE_EVENT
7968               ( p_api_version         => p_api_version
7969                ,p_commit              => fnd_api.g_false
7970                ,p_init_msg_list       => p_init_msg_list
7971                ,p_validation_level    => p_validation_level
7972                ,p_instance_id         => l_rel_tbl(j).subject_id
7973                ,p_subject_instance_id => null
7974                ,x_return_status       => x_return_status
7975                ,x_msg_count           => x_msg_count
7976                ,x_msg_data            => x_msg_data
7977               );
7978 
7979             IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
7980                 l_msg_index := 1;
7981                 l_msg_count := x_msg_count;
7982 
7983                 WHILE l_msg_count > 0 LOOP
7984                    x_msg_data := FND_MSG_PUB.GET(l_msg_index, FND_API.G_FALSE);
7985                    csi_gen_utility_pvt.put_line(' Error from CSI_BUSINESS_EVENT.UPDATE_INSTANCE_EVENT');
7986                    csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
7987                    l_msg_index := l_msg_index + 1;
7988                    l_msg_count := l_msg_count - 1;
7989                 END LOOP;
7990                 RAISE FND_API.G_EXC_ERROR;
7991             END IF;
7992           END IF; --l_create_event_called
7993         END IF; --p_instance_rec.ACCOUNTING_CLASS_CODE
7994       END IF;
7995 -- Get the full_dump_frequency from csi_install_parameter
7996        --
7997       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
7998           csi_gen_utility_pvt.populate_install_param_rec;
7999        END IF;
8000        --
8001        l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
8002        --
8003        IF l_full_dump_frequency IS NULL THEN
8004           FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
8005           FND_MSG_PUB.ADD;
8006           RAISE FND_API.G_EXC_ERROR;
8007        END IF;
8008        --
8009  -- Get a unique history item instance id from the sequence
8010           l_csi_item_instance_h_id :=
8011                                  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
8012 
8013        SELECT MOD(p_instance_rec.object_version_number,l_full_dump_frequency)
8014        INTO   l_mod_value
8015        FROM   dual;
8016 
8017        -- Start of modifications for Bug#2547034 on 09/20/02 - rtalluri
8018         BEGIN
8019         SELECT  instance_history_id
8020         INTO    l_ins_hist_id
8021         FROM    csi_item_instances_h h
8022         WHERE   h.transaction_id = p_txn_rec.transaction_id
8023         AND     h.instance_id = l_rel_tbl(j).subject_id;
8024 
8025         OPEN   ins_hist_csr(l_ins_hist_id);
8026         FETCH  ins_hist_csr INTO l_ins_hist_csr ;
8027         CLOSE  ins_hist_csr;
8028 
8029         IF l_ins_hist_csr.full_dump_flag = 'Y'
8030         THEN
8031           CSI_ITEM_INSTANCES_H_PKG.Update_Row
8032            ( p_INSTANCE_HISTORY_ID               => l_ins_hist_id
8033             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
8034             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
8035             ,p_OLD_INSTANCE_NUMBER               => fnd_api.g_miss_char
8036             ,p_NEW_INSTANCE_NUMBER               => fnd_api.g_miss_char
8037             ,p_OLD_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
8038             ,p_NEW_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
8039             ,p_OLD_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
8040             ,p_NEW_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
8041             ,p_OLD_INVENTORY_REVISION            => fnd_api.g_miss_char
8042             ,p_NEW_INVENTORY_REVISION            => fnd_api.g_miss_char
8043             ,p_OLD_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
8044             ,p_NEW_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
8045             ,p_OLD_SERIAL_NUMBER                 => fnd_api.g_miss_char
8046             ,p_NEW_SERIAL_NUMBER                 => fnd_api.g_miss_char
8047             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
8048             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
8049             ,p_OLD_LOT_NUMBER                    => fnd_api.g_miss_char
8050             ,p_NEW_LOT_NUMBER                    => fnd_api.g_miss_char
8051             ,p_OLD_QUANTITY                      => fnd_api.g_miss_num
8052             ,p_NEW_QUANTITY                      => fnd_api.g_miss_num
8053             ,p_OLD_UNIT_OF_MEASURE               => fnd_api.g_miss_char
8054             ,p_NEW_UNIT_OF_MEASURE               => fnd_api.g_miss_char
8055             ,p_OLD_ACCOUNTING_CLASS_CODE         => fnd_api.g_miss_char
8056             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
8057             ,p_OLD_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
8058             ,p_NEW_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
8059             ,p_OLD_INSTANCE_STATUS_ID            => fnd_api.g_miss_num
8060             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_status_id --p_instance_rec.INSTANCE_STATUS_ID
8061             ,p_OLD_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
8062             ,p_NEW_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
8063             ,p_OLD_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
8064             ,p_NEW_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
8065             ,p_OLD_SELLABLE_FLAG                 => fnd_api.g_miss_char
8066             ,p_NEW_SELLABLE_FLAG                 => fnd_api.g_miss_char
8067             ,p_OLD_SYSTEM_ID                     => fnd_api.g_miss_num
8068             ,p_NEW_SYSTEM_ID                     => l_system_id
8069             ,p_OLD_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
8070             ,p_NEW_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
8071             ,p_OLD_ACTIVE_START_DATE             => fnd_api.g_miss_date
8072             ,p_NEW_ACTIVE_START_DATE             => fnd_api.g_miss_date
8073             ,p_OLD_ACTIVE_END_DATE               => fnd_api.g_miss_date
8074             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
8075             ,p_OLD_LOCATION_TYPE_CODE            => fnd_api.g_miss_char
8076             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
8077             ,p_OLD_LOCATION_ID                   => fnd_api.g_miss_num
8078             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
8079             ,p_OLD_INV_ORGANIZATION_ID           => fnd_api.g_miss_num
8080             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
8081             ,p_OLD_INV_SUBINVENTORY_NAME         => fnd_api.g_miss_char
8082             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
8083             ,p_OLD_INV_LOCATOR_ID                => fnd_api.g_miss_num
8084             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
8085             ,p_OLD_PA_PROJECT_ID                 => fnd_api.g_miss_num
8086             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
8087             ,p_OLD_PA_PROJECT_TASK_ID            => fnd_api.g_miss_num
8088             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
8089             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => fnd_api.g_miss_num
8090             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
8091             ,p_OLD_WIP_JOB_ID                    => fnd_api.g_miss_num
8092             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
8093             ,p_OLD_PO_ORDER_LINE_ID              => fnd_api.g_miss_num
8094             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
8095             ,p_OLD_COMPLETENESS_FLAG             => fnd_api.g_miss_char
8096             ,p_NEW_COMPLETENESS_FLAG             => fnd_api.g_miss_char
8097             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
8098             ,p_NEW_CONTEXT                       => fnd_api.g_miss_char
8099             ,P_OLD_CONTEXT                       => fnd_api.g_miss_char
8100             ,p_NEW_ATTRIBUTE1                    => fnd_api.g_miss_char
8101             ,p_OLD_ATTRIBUTE1                    => fnd_api.g_miss_char
8102             ,p_NEW_ATTRIBUTE2                    => fnd_api.g_miss_char
8103             ,p_OLD_ATTRIBUTE2                    => fnd_api.g_miss_char
8104             ,p_NEW_ATTRIBUTE3                    => fnd_api.g_miss_char
8105             ,p_OLD_ATTRIBUTE3                    => fnd_api.g_miss_char
8106             ,p_NEW_ATTRIBUTE4                    => fnd_api.g_miss_char
8107             ,p_OLD_ATTRIBUTE4                    => fnd_api.g_miss_char
8108             ,p_NEW_ATTRIBUTE5                    => fnd_api.g_miss_char
8109             ,p_OLD_ATTRIBUTE5                    => fnd_api.g_miss_char
8110             ,p_NEW_ATTRIBUTE6                    => fnd_api.g_miss_char
8111             ,p_OLD_ATTRIBUTE6                    => fnd_api.g_miss_char
8112             ,p_NEW_ATTRIBUTE7                    => fnd_api.g_miss_char
8113             ,p_OLD_ATTRIBUTE7                    => fnd_api.g_miss_char
8114             ,p_NEW_ATTRIBUTE8                    => fnd_api.g_miss_char
8115             ,p_OLD_ATTRIBUTE8                    => fnd_api.g_miss_char
8116             ,p_NEW_ATTRIBUTE9                    => fnd_api.g_miss_char
8117             ,p_OLD_ATTRIBUTE9                    => fnd_api.g_miss_char
8118             ,p_NEW_ATTRIBUTE10                   => fnd_api.g_miss_char
8119             ,p_OLD_ATTRIBUTE10                   => fnd_api.g_miss_char
8120             ,p_NEW_ATTRIBUTE11                   => fnd_api.g_miss_char
8121             ,p_OLD_ATTRIBUTE11                   => fnd_api.g_miss_char
8122             ,p_NEW_ATTRIBUTE12                   => fnd_api.g_miss_char
8123             ,p_OLD_ATTRIBUTE12                   => fnd_api.g_miss_char
8124             ,p_NEW_ATTRIBUTE13                   => fnd_api.g_miss_char
8125             ,p_OLD_ATTRIBUTE13                   => fnd_api.g_miss_char
8126             ,p_NEW_ATTRIBUTE14                   => fnd_api.g_miss_char
8127             ,p_OLD_ATTRIBUTE14                   => fnd_api.g_miss_char
8128             ,p_NEW_ATTRIBUTE15                   => fnd_api.g_miss_char
8129             ,p_OLD_ATTRIBUTE15                   => fnd_api.g_miss_char
8130             ,p_CREATED_BY                        => fnd_api.g_miss_num
8131             ,p_CREATION_DATE                     => fnd_api.g_miss_date
8132             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
8133             ,p_LAST_UPDATE_DATE                  => SYSDATE
8134             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
8135             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
8136             ,p_OLD_INST_LOC_TYPE_CODE            => fnd_api.g_miss_char
8137             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
8138             ,p_OLD_INST_LOC_ID                   => fnd_api.g_miss_num
8139             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
8140             ,p_OLD_INST_USAGE_CODE               => fnd_api.g_miss_char
8141             ,p_NEW_INST_USAGE_CODE               => fnd_api.g_miss_char
8142             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
8143             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
8144             ,p_OLD_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
8145             ,p_NEW_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
8146             ,p_OLD_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
8147             ,p_NEW_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
8148             ,p_OLD_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
8149             ,p_NEW_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
8150             ,p_OLD_INSTALL_DATE                  => fnd_api.g_miss_date
8151             ,p_NEW_INSTALL_DATE                  => l_install_date
8152             ,p_OLD_RETURN_BY_DATE                => fnd_api.g_miss_date
8153             ,p_NEW_RETURN_BY_DATE                => fnd_api.g_miss_date
8154             ,p_OLD_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
8155             ,p_NEW_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
8156             ,p_OLD_LAST_OE_AGREEMENT_ID          => fnd_api.g_miss_num
8157             ,p_NEW_LAST_OE_AGREEMENT_ID          => fnd_api.g_miss_num
8158             ,p_OLD_LAST_OE_ORDER_LINE_ID         => fnd_api.g_miss_num
8159             ,p_NEW_LAST_OE_ORDER_LINE_ID         => fnd_api.g_miss_num --p_instance_rec.LAST_OE_ORDER_LINE_ID
8160             ,p_OLD_LAST_OE_RMA_LINE_ID        => fnd_api.g_miss_num
8161             ,p_NEW_LAST_OE_RMA_LINE_ID        => fnd_api.g_miss_num --p_instance_rec.LAST_OE_RMA_LINE_ID
8162             ,p_OLD_LAST_WIP_JOB_ID               => fnd_api.g_miss_num --fnd_api.g_miss_num
8163             ,p_NEW_LAST_WIP_JOB_ID               => fnd_api.g_miss_num --p_instance_rec.LAST_WIP_JOB_ID
8164             ,p_OLD_LAST_PO_PO_LINE_ID            => fnd_api.g_miss_num --fnd_api.g_miss_num
8165             ,p_NEW_LAST_PO_PO_LINE_ID            => fnd_api.g_miss_num --p_instance_rec.LAST_PO_PO_LINE_ID
8166             ,p_OLD_LAST_PA_PROJECT_ID            => fnd_api.g_miss_num --fnd_api.g_miss_num
8167             ,p_NEW_LAST_PA_PROJECT_ID            => fnd_api.g_miss_num --p_instance_rec.LAST_PA_PROJECT_ID
8168             ,p_OLD_LAST_PA_TASK_ID          => fnd_api.g_miss_num --fnd_api.g_miss_num
8169             ,p_NEW_LAST_PA_TASK_ID          => fnd_api.g_miss_num --p_instance_rec.LAST_PA_TASK_ID
8170             ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => fnd_api.g_miss_num
8171             ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => fnd_api.g_miss_num --p_instance_rec.LAST_TXN_LINE_DETAIL_ID
8172             ,p_OLD_LAST_OE_PO_NUMBER             => fnd_api.g_miss_char
8173             ,p_NEW_LAST_OE_PO_NUMBER             => fnd_api.g_miss_char --p_instance_rec.LAST_OE_PO_NUMBER
8174 	    --start of parameters addition for eam integration--
8175             ,p_OLD_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
8176             ,p_NEW_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
8177    	        ,p_OLD_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
8178 	        ,p_NEW_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
8179             ,p_OLD_PN_LOCATION_ID                 => fnd_api.g_miss_num
8180             ,p_NEW_PN_LOCATION_ID                 => fnd_api.g_miss_num
8181             ,p_OLD_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
8182             ,p_NEW_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
8183             ,p_OLD_CATEGORY_ID                    => fnd_api.g_miss_num
8184             ,p_NEW_CATEGORY_ID                    => fnd_api.g_miss_num
8185             ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
8186             ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
8187             ,p_OLD_INSTANTIATION_FLAG             => fnd_api.g_miss_char
8188             ,p_NEW_INSTANTIATION_FLAG             => fnd_api.g_miss_char
8189             ,p_OLD_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
8190             ,p_NEW_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
8191             ,p_OLD_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
8192             ,p_NEW_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
8193             ,p_OLD_CHECKIN_STATUS                 => fnd_api.g_miss_NUM
8194             ,p_NEW_CHECKIN_STATUS                 => fnd_api.g_miss_NUM
8195             ,p_OLD_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
8196             ,p_NEW_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
8197             ,p_OLD_ATTRIBUTE16                    => fnd_api.g_miss_char
8198             ,p_NEW_ATTRIBUTE16                    => fnd_api.g_miss_char
8199             ,p_OLD_ATTRIBUTE17                    => fnd_api.g_miss_char
8200             ,p_NEW_ATTRIBUTE17                    => fnd_api.g_miss_char
8201             ,p_OLD_ATTRIBUTE18                    => fnd_api.g_miss_char
8202             ,p_NEW_ATTRIBUTE18                    => fnd_api.g_miss_char
8203             ,p_OLD_ATTRIBUTE19                    => fnd_api.g_miss_char
8204             ,p_NEW_ATTRIBUTE19                    => fnd_api.g_miss_char
8205             ,p_OLD_ATTRIBUTE20                    => fnd_api.g_miss_char
8206             ,p_NEW_ATTRIBUTE20                    => fnd_api.g_miss_char
8207             ,p_OLD_ATTRIBUTE21                    => fnd_api.g_miss_char
8208             ,p_NEW_ATTRIBUTE21                    => fnd_api.g_miss_char
8209             ,p_OLD_ATTRIBUTE22                    => fnd_api.g_miss_char
8210             ,p_NEW_ATTRIBUTE22                    => fnd_api.g_miss_char
8211             ,p_OLD_ATTRIBUTE23                    => fnd_api.g_miss_char
8212             ,p_NEW_ATTRIBUTE23                    => fnd_api.g_miss_char
8213             ,p_OLD_ATTRIBUTE24                    => fnd_api.g_miss_char
8214             ,p_NEW_ATTRIBUTE24                    => fnd_api.g_miss_char
8215             ,p_OLD_ATTRIBUTE25                    => fnd_api.g_miss_char
8216             ,p_NEW_ATTRIBUTE25                    => fnd_api.g_miss_char
8217             ,p_OLD_ATTRIBUTE26                    => fnd_api.g_miss_char
8218             ,p_NEW_ATTRIBUTE26                    => fnd_api.g_miss_char
8219             ,p_OLD_ATTRIBUTE27                    => fnd_api.g_miss_char
8220             ,p_NEW_ATTRIBUTE27                    => fnd_api.g_miss_char
8221             ,p_OLD_ATTRIBUTE28                    => fnd_api.g_miss_char
8222             ,p_NEW_ATTRIBUTE28                    => fnd_api.g_miss_char
8223             ,p_OLD_ATTRIBUTE29                    => fnd_api.g_miss_char
8224             ,p_NEW_ATTRIBUTE29                    => fnd_api.g_miss_char
8225             ,p_OLD_ATTRIBUTE30                    => fnd_api.g_miss_char
8226             ,p_NEW_ATTRIBUTE30                    => fnd_api.g_miss_char
8227   	    --end of parameters addition for eam integration--
8228         -- Addition of columns for FA Integration
8229             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
8230             ,p_NEW_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
8231             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
8232             ,p_NEW_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
8233             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
8234             ,p_NEW_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
8235             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
8236             ,p_NEW_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
8237             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
8238             ,p_NEW_SALES_UNIT_PRICE               => fnd_api.g_miss_num
8239             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
8240             ,p_NEW_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
8241             ,p_OLD_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
8242             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.operational_status_code
8243         -- End addition of columns for FA Integration
8244             -- Begin Add Code for Siebel Genesis Project
8245             ,p_OLD_SOURCE_CODE                   => fnd_api.g_miss_char
8246             ,p_NEW_SOURCE_CODE                   => fnd_api.g_miss_char
8247             -- End Add Code for Siebel Genesis Project
8248             );
8249 
8250         ELSE --l_ins_hist_csr.full_dump_flag = 'N'
8251 
8252              IF    ( l_ins_hist_csr.old_accounting_class_code IS NULL
8253                 AND  l_ins_hist_csr.new_accounting_class_code IS NULL ) THEN
8254                      IF  ( p_instance_rec.accounting_class_code = l_curr_instance_rec.accounting_class_code )
8255                       OR ( p_instance_rec.accounting_class_code = fnd_api.g_miss_char ) THEN
8256                            l_ins_hist_csr.old_accounting_class_code := NULL;
8257                            l_ins_hist_csr.new_accounting_class_code := NULL;
8258                      ELSE
8259                            l_ins_hist_csr.old_accounting_class_code := fnd_api.g_miss_char;
8260                            l_ins_hist_csr.new_accounting_class_code := p_instance_rec.accounting_class_code;
8261                      END IF;
8262              ELSE
8263                      l_ins_hist_csr.old_accounting_class_code := fnd_api.g_miss_char;
8264                      l_ins_hist_csr.new_accounting_class_code := p_instance_rec.accounting_class_code;
8265              END IF;
8266              --
8267              IF    ( l_ins_hist_csr.old_instance_status_id IS NULL
8268                 AND  l_ins_hist_csr.new_instance_status_id IS NULL ) THEN
8269                      IF  ( l_instance_status_id = l_curr_instance_rec.instance_status_id )
8270                       OR ( l_instance_status_id = fnd_api.g_miss_num ) THEN
8271                            l_ins_hist_csr.old_instance_status_id := NULL;
8272                            l_ins_hist_csr.new_instance_status_id := NULL;
8273                      ELSE
8274                            l_ins_hist_csr.old_instance_status_id := fnd_api.g_miss_num;
8275                            l_ins_hist_csr.new_instance_status_id := l_instance_status_id;
8276                      END IF;
8277              ELSE
8278                      l_ins_hist_csr.old_instance_status_id := fnd_api.g_miss_num;
8279                      l_ins_hist_csr.new_instance_status_id := l_instance_status_id;
8280              END IF;
8281              --
8282              IF    ( l_ins_hist_csr.old_system_id IS NULL
8283                 AND  l_ins_hist_csr.new_system_id IS NULL ) THEN
8284                      IF  ( l_system_id = l_curr_instance_rec.system_id )
8285                       OR ( l_system_id = fnd_api.g_miss_num ) THEN
8286                            l_ins_hist_csr.old_system_id := NULL;
8287                            l_ins_hist_csr.new_system_id := NULL;
8288                      ELSE
8289                            l_ins_hist_csr.old_system_id := fnd_api.g_miss_num;
8290                            l_ins_hist_csr.new_system_id := l_system_id;
8291                      END IF;
8292              ELSE
8293                      l_ins_hist_csr.old_system_id := fnd_api.g_miss_num;
8294                      l_ins_hist_csr.new_system_id := l_system_id;
8295              END IF;
8296              --
8297              IF    ( l_ins_hist_csr.old_install_date IS NULL
8298                 AND  l_ins_hist_csr.new_install_date IS NULL ) THEN
8299                      IF  ( l_install_date = l_curr_instance_rec.install_date )
8300                       OR ( l_install_date = fnd_api.g_miss_date ) THEN
8301                            l_ins_hist_csr.old_install_date := NULL;
8302                            l_ins_hist_csr.new_install_date := NULL;
8303                      ELSE
8304                            l_ins_hist_csr.old_install_date := fnd_api.g_miss_date;
8305                            l_ins_hist_csr.new_install_date := l_install_date;
8306                      END IF;
8307              ELSE
8308                      l_ins_hist_csr.old_install_date := fnd_api.g_miss_date;
8309                      l_ins_hist_csr.new_install_date := l_install_date;
8310              END IF;
8311              --
8312              IF    ( l_ins_hist_csr.old_active_end_date IS NULL
8313                 AND  l_ins_hist_csr.new_active_end_date IS NULL ) THEN
8314                      IF  ( p_instance_rec.active_end_date = l_curr_instance_rec.active_end_date )
8315                       OR ( p_instance_rec.active_end_date = fnd_api.g_miss_date ) THEN
8316                            l_ins_hist_csr.old_active_end_date := NULL;
8317                            l_ins_hist_csr.new_active_end_date := NULL;
8318                      ELSE
8319                            l_ins_hist_csr.old_active_end_date := fnd_api.g_miss_date;
8320                            l_ins_hist_csr.new_active_end_date := p_instance_rec.active_end_date;
8321                      END IF;
8322              ELSE
8323                      l_ins_hist_csr.old_active_end_date := fnd_api.g_miss_date;
8324                      l_ins_hist_csr.new_active_end_date := p_instance_rec.active_end_date;
8325              END IF;
8326              --
8327              IF    ( l_ins_hist_csr.old_location_type_code IS NULL
8328                 AND  l_ins_hist_csr.new_location_type_code IS NULL ) THEN
8329                      IF  ( p_instance_rec.location_type_code = l_curr_instance_rec.location_type_code )
8330                       OR ( p_instance_rec.location_type_code = fnd_api.g_miss_char ) THEN
8331                            l_ins_hist_csr.old_location_type_code := NULL;
8332                            l_ins_hist_csr.new_location_type_code := NULL;
8333                      ELSE
8334                            l_ins_hist_csr.old_location_type_code := fnd_api.g_miss_char;
8335                            l_ins_hist_csr.new_location_type_code := p_instance_rec.location_type_code;
8336                      END IF;
8337              ELSE
8338                      l_ins_hist_csr.old_location_type_code := fnd_api.g_miss_char;
8339                      l_ins_hist_csr.new_location_type_code := p_instance_rec.location_type_code;
8340              END IF;
8341              --
8342              IF    ( l_ins_hist_csr.old_location_id IS NULL
8343                 AND  l_ins_hist_csr.new_location_id IS NULL ) THEN
8344                      IF  ( p_instance_rec.location_id = l_curr_instance_rec.location_id )
8345                       OR ( p_instance_rec.location_id = fnd_api.g_miss_num ) THEN
8346                            l_ins_hist_csr.old_location_id := NULL;
8347                            l_ins_hist_csr.new_location_id := NULL;
8348                      ELSE
8349                            l_ins_hist_csr.old_location_id := fnd_api.g_miss_num;
8350                            l_ins_hist_csr.new_location_id := p_instance_rec.location_id;
8351                      END IF;
8352              ELSE
8353                      l_ins_hist_csr.old_location_id := fnd_api.g_miss_num;
8354                      l_ins_hist_csr.new_location_id := p_instance_rec.location_id;
8355              END IF;
8356              --
8357              IF    ( l_ins_hist_csr.old_inv_organization_id IS NULL
8358                 AND  l_ins_hist_csr.new_inv_organization_id IS NULL ) THEN
8359                      IF  ( p_instance_rec.inv_organization_id = l_curr_instance_rec.inv_organization_id )
8360                       OR ( p_instance_rec.inv_organization_id = fnd_api.g_miss_num ) THEN
8361                            l_ins_hist_csr.old_inv_organization_id := NULL;
8362                            l_ins_hist_csr.new_inv_organization_id := NULL;
8363                      ELSE
8364                            l_ins_hist_csr.old_inv_organization_id := fnd_api.g_miss_num;
8365                            l_ins_hist_csr.new_inv_organization_id := p_instance_rec.inv_organization_id;
8366                      END IF;
8367              ELSE
8368                      l_ins_hist_csr.old_inv_organization_id := fnd_api.g_miss_num;
8369                      l_ins_hist_csr.new_inv_organization_id := p_instance_rec.inv_organization_id;
8370              END IF;
8371              --
8372              IF    ( l_ins_hist_csr.old_inv_subinventory_name IS NULL
8373                 AND  l_ins_hist_csr.new_inv_subinventory_name IS NULL ) THEN
8374                      IF  ( p_instance_rec.inv_subinventory_name = l_curr_instance_rec.inv_subinventory_name )
8375                       OR ( p_instance_rec.inv_subinventory_name = fnd_api.g_miss_char ) THEN
8376                            l_ins_hist_csr.old_inv_subinventory_name := NULL;
8377                            l_ins_hist_csr.new_inv_subinventory_name := NULL;
8378                      ELSE
8379                            l_ins_hist_csr.old_inv_subinventory_name := fnd_api.g_miss_char;
8380                            l_ins_hist_csr.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name;
8381                      END IF;
8382              ELSE
8383                      l_ins_hist_csr.old_inv_subinventory_name := fnd_api.g_miss_char;
8384                      l_ins_hist_csr.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name;
8385              END IF;
8386              --
8387              IF    ( l_ins_hist_csr.old_inv_locator_id IS NULL
8388                 AND  l_ins_hist_csr.new_inv_locator_id IS NULL ) THEN
8389                      IF  ( p_instance_rec.inv_locator_id = l_curr_instance_rec.inv_locator_id )
8390                       OR ( p_instance_rec.inv_locator_id = fnd_api.g_miss_num ) THEN
8391                            l_ins_hist_csr.old_inv_locator_id := NULL;
8392                            l_ins_hist_csr.new_inv_locator_id := NULL;
8393                      ELSE
8394                            l_ins_hist_csr.old_inv_locator_id := fnd_api.g_miss_num;
8395                            l_ins_hist_csr.new_inv_locator_id := p_instance_rec.inv_locator_id;
8396                      END IF;
8397              ELSE
8398                      l_ins_hist_csr.old_inv_locator_id := fnd_api.g_miss_num;
8399                      l_ins_hist_csr.new_inv_locator_id := p_instance_rec.inv_locator_id;
8400              END IF;
8401              --
8402              IF    ( l_ins_hist_csr.old_pa_project_id IS NULL
8403                 AND  l_ins_hist_csr.new_pa_project_id IS NULL ) THEN
8404                      IF  ( p_instance_rec.pa_project_id = l_curr_instance_rec.pa_project_id )
8405                       OR ( p_instance_rec.pa_project_id = fnd_api.g_miss_num ) THEN
8406                            l_ins_hist_csr.old_pa_project_id := NULL;
8407                            l_ins_hist_csr.new_pa_project_id := NULL;
8408                      ELSE
8409                            l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
8410                            l_ins_hist_csr.new_pa_project_id := p_instance_rec.pa_project_id;
8411                      END IF;
8412              ELSE
8413                      l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
8414                      l_ins_hist_csr.new_pa_project_id := p_instance_rec.pa_project_id;
8415              END IF;
8416              --
8417              IF    ( l_ins_hist_csr.old_pa_project_task_id IS NULL
8418                 AND  l_ins_hist_csr.new_pa_project_task_id IS NULL ) THEN
8419                      IF  ( p_instance_rec.pa_project_task_id = l_curr_instance_rec.pa_project_task_id )
8420                       OR ( p_instance_rec.pa_project_task_id = fnd_api.g_miss_num ) THEN
8421                            l_ins_hist_csr.old_pa_project_task_id := NULL;
8422                            l_ins_hist_csr.new_pa_project_task_id := NULL;
8423                      ELSE
8424                            l_ins_hist_csr.old_pa_project_task_id := fnd_api.g_miss_num;
8425                            l_ins_hist_csr.new_pa_project_task_id := p_instance_rec.pa_project_task_id;
8426                      END IF;
8427              ELSE
8428                      l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
8429                      l_ins_hist_csr.new_pa_project_task_id := p_instance_rec.pa_project_task_id;
8430              END IF;
8431              --
8432              IF    ( l_ins_hist_csr.old_in_transit_order_line_id IS NULL
8433                 AND  l_ins_hist_csr.new_in_transit_order_line_id IS NULL ) THEN
8434                      IF  ( p_instance_rec.in_transit_order_line_id = l_curr_instance_rec.in_transit_order_line_id )
8435                       OR ( p_instance_rec.in_transit_order_line_id = fnd_api.g_miss_num ) THEN
8436                            l_ins_hist_csr.old_in_transit_order_line_id := NULL;
8437                            l_ins_hist_csr.new_in_transit_order_line_id := NULL;
8438                      ELSE
8439                            l_ins_hist_csr.old_in_transit_order_line_id := fnd_api.g_miss_num;
8440                            l_ins_hist_csr.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id;
8441                      END IF;
8442              ELSE
8443                      l_ins_hist_csr.old_in_transit_order_line_id := fnd_api.g_miss_num;
8444                      l_ins_hist_csr.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id;
8445              END IF;
8446              --
8447              IF    ( l_ins_hist_csr.old_oe_agreement_id IS NULL
8448                 AND  l_ins_hist_csr.new_oe_agreement_id IS NULL ) THEN
8449                      IF  ( p_instance_rec.last_oe_agreement_id = l_curr_instance_rec.last_oe_agreement_id )
8450                       OR ( p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num ) THEN
8451                            l_ins_hist_csr.old_oe_agreement_id := NULL;
8452                            l_ins_hist_csr.new_oe_agreement_id := NULL;
8453                      ELSE
8454                            l_ins_hist_csr.old_oe_agreement_id := fnd_api.g_miss_num;
8455                            l_ins_hist_csr.new_oe_agreement_id := p_instance_rec.last_oe_agreement_id;
8456                      END IF;
8457              ELSE
8458                      l_ins_hist_csr.old_oe_agreement_id := fnd_api.g_miss_num;
8459                      l_ins_hist_csr.new_oe_agreement_id := p_instance_rec.last_oe_agreement_id;
8460              END IF;
8461              --
8462              IF    ( l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID IS NULL
8463                 AND  l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID IS NULL ) THEN
8464                      IF  ( p_instance_rec.LAST_OE_ORDER_LINE_ID = l_curr_instance_rec.LAST_OE_ORDER_LINE_ID )
8465                       OR ( p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num ) THEN
8466                            l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := NULL;
8467                            l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := NULL;
8468                      ELSE
8469                            l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := fnd_api.g_miss_num;
8470                            l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID;
8471                      END IF;
8472              ELSE
8473                      l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := fnd_api.g_miss_num;
8474                      l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID;
8475              END IF;
8476              --
8477              IF    ( l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID IS NULL
8478                 AND  l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID IS NULL ) THEN
8479                      IF  ( p_instance_rec.LAST_OE_RMA_LINE_ID = l_curr_instance_rec.LAST_OE_RMA_LINE_ID )
8480                       OR ( p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num ) THEN
8481                            l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID := NULL;
8482                            l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID := NULL;
8483                      ELSE
8484                            l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID := fnd_api.g_miss_num;
8485                            l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID;
8486                      END IF;
8487              ELSE
8488                      l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID := fnd_api.g_miss_num;
8489                      l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID;
8490              END IF;
8491              --
8492              IF    ( l_ins_hist_csr.old_LAST_WIP_JOB_ID IS NULL
8493                 AND  l_ins_hist_csr.new_LAST_WIP_JOB_ID IS NULL ) THEN
8494                      IF  ( p_instance_rec.LAST_WIP_JOB_ID = l_curr_instance_rec.LAST_WIP_JOB_ID )
8495                       OR ( p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num ) THEN
8496                            l_ins_hist_csr.old_LAST_WIP_JOB_ID := NULL;
8497                            l_ins_hist_csr.new_LAST_WIP_JOB_ID := NULL;
8498                      ELSE
8499                            l_ins_hist_csr.old_LAST_WIP_JOB_ID := fnd_api.g_miss_num;
8500                            l_ins_hist_csr.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID;
8501                      END IF;
8502              ELSE
8503                      l_ins_hist_csr.old_LAST_WIP_JOB_ID := fnd_api.g_miss_num;
8504                      l_ins_hist_csr.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID;
8505              END IF;
8506              --
8507              IF    ( l_ins_hist_csr.old_LAST_PO_PO_LINE_ID IS NULL
8508                 AND  l_ins_hist_csr.new_LAST_PO_PO_LINE_ID IS NULL ) THEN
8509                      IF  ( p_instance_rec.LAST_PO_PO_LINE_ID = l_curr_instance_rec.LAST_PO_PO_LINE_ID )
8510                       OR ( p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num ) THEN
8511                            l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := NULL;
8512                            l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := NULL;
8513                      ELSE
8514                            l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := fnd_api.g_miss_num;
8515                            l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID;
8516                      END IF;
8517              ELSE
8518                      l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := fnd_api.g_miss_num;
8519                      l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID;
8520              END IF;
8521              --
8522              IF    ( l_ins_hist_csr.old_LAST_PA_PROJECT_ID IS NULL
8523                 AND  l_ins_hist_csr.new_LAST_PA_PROJECT_ID IS NULL ) THEN
8524                      IF  ( p_instance_rec.LAST_PA_PROJECT_ID = l_curr_instance_rec.LAST_PA_PROJECT_ID )
8525                       OR ( p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num ) THEN
8526                            l_ins_hist_csr.old_LAST_PA_PROJECT_ID := NULL;
8527                            l_ins_hist_csr.new_LAST_PA_PROJECT_ID := NULL;
8528                      ELSE
8529                            l_ins_hist_csr.old_LAST_PA_PROJECT_ID := fnd_api.g_miss_num;
8530                            l_ins_hist_csr.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID;
8531                      END IF;
8532              ELSE
8533                      l_ins_hist_csr.old_LAST_PA_PROJECT_ID := fnd_api.g_miss_num;
8534                      l_ins_hist_csr.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID;
8535              END IF;
8536              --
8537              IF    ( l_ins_hist_csr.OLD_LAST_PA_TASK_ID IS NULL
8538                 AND  l_ins_hist_csr.NEW_LAST_PA_TASK_ID IS NULL ) THEN
8539                      IF  ( p_instance_rec.LAST_PA_TASK_ID = l_curr_instance_rec.LAST_PA_TASK_ID )
8540                       OR ( p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num ) THEN
8541                            l_ins_hist_csr.OLD_LAST_PA_TASK_ID := NULL;
8542                            l_ins_hist_csr.NEW_LAST_PA_TASK_ID := NULL;
8543                      ELSE
8544                            l_ins_hist_csr.OLD_LAST_PA_TASK_ID := fnd_api.g_miss_num;
8545                            l_ins_hist_csr.NEW_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID;
8546                      END IF;
8547              ELSE
8548                      l_ins_hist_csr.OLD_LAST_PA_TASK_ID := fnd_api.g_miss_num;
8549                      l_ins_hist_csr.NEW_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID;
8550              END IF;
8551              --
8552              IF    ( l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID IS NULL
8553                 AND  l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID IS NULL ) THEN
8554                      IF  ( p_instance_rec.LAST_TXN_LINE_DETAIL_ID = l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID )
8555                       OR ( p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num ) THEN
8556                            l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := NULL;
8557                            l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := NULL;
8558                      ELSE
8559                            l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := fnd_api.g_miss_num;
8560                            l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
8561                      END IF;
8562              ELSE
8563                      l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := fnd_api.g_miss_num;
8564                      l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
8565              END IF;
8566              --
8567              IF    ( l_ins_hist_csr.old_LAST_OE_PO_NUMBER IS NULL
8568                 AND  l_ins_hist_csr.new_LAST_OE_PO_NUMBER IS NULL ) THEN
8569                      IF  ( p_instance_rec.LAST_OE_PO_NUMBER = l_curr_instance_rec.LAST_OE_PO_NUMBER )
8570                       OR ( p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char ) THEN
8571                            l_ins_hist_csr.old_LAST_OE_PO_NUMBER := NULL;
8572                            l_ins_hist_csr.new_LAST_OE_PO_NUMBER := NULL;
8573                      ELSE
8574                            l_ins_hist_csr.old_LAST_OE_PO_NUMBER := fnd_api.g_miss_char;
8575                            l_ins_hist_csr.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER;
8576                      END IF;
8577              ELSE
8578                      l_ins_hist_csr.old_LAST_OE_PO_NUMBER := fnd_api.g_miss_char;
8579                      l_ins_hist_csr.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER;
8580              END IF;
8581              --
8582              IF    ( l_ins_hist_csr.old_wip_job_id IS NULL
8583                 AND  l_ins_hist_csr.new_wip_job_id IS NULL ) THEN
8584                      IF  ( p_instance_rec.wip_job_id = l_curr_instance_rec.wip_job_id )
8585                       OR ( p_instance_rec.wip_job_id = fnd_api.g_miss_num ) THEN
8586                            l_ins_hist_csr.old_wip_job_id := NULL;
8587                            l_ins_hist_csr.new_wip_job_id := NULL;
8588                      ELSE
8589                            l_ins_hist_csr.old_wip_job_id := fnd_api.g_miss_num;
8590                            l_ins_hist_csr.new_wip_job_id := p_instance_rec.wip_job_id;
8591                      END IF;
8592              ELSE
8593                      l_ins_hist_csr.old_wip_job_id := fnd_api.g_miss_num;
8594                      l_ins_hist_csr.new_wip_job_id := p_instance_rec.wip_job_id;
8595              END IF;
8596              --
8597              IF    ( l_ins_hist_csr.old_po_order_line_id IS NULL
8598                 AND  l_ins_hist_csr.new_po_order_line_id IS NULL ) THEN
8599                      IF  ( p_instance_rec.po_order_line_id = l_curr_instance_rec.po_order_line_id )
8600                       OR ( p_instance_rec.po_order_line_id = fnd_api.g_miss_num ) THEN
8601                            l_ins_hist_csr.old_po_order_line_id := NULL;
8602                            l_ins_hist_csr.new_po_order_line_id := NULL;
8603                      ELSE
8604                            l_ins_hist_csr.old_po_order_line_id := fnd_api.g_miss_num;
8605                            l_ins_hist_csr.new_po_order_line_id := p_instance_rec.po_order_line_id;
8606                      END IF;
8607              ELSE
8608                      l_ins_hist_csr.old_po_order_line_id := fnd_api.g_miss_num;
8609                      l_ins_hist_csr.new_po_order_line_id := p_instance_rec.po_order_line_id;
8610              END IF;
8611              --
8612              IF    ( l_ins_hist_csr.old_inst_loc_type_code IS NULL
8613                 AND  l_ins_hist_csr.new_inst_loc_type_code IS NULL ) THEN
8614                      IF  ( p_instance_rec.install_location_type_code = l_curr_instance_rec.install_location_type_code )
8615                       OR ( p_instance_rec.install_location_type_code = fnd_api.g_miss_char ) THEN
8616                            l_ins_hist_csr.old_inst_loc_type_code := NULL;
8617                            l_ins_hist_csr.new_inst_loc_type_code := NULL;
8618                      ELSE
8619                            l_ins_hist_csr.old_inst_loc_type_code := fnd_api.g_miss_char;
8620                            l_ins_hist_csr.new_inst_loc_type_code := p_instance_rec.install_location_type_code;
8621                      END IF;
8622              ELSE
8623                      l_ins_hist_csr.old_inst_loc_type_code := fnd_api.g_miss_char;
8624                      l_ins_hist_csr.new_inst_loc_type_code := p_instance_rec.install_location_type_code;
8625              END IF;
8626              --
8627              IF    ( l_ins_hist_csr.old_inst_loc_id IS NULL
8628                 AND  l_ins_hist_csr.new_inst_loc_id IS NULL ) THEN
8629                      IF  ( p_instance_rec.install_location_id = l_curr_instance_rec.install_location_id )
8630                       OR ( p_instance_rec.install_location_id = fnd_api.g_miss_num ) THEN
8631                            l_ins_hist_csr.old_inst_loc_id := NULL;
8632                            l_ins_hist_csr.new_inst_loc_id := NULL;
8633                      ELSE
8634                            l_ins_hist_csr.old_inst_loc_id := fnd_api.g_miss_num;
8635                            l_ins_hist_csr.new_inst_loc_id := p_instance_rec.install_location_id;
8636                      END IF;
8637              ELSE
8638                      l_ins_hist_csr.old_inst_loc_id := fnd_api.g_miss_num;
8639                      l_ins_hist_csr.new_inst_loc_id := p_instance_rec.install_location_id;
8640              END IF;
8641              --
8642 
8643              IF    ( l_ins_hist_csr.old_operational_status_code IS NULL
8644                 AND  l_ins_hist_csr.new_operational_status_code IS NULL ) THEN
8645                      IF  ( p_instance_rec.operational_status_code = l_curr_instance_rec.operational_status_code )
8646                       OR ( p_instance_rec.operational_status_code = fnd_api.g_miss_char ) THEN
8647                            l_ins_hist_csr.old_operational_status_code := NULL;
8648                            l_ins_hist_csr.new_operational_status_code := NULL;
8649                      ELSE
8650                            l_ins_hist_csr.old_operational_status_code := fnd_api.g_miss_char;
8651                            l_ins_hist_csr.new_operational_status_code := p_instance_rec.operational_status_code;
8652                      END IF;
8653              ELSE
8654                      l_ins_hist_csr.old_operational_status_code := fnd_api.g_miss_char;
8655                      l_ins_hist_csr.new_operational_status_code := p_instance_rec.operational_status_code;
8656              END IF;
8657 
8658 
8659          CSI_ITEM_INSTANCES_H_PKG.Update_Row
8660            ( p_INSTANCE_HISTORY_ID               => l_ins_hist_id
8661             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
8662             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
8663             ,p_OLD_INSTANCE_NUMBER               => fnd_api.g_miss_char
8664             ,p_NEW_INSTANCE_NUMBER               => fnd_api.g_miss_char
8665             ,p_OLD_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
8666             ,p_NEW_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
8667             ,p_OLD_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
8668             ,p_NEW_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
8669             ,p_OLD_INVENTORY_REVISION            => fnd_api.g_miss_char
8670             ,p_NEW_INVENTORY_REVISION            => fnd_api.g_miss_char
8671             ,p_OLD_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
8672             ,p_NEW_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
8673             ,p_OLD_SERIAL_NUMBER                 => fnd_api.g_miss_char
8674             ,p_NEW_SERIAL_NUMBER                 => fnd_api.g_miss_char
8675             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
8676             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
8677             ,p_OLD_LOT_NUMBER                    => fnd_api.g_miss_char
8678             ,p_NEW_LOT_NUMBER                    => fnd_api.g_miss_char
8679             ,p_OLD_QUANTITY                      => fnd_api.g_miss_num
8680             ,p_NEW_QUANTITY                      => fnd_api.g_miss_num
8681             ,p_OLD_UNIT_OF_MEASURE               => fnd_api.g_miss_char
8682             ,p_NEW_UNIT_OF_MEASURE               => fnd_api.g_miss_char
8683             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_ins_hist_csr.OLD_ACCOUNTING_CLASS_CODE
8684             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_ins_hist_csr.NEW_ACCOUNTING_CLASS_CODE
8685             ,p_OLD_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
8686             ,p_NEW_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
8687             ,p_OLD_INSTANCE_STATUS_ID            => l_ins_hist_csr.OLD_INSTANCE_STATUS_ID
8688             ,p_NEW_INSTANCE_STATUS_ID            => l_ins_hist_csr.NEW_INSTANCE_STATUS_ID
8689             ,p_OLD_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
8690             ,p_NEW_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
8691             ,p_OLD_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
8692             ,p_NEW_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
8693             ,p_OLD_SELLABLE_FLAG                 => fnd_api.g_miss_char
8694             ,p_NEW_SELLABLE_FLAG                 => fnd_api.g_miss_char
8695             ,p_OLD_SYSTEM_ID                     => l_ins_hist_csr.old_system_id
8696             ,p_NEW_SYSTEM_ID                     => l_ins_hist_csr.new_system_id
8697             ,p_OLD_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
8698             ,p_NEW_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
8699             ,p_OLD_ACTIVE_START_DATE             => fnd_api.g_miss_date
8700             ,p_NEW_ACTIVE_START_DATE             => fnd_api.g_miss_date
8701             ,p_OLD_ACTIVE_END_DATE               => l_ins_hist_csr.OLD_ACTIVE_END_DATE
8702             ,p_NEW_ACTIVE_END_DATE               => l_ins_hist_csr.NEW_ACTIVE_END_DATE
8703             ,p_OLD_LOCATION_TYPE_CODE            => l_ins_hist_csr.OLD_LOCATION_TYPE_CODE
8704             ,p_NEW_LOCATION_TYPE_CODE            => l_ins_hist_csr.NEW_LOCATION_TYPE_CODE
8705             ,p_OLD_LOCATION_ID                   => l_ins_hist_csr.OLD_LOCATION_ID
8706             ,p_NEW_LOCATION_ID                   => l_ins_hist_csr.NEW_LOCATION_ID
8707             ,p_OLD_INV_ORGANIZATION_ID           => l_ins_hist_csr.OLD_INV_ORGANIZATION_ID
8708             ,p_NEW_INV_ORGANIZATION_ID           => l_ins_hist_csr.NEW_INV_ORGANIZATION_ID
8709             ,p_OLD_INV_SUBINVENTORY_NAME         => l_ins_hist_csr.OLD_INV_SUBINVENTORY_NAME
8710             ,p_NEW_INV_SUBINVENTORY_NAME         => l_ins_hist_csr.NEW_INV_SUBINVENTORY_NAME
8711             ,p_OLD_INV_LOCATOR_ID                => l_ins_hist_csr.OLD_INV_LOCATOR_ID
8712             ,p_NEW_INV_LOCATOR_ID                => l_ins_hist_csr.NEW_INV_LOCATOR_ID
8713             ,p_OLD_PA_PROJECT_ID                 => l_ins_hist_csr.OLD_PA_PROJECT_ID
8714             ,p_NEW_PA_PROJECT_ID                 => l_ins_hist_csr.NEW_PA_PROJECT_ID
8715             ,p_OLD_PA_PROJECT_TASK_ID            => l_ins_hist_csr.OLD_PA_PROJECT_TASK_ID
8716             ,p_NEW_PA_PROJECT_TASK_ID            => l_ins_hist_csr.NEW_PA_PROJECT_TASK_ID
8717             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_ins_hist_csr.OLD_IN_TRANSIT_ORDER_LINE_ID
8718             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_ins_hist_csr.NEW_IN_TRANSIT_ORDER_LINE_ID
8719             ,p_OLD_WIP_JOB_ID                    => l_ins_hist_csr.OLD_WIP_JOB_ID
8720             ,p_NEW_WIP_JOB_ID                    => l_ins_hist_csr.NEW_WIP_JOB_ID
8721             ,p_OLD_PO_ORDER_LINE_ID              => l_ins_hist_csr.OLD_PO_ORDER_LINE_ID
8722             ,p_NEW_PO_ORDER_LINE_ID              => l_ins_hist_csr.NEW_PO_ORDER_LINE_ID
8723             ,p_OLD_COMPLETENESS_FLAG             => fnd_api.g_miss_char
8724             ,p_NEW_COMPLETENESS_FLAG             => fnd_api.g_miss_char
8725             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
8726             ,p_NEW_CONTEXT                       => fnd_api.g_miss_char
8727             ,P_OLD_CONTEXT                       => fnd_api.g_miss_char
8728             ,p_NEW_ATTRIBUTE1                    => fnd_api.g_miss_char
8729             ,p_OLD_ATTRIBUTE1                    => fnd_api.g_miss_char
8730             ,p_NEW_ATTRIBUTE2                    => fnd_api.g_miss_char
8731             ,p_OLD_ATTRIBUTE2                    => fnd_api.g_miss_char
8732             ,p_NEW_ATTRIBUTE3                    => fnd_api.g_miss_char
8733             ,p_OLD_ATTRIBUTE3                    => fnd_api.g_miss_char
8734             ,p_NEW_ATTRIBUTE4                    => fnd_api.g_miss_char
8735             ,p_OLD_ATTRIBUTE4                    => fnd_api.g_miss_char
8736             ,p_NEW_ATTRIBUTE5                    => fnd_api.g_miss_char
8737             ,p_OLD_ATTRIBUTE5                    => fnd_api.g_miss_char
8738             ,p_NEW_ATTRIBUTE6                    => fnd_api.g_miss_char
8739             ,p_OLD_ATTRIBUTE6                    => fnd_api.g_miss_char
8740             ,p_NEW_ATTRIBUTE7                    => fnd_api.g_miss_char
8741             ,p_OLD_ATTRIBUTE7                    => fnd_api.g_miss_char
8742             ,p_NEW_ATTRIBUTE8                    => fnd_api.g_miss_char
8743             ,p_OLD_ATTRIBUTE8                    => fnd_api.g_miss_char
8744             ,p_NEW_ATTRIBUTE9                    => fnd_api.g_miss_char
8745             ,p_OLD_ATTRIBUTE9                    => fnd_api.g_miss_char
8746             ,p_NEW_ATTRIBUTE10                   => fnd_api.g_miss_char
8747             ,p_OLD_ATTRIBUTE10                   => fnd_api.g_miss_char
8748             ,p_NEW_ATTRIBUTE11                   => fnd_api.g_miss_char
8749             ,p_OLD_ATTRIBUTE11                   => fnd_api.g_miss_char
8750             ,p_NEW_ATTRIBUTE12                   => fnd_api.g_miss_char
8751             ,p_OLD_ATTRIBUTE12                   => fnd_api.g_miss_char
8752             ,p_NEW_ATTRIBUTE13                   => fnd_api.g_miss_char
8753             ,p_OLD_ATTRIBUTE13                   => fnd_api.g_miss_char
8754             ,p_NEW_ATTRIBUTE14                   => fnd_api.g_miss_char
8755             ,p_OLD_ATTRIBUTE14                   => fnd_api.g_miss_char
8756             ,p_NEW_ATTRIBUTE15                   => fnd_api.g_miss_char
8757             ,p_OLD_ATTRIBUTE15                   => fnd_api.g_miss_char
8758             ,p_CREATED_BY                        => fnd_api.g_miss_num
8759             ,p_CREATION_DATE                     => fnd_api.g_miss_date
8760             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
8761             ,p_LAST_UPDATE_DATE                  => SYSDATE
8762             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
8763             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
8764             ,p_OLD_INST_LOC_TYPE_CODE            => l_ins_hist_csr.OLD_INST_LOC_TYPE_CODE
8765             ,p_NEW_INST_LOC_TYPE_CODE            => l_ins_hist_csr.NEW_INST_LOC_TYPE_CODE
8766             ,p_OLD_INST_LOC_ID                   => l_ins_hist_csr.OLD_INST_LOC_ID
8767             ,p_NEW_INST_LOC_ID                   => l_ins_hist_csr.NEW_INST_LOC_ID
8768             ,p_OLD_INST_USAGE_CODE               => fnd_api.g_miss_char
8769             ,p_NEW_INST_USAGE_CODE               => fnd_api.g_miss_char
8770             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
8771             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
8772             ,p_OLD_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
8773             ,p_NEW_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
8774             ,p_OLD_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
8775             ,p_NEW_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
8776             ,p_OLD_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
8777             ,p_NEW_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
8778             ,p_OLD_INSTALL_DATE                  => l_ins_hist_csr.old_install_date
8779             ,p_NEW_INSTALL_DATE                  => l_ins_hist_csr.new_install_date
8780             ,p_OLD_RETURN_BY_DATE                => fnd_api.g_miss_date
8781             ,p_NEW_RETURN_BY_DATE                => fnd_api.g_miss_date
8782             ,p_OLD_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
8783             ,p_NEW_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
8784             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_ins_hist_csr.OLD_OE_AGREEMENT_ID
8785             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_ins_hist_csr.NEW_OE_AGREEMENT_ID
8786             ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_ins_hist_csr.OLD_LAST_OE_ORDER_LINE_ID
8787             ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_ins_hist_csr.NEW_LAST_OE_ORDER_LINE_ID
8788             ,p_OLD_LAST_OE_RMA_LINE_ID        => l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID
8789             ,p_NEW_LAST_OE_RMA_LINE_ID        => l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID
8790             ,p_OLD_LAST_WIP_JOB_ID               => l_ins_hist_csr.OLD_LAST_WIP_JOB_ID
8791             ,p_NEW_LAST_WIP_JOB_ID               => l_ins_hist_csr.NEW_LAST_WIP_JOB_ID
8792             ,p_OLD_LAST_PO_PO_LINE_ID            => l_ins_hist_csr.OLD_LAST_PO_PO_LINE_ID
8793             ,p_NEW_LAST_PO_PO_LINE_ID            => l_ins_hist_csr.NEW_LAST_PO_PO_LINE_ID
8794             ,p_OLD_LAST_PA_PROJECT_ID            => l_ins_hist_csr.OLD_LAST_PA_PROJECT_ID
8795             ,p_NEW_LAST_PA_PROJECT_ID            => l_ins_hist_csr.NEW_LAST_PA_PROJECT_ID
8796             ,p_OLD_LAST_PA_TASK_ID          => l_ins_hist_csr.OLD_LAST_PA_TASK_ID
8797             ,p_NEW_LAST_PA_TASK_ID          => l_ins_hist_csr.NEW_LAST_PA_TASK_ID
8798             ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_ins_hist_csr.OLD_LAST_TXN_LINE_DETAIL_ID
8799             ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_ins_hist_csr.NEW_LAST_TXN_LINE_DETAIL_ID
8800             ,p_OLD_LAST_OE_PO_NUMBER             => l_ins_hist_csr.OLD_LAST_OE_PO_NUMBER
8801             ,p_NEW_LAST_OE_PO_NUMBER             => l_ins_hist_csr.NEW_LAST_OE_PO_NUMBER
8802 	    --start of parameters addition for eam integration--
8803             ,p_OLD_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
8804             ,p_NEW_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
8805             ,p_OLD_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
8806             ,p_NEW_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
8807             ,p_OLD_PN_LOCATION_ID                 => fnd_api.g_miss_num
8808             ,p_NEW_PN_LOCATION_ID                 => fnd_api.g_miss_num
8809             ,p_OLD_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
8810             ,p_NEW_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
8811             ,p_OLD_CATEGORY_ID                    => fnd_api.g_miss_num
8812             ,p_NEW_CATEGORY_ID                    => fnd_api.g_miss_num
8813             ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
8814             ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
8815             ,p_OLD_INSTANTIATION_FLAG             => fnd_api.g_miss_char
8816             ,p_NEW_INSTANTIATION_FLAG             => fnd_api.g_miss_char
8817             ,p_OLD_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
8818             ,p_NEW_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
8819             ,p_OLD_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
8820             ,p_NEW_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
8821             ,p_OLD_CHECKIN_STATUS                 => fnd_api.g_miss_num
8822             ,p_NEW_CHECKIN_STATUS                 => fnd_api.g_miss_num
8823             ,p_OLD_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
8824             ,p_NEW_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
8825             ,p_OLD_ATTRIBUTE16                    => fnd_api.g_miss_char
8826             ,p_NEW_ATTRIBUTE16                    => fnd_api.g_miss_char
8827             ,p_OLD_ATTRIBUTE17                    => fnd_api.g_miss_char
8828             ,p_NEW_ATTRIBUTE17                    => fnd_api.g_miss_char
8829             ,p_OLD_ATTRIBUTE18                    => fnd_api.g_miss_char
8830             ,p_NEW_ATTRIBUTE18                    => fnd_api.g_miss_char
8831             ,p_OLD_ATTRIBUTE19                    => fnd_api.g_miss_char
8832             ,p_NEW_ATTRIBUTE19                    => fnd_api.g_miss_char
8833             ,p_OLD_ATTRIBUTE20                    => fnd_api.g_miss_char
8834             ,p_NEW_ATTRIBUTE20                    => fnd_api.g_miss_char
8835             ,p_OLD_ATTRIBUTE21                    => fnd_api.g_miss_char
8836             ,p_NEW_ATTRIBUTE21                    => fnd_api.g_miss_char
8837             ,p_OLD_ATTRIBUTE22                    => fnd_api.g_miss_char
8838             ,p_NEW_ATTRIBUTE22                    => fnd_api.g_miss_char
8839             ,p_OLD_ATTRIBUTE23                    => fnd_api.g_miss_char
8840             ,p_NEW_ATTRIBUTE23                    => fnd_api.g_miss_char
8841             ,p_OLD_ATTRIBUTE24                    => fnd_api.g_miss_char
8842             ,p_NEW_ATTRIBUTE24                    => fnd_api.g_miss_char
8843             ,p_OLD_ATTRIBUTE25                    => fnd_api.g_miss_char
8844             ,p_NEW_ATTRIBUTE25                    => fnd_api.g_miss_char
8845             ,p_OLD_ATTRIBUTE26                    => fnd_api.g_miss_char
8846             ,p_NEW_ATTRIBUTE26                    => fnd_api.g_miss_char
8847             ,p_OLD_ATTRIBUTE27                    => fnd_api.g_miss_char
8848             ,p_NEW_ATTRIBUTE27                    => fnd_api.g_miss_char
8849             ,p_OLD_ATTRIBUTE28                    => fnd_api.g_miss_char
8850             ,p_NEW_ATTRIBUTE28                    => fnd_api.g_miss_char
8851             ,p_OLD_ATTRIBUTE29                    => fnd_api.g_miss_char
8852             ,p_NEW_ATTRIBUTE29                    => fnd_api.g_miss_char
8853             ,p_OLD_ATTRIBUTE30                    => fnd_api.g_miss_char
8854             ,p_NEW_ATTRIBUTE30                    => fnd_api.g_miss_char
8855   	    --end of parameters addition for eam integration--
8856        -- Addition of columns for FA Integration
8857             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
8858             ,p_NEW_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
8859             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
8860             ,p_NEW_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
8861             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
8862             ,p_NEW_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
8863             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
8864             ,p_NEW_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
8865             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
8866             ,p_NEW_SALES_UNIT_PRICE               => fnd_api.g_miss_num
8867             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
8868             ,p_NEW_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
8869             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_ins_hist_csr.old_operational_status_code
8870             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_ins_hist_csr.new_operational_status_code
8871         -- End addition of columns for FA Integration
8872             -- Begin Add Code for Siebel Genesis Project
8873             ,p_OLD_SOURCE_CODE                   => fnd_api.g_miss_char
8874             ,p_NEW_SOURCE_CODE                   => fnd_api.g_miss_char
8875             -- End Add Code for Siebel Genesis Project
8876             );
8877 
8878         END IF; -- end if of l_ins_hist_csr.full_dump_flag
8879       EXCEPTION
8880 
8881       WHEN NO_DATA_FOUND THEN
8882          -- END OF MODIFICATION ON 22-JUL SK
8883 
8884       -- Check if there is a need to validate instance_usage_code, vld_organization_id
8885          IF (l_mod_value = 0) THEN
8886           -- If the mod value is 0 then dump all the columns both changed and unchanged
8887           -- changed columns have old and new values while the unchanged values have old and new values
8888           -- exactly same
8889 
8890               p_instance_rec.INSTANCE_NUMBER            := l_curr_instance_rec.INSTANCE_NUMBER;
8891               p_instance_rec.EXTERNAL_REFERENCE         := l_curr_instance_rec.EXTERNAL_REFERENCE;
8892               p_instance_rec.INVENTORY_ITEM_ID          := l_curr_instance_rec.INVENTORY_ITEM_ID;
8893               p_instance_rec.INVENTORY_REVISION         := l_curr_instance_rec.INVENTORY_REVISION;
8894               p_instance_rec.INV_MASTER_ORGANIZATION_ID := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
8895               p_instance_rec.SERIAL_NUMBER              := l_curr_instance_rec.SERIAL_NUMBER;
8896               p_instance_rec.MFG_SERIAL_NUMBER_FLAG     := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
8897               p_instance_rec.LOT_NUMBER                 := l_curr_instance_rec.LOT_NUMBER;
8898               p_instance_rec.QUANTITY                   := l_curr_instance_rec.QUANTITY;
8899               p_instance_rec.UNIT_OF_MEASURE            := l_curr_instance_rec.UNIT_OF_MEASURE;
8900               p_instance_rec.INSTANCE_CONDITION_ID      := l_curr_instance_rec.INSTANCE_CONDITION_ID;
8901               p_instance_rec.CUSTOMER_VIEW_FLAG         := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
8902               p_instance_rec.MERCHANT_VIEW_FLAG         := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
8903               p_instance_rec.SELLABLE_FLAG              := l_curr_instance_rec.SELLABLE_FLAG;
8904               p_instance_rec.INSTANCE_TYPE_CODE         := l_curr_instance_rec.INSTANCE_TYPE_CODE;
8905               p_instance_rec.ACTIVE_START_DATE          := l_curr_instance_rec.ACTIVE_START_DATE;
8906 
8907               IF (p_instance_rec.ACCOUNTING_CLASS_CODE = FND_API.G_MISS_CHAR) THEN
8908                   p_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
8909               END IF;
8910               IF (l_instance_status_id = FND_API.G_MISS_NUM) THEN
8911                   l_instance_status_id := l_curr_instance_rec.INSTANCE_STATUS_ID;
8912               END IF;
8913               IF (l_system_id = FND_API.G_MISS_NUM) THEN
8914                   l_system_id := l_curr_instance_rec.INSTANCE_STATUS_ID;
8915               END IF;
8916               IF (l_install_date = FND_API.G_MISS_DATE) THEN
8917                   l_install_date := l_curr_instance_rec.INSTALL_DATE;
8918               END IF;
8919               IF (p_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
8920                   p_instance_rec.ACTIVE_END_dATE := l_curr_instance_rec.ACTIVE_END_DATE;
8921               END IF;
8922               IF (p_instance_rec.LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
8923                   p_instance_rec.LOCATION_TYPE_CODE := l_curr_instance_rec.LOCATION_TYPE_CODE;
8924               END IF;
8925               IF (p_instance_rec.LOCATION_ID = FND_API.G_MISS_NUM) THEN
8926                   p_instance_rec.LOCATION_ID := l_curr_instance_rec.LOCATION_ID;
8927               END IF;
8928               IF (p_instance_rec.INV_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
8929                   p_instance_rec.INV_ORGANIZATION_ID := l_curr_instance_rec.INV_ORGANIZATION_ID;
8930               END IF;
8931               IF (p_instance_rec.INV_SUBINVENTORY_NAME = FND_API.G_MISS_CHAR) THEN
8932                   p_instance_rec.INV_SUBINVENTORY_NAME := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
8933               END IF;
8934               IF (p_instance_rec.INV_LOCATOR_ID = FND_API.G_MISS_NUM) THEN
8935                   p_instance_rec.INV_LOCATOR_ID := l_curr_instance_rec.INV_LOCATOR_ID;
8936               END IF;
8937               IF (p_instance_rec.PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
8938                   p_instance_rec.PA_PROJECT_ID := l_curr_instance_rec.PA_PROJECT_ID;
8939               END IF;
8940               IF (p_instance_rec.PA_PROJECT_TASK_ID = FND_API.G_MISS_NUM) THEN
8941                   p_instance_rec.PA_PROJECT_TASK_ID := l_curr_instance_rec.PA_PROJECT_TASK_ID;
8942               END IF;
8943               IF (p_instance_rec.IN_TRANSIT_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
8944                   p_instance_rec.IN_TRANSIT_ORDER_LINE_ID := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
8945               END IF;
8946               IF (p_instance_rec.WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
8947                   p_instance_rec.WIP_JOB_ID := l_curr_instance_rec.WIP_JOB_ID;
8948               END IF;
8949               IF (p_instance_rec.PO_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
8950                   p_instance_rec.PO_ORDER_LINE_ID := l_curr_instance_rec.PO_ORDER_LINE_ID;
8951               END IF;
8952               IF (p_instance_rec.LAST_OE_AGREEMENT_ID = FND_API.G_MISS_NUM) THEN
8953                   p_instance_rec.LAST_OE_AGREEMENT_ID := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
8954               END IF;
8955               IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
8956                   p_instance_rec.LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
8957               END IF;
8958               IF (p_instance_rec.LAST_OE_RMA_LINE_ID = FND_API.G_MISS_NUM) THEN
8959                   p_instance_rec.LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
8960               END IF;
8961               IF (p_instance_rec.LAST_WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
8962                   p_instance_rec.LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID;
8963               END IF;
8964               IF (p_instance_rec.LAST_PO_PO_LINE_ID = FND_API.G_MISS_NUM) THEN
8965                   p_instance_rec.LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
8966               END IF;
8967               IF (p_instance_rec.LAST_PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
8968                   p_instance_rec.LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID;
8969               END IF;
8970               IF (p_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
8971                   p_instance_rec.LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID;
8972               END IF;
8973               IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = FND_API.G_MISS_NUM) THEN
8974                   p_instance_rec.LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
8975               END IF;
8976               IF (p_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
8977                   p_instance_rec.LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER;
8978               END IF;
8979               IF (p_instance_rec.INSTALL_LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
8980                   p_instance_rec.INSTALL_LOCATION_TYPE_CODE := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
8981               END IF;
8982               IF (p_instance_rec.INSTALL_LOCATION_ID = FND_API.G_MISS_NUM) THEN
8983                   p_instance_rec.INSTALL_LOCATION_ID := l_curr_instance_rec.INSTALL_LOCATION_ID;
8984               END IF;
8985               IF (p_instance_rec.OPERATIONAL_STATUS_CODE = FND_API.G_MISS_CHAR) THEN
8986                   -- Bug 10049269
8987                   -- p_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
8988                   p_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
8989               END IF;
8990 
8991               p_instance_rec.MANUALLY_CREATED_FLAG  := l_curr_instance_rec.MANUALLY_CREATED_FLAG;
8992               p_instance_rec.RETURN_BY_DATE         := l_curr_instance_rec.RETURN_BY_DATE;
8993               p_instance_rec.ACTUAL_RETURN_DATE     := l_curr_instance_rec.ACTUAL_RETURN_DATE;
8994               p_instance_rec.CREATION_COMPLETE_FLAG := l_curr_instance_rec.CREATION_COMPLETE_FLAG;
8995               p_instance_rec.COMPLETENESS_FLAG      := l_curr_instance_rec.COMPLETENESS_FLAG;
8996               p_instance_rec.CONTEXT                := l_curr_instance_rec.CONTEXT;
8997               p_instance_rec.ATTRIBUTE1             := l_curr_instance_rec.ATTRIBUTE1;
8998               p_instance_rec.ATTRIBUTE2             := l_curr_instance_rec.ATTRIBUTE2;
8999               p_instance_rec.ATTRIBUTE3             := l_curr_instance_rec.ATTRIBUTE3;
9000               p_instance_rec.ATTRIBUTE4             := l_curr_instance_rec.ATTRIBUTE4;
9001               p_instance_rec.ATTRIBUTE5             := l_curr_instance_rec.ATTRIBUTE5;
9002               p_instance_rec.ATTRIBUTE6             := l_curr_instance_rec.ATTRIBUTE6;
9003               p_instance_rec.ATTRIBUTE7             := l_curr_instance_rec.ATTRIBUTE7;
9004               p_instance_rec.ATTRIBUTE8             := l_curr_instance_rec.ATTRIBUTE8;
9005               p_instance_rec.ATTRIBUTE9             := l_curr_instance_rec.ATTRIBUTE9;
9006               p_instance_rec.ATTRIBUTE10            := l_curr_instance_rec.ATTRIBUTE10;
9007               p_instance_rec.ATTRIBUTE11            := l_curr_instance_rec.ATTRIBUTE11;
9008               p_instance_rec.ATTRIBUTE12            := l_curr_instance_rec.ATTRIBUTE12;
9009               p_instance_rec.ATTRIBUTE13            := l_curr_instance_rec.ATTRIBUTE13;
9010               p_instance_rec.ATTRIBUTE14            := l_curr_instance_rec.ATTRIBUTE14;
9011               p_instance_rec.ATTRIBUTE15            := l_curr_instance_rec.ATTRIBUTE15;
9012               p_instance_rec.OBJECT_VERSION_NUMBER  := l_curr_instance_rec.OBJECT_VERSION_NUMBER;
9013               p_instance_rec.INSTANCE_USAGE_CODE    := l_curr_instance_rec.INSTANCE_USAGE_CODE;
9014               p_instance_rec.CONFIG_INST_REV_NUM    := l_curr_instance_rec.CONFIG_INST_REV_NUM;
9015               p_instance_rec.CONFIG_VALID_STATUS    := l_curr_instance_rec.CONFIG_VALID_STATUS;
9016               p_instance_rec.INSTANCE_DESCRIPTION   := l_curr_instance_rec.INSTANCE_DESCRIPTION;
9017 	      --start of code for eam integration--
9018               p_instance_rec.NETWORK_ASSET_FLAG     := l_curr_instance_rec.NETWORK_ASSET_FLAG;
9019               p_instance_rec.MAINTAINABLE_FLAG      := l_curr_instance_rec.MAINTAINABLE_FLAG;
9020               p_instance_rec.PN_LOCATION_ID         := l_curr_instance_rec.PN_LOCATION_ID;
9021               p_instance_rec.ASSET_CRITICALITY_CODE := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
9022               p_instance_rec.CATEGORY_ID            := l_curr_instance_rec.CATEGORY_ID;
9023               p_instance_rec.EQUIPMENT_GEN_OBJECT_ID:= l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
9024               p_instance_rec.INSTANTIATION_FLAG     := l_curr_instance_rec.INSTANTIATION_FLAG;
9025               p_instance_rec.LINEAR_LOCATION_ID     := l_curr_instance_rec.LINEAR_LOCATION_ID;
9026               p_instance_rec.OPERATIONAL_LOG_FLAG   := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
9027               p_instance_rec.CHECKIN_STATUS         := l_curr_instance_rec.CHECKIN_STATUS;
9028               p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
9029               p_instance_rec.ATTRIBUTE16            := l_curr_instance_rec.ATTRIBUTE16;
9030               p_instance_rec.ATTRIBUTE17            := l_curr_instance_rec.ATTRIBUTE17;
9031               p_instance_rec.ATTRIBUTE18            := l_curr_instance_rec.ATTRIBUTE18;
9032               p_instance_rec.ATTRIBUTE19            := l_curr_instance_rec.ATTRIBUTE19;
9033               p_instance_rec.ATTRIBUTE20            := l_curr_instance_rec.ATTRIBUTE20;
9034               p_instance_rec.ATTRIBUTE21            := l_curr_instance_rec.ATTRIBUTE21;
9035               p_instance_rec.ATTRIBUTE22            := l_curr_instance_rec.ATTRIBUTE22;
9036               p_instance_rec.ATTRIBUTE23            := l_curr_instance_rec.ATTRIBUTE23;
9037               p_instance_rec.ATTRIBUTE24            := l_curr_instance_rec.ATTRIBUTE24;
9038               p_instance_rec.ATTRIBUTE25            := l_curr_instance_rec.ATTRIBUTE25;
9039               p_instance_rec.ATTRIBUTE26            := l_curr_instance_rec.ATTRIBUTE26;
9040               p_instance_rec.ATTRIBUTE27            := l_curr_instance_rec.ATTRIBUTE27;
9041               p_instance_rec.ATTRIBUTE28            := l_curr_instance_rec.ATTRIBUTE28;
9042               p_instance_rec.ATTRIBUTE29            := l_curr_instance_rec.ATTRIBUTE29;
9043               p_instance_rec.ATTRIBUTE30            := l_curr_instance_rec.ATTRIBUTE30;
9044               --end of code for eam integration--
9045        -- Addition of columns for FA Integration
9046               p_instance_rec.PAYABLES_UNIT_PRICE     := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
9047               p_instance_rec.PAYABLES_CURRENCY_CODE  := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
9048               p_instance_rec.PURCHASE_UNIT_PRICE     := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
9049               p_instance_rec.PURCHASE_CURRENCY_CODE  := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
9050               p_instance_rec.SALES_UNIT_PRICE        := l_curr_instance_rec.SALES_UNIT_PRICE;
9051               p_instance_rec.SALES_CURRENCY_CODE     := l_curr_instance_rec.SALES_CURRENCY_CODE;
9052             --  p_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
9053         -- End addition of columns for FA Integration
9054 
9055            /* Commented out to implement bulk processing.... Bug:5615169
9056 	   CSI_ITEM_INSTANCES_H_PKG.Insert_Row
9057            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
9058             ,p_INSTANCE_ID                       => l_rel_tbl(j).subject_id
9059             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
9060             ,p_OLD_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
9061             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
9062             ,p_OLD_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
9063             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
9064             ,p_OLD_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
9065             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
9066             ,p_OLD_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
9067             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
9068             ,p_OLD_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
9069             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
9070             ,p_OLD_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
9071             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
9072             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
9073             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
9074             ,p_OLD_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
9075             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
9076             ,p_OLD_QUANTITY                      => l_curr_instance_rec.QUANTITY
9077             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
9078             ,p_OLD_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
9079             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
9080             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
9081             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
9082             ,p_OLD_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
9083             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
9084             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
9085             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_status_id --p_instance_rec.INSTANCE_STATUS_ID
9086             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
9087             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
9088             ,p_OLD_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
9089             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
9090             ,p_OLD_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
9091             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
9092             ,p_OLD_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
9093             ,p_NEW_SYSTEM_ID                     => l_system_id
9094             ,p_OLD_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
9095             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
9096             ,p_OLD_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
9097             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
9098             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
9099             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
9100             ,p_OLD_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
9101             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
9102             ,p_OLD_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
9103             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
9104             ,p_OLD_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
9105             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
9106             ,p_OLD_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
9107             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
9108             ,p_OLD_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
9109             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
9110             ,p_OLD_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
9111             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
9112             ,p_OLD_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
9113             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
9114             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
9115             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
9116             ,p_OLD_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
9117             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
9118             ,p_OLD_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
9119             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
9120             ,p_OLD_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
9121             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
9122             ,p_FULL_DUMP_FLAG                    => 'Y'
9123             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
9124             ,P_OLD_CONTEXT                       => l_curr_instance_rec.CONTEXT
9125             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
9126             ,p_OLD_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
9127             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
9128             ,p_OLD_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
9129             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
9130             ,p_OLD_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
9131             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
9132             ,p_OLD_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
9133             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
9134             ,p_OLD_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
9135             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
9136             ,p_OLD_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
9137             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
9138             ,p_OLD_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
9139             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
9140             ,p_OLD_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
9141             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
9142             ,p_OLD_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
9143             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
9144             ,p_OLD_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
9145             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
9146             ,p_OLD_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
9147             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
9148             ,p_OLD_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
9149             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
9150             ,p_OLD_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
9151             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
9152             ,p_OLD_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
9153             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
9154             ,p_OLD_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
9155             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
9156             ,p_CREATION_DATE                     => SYSDATE
9157             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
9158             ,p_LAST_UPDATE_DATE                  => SYSDATE
9159             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
9160             ,p_OBJECT_VERSION_NUMBER             => 1
9161             ,p_OLD_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
9162             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
9163             ,p_OLD_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
9164             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
9165             ,p_OLD_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
9166             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
9167             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
9168             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
9169             ,p_OLD_CONFIG_INST_REV_NUM           => l_curr_instance_rec.CONFIG_INST_REV_NUM
9170             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
9171             ,p_OLD_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
9172             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
9173             ,p_OLD_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
9174             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
9175             ,p_OLD_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
9176             ,p_NEW_INSTALL_DATE                  => l_install_date -- p_instance_rec.INSTALL_DATE
9177             ,p_OLD_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
9178             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
9179             ,p_OLD_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
9180             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
9181             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
9182             ,p_NEW_LAST_OE_AGREEMENT_ID          => p_instance_rec.LAST_OE_AGREEMENT_ID
9183 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
9184 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
9185 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
9186 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => p_instance_rec.LAST_OE_RMA_LINE_ID
9187 	    ,p_OLD_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
9188 	    ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
9189 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
9190 	    ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
9191 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
9192 	    ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
9193 	    ,p_OLD_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
9194 	    ,p_NEW_LAST_PA_TASK_ID          => p_instance_rec.LAST_PA_TASK_ID
9195 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
9196 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
9197 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
9198 	    ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
9199  	    --start of parameters addition for eam integration--
9200 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
9201 	    ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
9202 	    ,p_OLD_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
9203 	    ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
9204 	    ,p_OLD_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
9205 	    ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
9206 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
9207 	    ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
9208 	    ,p_OLD_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
9209 	    ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
9210 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
9211 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
9212 	    ,p_OLD_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
9213 	    ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
9214 	    ,p_OLD_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
9215 	    ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
9216 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
9217 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
9218 	    ,p_OLD_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
9219 	    ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
9220 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
9221 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
9222             ,p_OLD_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
9223             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
9224             ,p_OLD_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
9225             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
9226             ,p_OLD_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
9227             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
9228             ,p_OLD_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
9229             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
9230             ,p_OLD_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
9231             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
9232             ,p_OLD_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
9233             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
9234             ,p_OLD_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
9235             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
9236             ,p_OLD_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
9237             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
9238             ,p_OLD_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
9239             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
9240             ,p_OLD_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
9241             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
9242             ,p_OLD_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
9243             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
9244             ,p_OLD_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
9245             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
9246             ,p_OLD_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
9247             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
9248             ,p_OLD_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
9249             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
9250             ,p_OLD_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
9251             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
9252   	    --end of parameters addition for eam integration--
9253    -- Addition of columns for FA Integration
9254             ,p_OLD_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
9255             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
9256             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
9257             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
9258             ,p_OLD_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
9259             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
9260             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
9261             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
9262             ,p_OLD_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
9263             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
9264             ,p_OLD_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
9265             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
9266             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
9267             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
9268     -- End addition of columns for FA Integration
9269             );
9270          End of insert ...Bug:5615169 */
9271 
9272 	--Start of: Added for Bug:5615169
9273 	--Insert the data into bulk table
9274 	l_ciih_blk_ins_cnt                                                       := l_ciih_blk_ins_cnt + 1;
9275 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).instance_history_id          := l_csi_item_instance_h_id;
9276 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).instance_id                  := l_rel_tbl(j).subject_id;
9277 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).transaction_id               := p_txn_rec.TRANSACTION_ID;
9278 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_number          := l_curr_instance_rec.INSTANCE_NUMBER;
9279 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_number          := p_instance_rec.INSTANCE_NUMBER;
9280 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_external_reference       := l_curr_instance_rec.EXTERNAL_REFERENCE;
9281 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_external_reference       := p_instance_rec.EXTERNAL_REFERENCE;
9282 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inventory_item_id        := l_curr_instance_rec.INVENTORY_ITEM_ID;
9283 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inventory_item_id        := p_instance_rec.INVENTORY_ITEM_ID;
9284 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inventory_revision       := l_curr_instance_rec.INVENTORY_REVISION;
9285 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inventory_revision       := p_instance_rec.INVENTORY_REVISION;
9286 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_master_org_id        := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
9287 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_master_org_id        := p_instance_rec.INV_MASTER_ORGANIZATION_ID;
9288 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_serial_number            := l_curr_instance_rec.SERIAL_NUMBER;
9289 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_serial_number            := p_instance_rec.SERIAL_NUMBER;
9290 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_mfg_serial_number_flag   := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
9291 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_mfg_serial_number_flag   := p_instance_rec.MFG_SERIAL_NUMBER_FLAG;
9292 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_lot_number               := l_curr_instance_rec.LOT_NUMBER;
9293 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_lot_number               := p_instance_rec.LOT_NUMBER;
9294 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_quantity                 := l_curr_instance_rec.QUANTITY;
9295 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_quantity                 := p_instance_rec.QUANTITY;
9296 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_unit_of_measure          := l_curr_instance_rec.UNIT_OF_MEASURE;
9297 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_unit_of_measure          := p_instance_rec.UNIT_OF_MEASURE;
9298 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_accounting_class_code    := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
9299 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_accounting_class_code    := p_instance_rec.ACCOUNTING_CLASS_CODE;
9300 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_condition_id    := l_curr_instance_rec.INSTANCE_CONDITION_ID;
9301 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_condition_id    := p_instance_rec.INSTANCE_CONDITION_ID;
9302 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_status_id       := l_curr_instance_rec.INSTANCE_STATUS_ID;
9303 	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;
9304 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_customer_view_flag       := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
9305 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_customer_view_flag       := p_instance_rec.CUSTOMER_VIEW_FLAG;
9306 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_merchant_view_flag       := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
9307 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_merchant_view_flag       := p_instance_rec.MERCHANT_VIEW_FLAG;
9308 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sellable_flag            := l_curr_instance_rec.SELLABLE_FLAG;
9309 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sellable_flag            := p_instance_rec.SELLABLE_FLAG;
9310 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_system_id                := l_curr_instance_rec.SYSTEM_ID;
9311 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_system_id                := l_system_id;
9312 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_type_code       := l_curr_instance_rec.INSTANCE_TYPE_CODE;
9313 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_type_code       := p_instance_rec.INSTANCE_TYPE_CODE;
9314 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_active_start_date        := l_curr_instance_rec.ACTIVE_START_DATE;
9315 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_active_start_date        := p_instance_rec.ACTIVE_START_DATE;
9316 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_active_end_date          := l_curr_instance_rec.ACTIVE_END_DATE;
9317 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_active_end_date          := p_instance_rec.ACTIVE_END_DATE;
9318 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_location_type_code       := l_curr_instance_rec.LOCATION_TYPE_CODE;
9319 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_location_type_code       := p_instance_rec.LOCATION_TYPE_CODE;
9320 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_location_id              := l_curr_instance_rec.LOCATION_ID;
9321 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_location_id              := p_instance_rec.LOCATION_ID;
9322 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_organization_id      := l_curr_instance_rec.INV_ORGANIZATION_ID;
9323 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_organization_id      := p_instance_rec.INV_ORGANIZATION_ID;
9324 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_subinventory_name    := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
9325 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_subinventory_name    := p_instance_rec.INV_SUBINVENTORY_NAME;
9326 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_locator_id           := l_curr_instance_rec.INV_LOCATOR_ID;
9327 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_locator_id           := p_instance_rec.INV_LOCATOR_ID;
9328 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pa_project_id            := l_curr_instance_rec.PA_PROJECT_ID;
9329 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pa_project_id            := p_instance_rec.PA_PROJECT_ID;
9330 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pa_project_task_id       := l_curr_instance_rec.PA_PROJECT_TASK_ID;
9331 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pa_project_task_id       := p_instance_rec.PA_PROJECT_TASK_ID;
9332 	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;
9333 	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;
9334 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_wip_job_id               := l_curr_instance_rec.WIP_JOB_ID;
9335 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_wip_job_id               := p_instance_rec.WIP_JOB_ID;
9336 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_po_order_line_id         := l_curr_instance_rec.PO_ORDER_LINE_ID;
9337 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_po_order_line_id         := p_instance_rec.PO_ORDER_LINE_ID;
9338 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_completeness_flag        := l_curr_instance_rec.COMPLETENESS_FLAG;
9339 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_completeness_flag        := p_instance_rec.COMPLETENESS_FLAG;
9340 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).full_dump_flag               := 'Y';
9341 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_context                  := p_instance_rec.CONTEXT;
9342 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_context                  := l_curr_instance_rec.CONTEXT;
9343 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute1               := p_instance_rec.ATTRIBUTE1;
9344 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute1               := l_curr_instance_rec.ATTRIBUTE1;
9345 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute2               := p_instance_rec.ATTRIBUTE2;
9346 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute2               := l_curr_instance_rec.ATTRIBUTE2;
9347 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute3               := p_instance_rec.ATTRIBUTE3;
9348 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute3               := l_curr_instance_rec.ATTRIBUTE3;
9349 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute4               := p_instance_rec.ATTRIBUTE4;
9350 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute4               := l_curr_instance_rec.ATTRIBUTE4;
9351 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute5               := p_instance_rec.ATTRIBUTE5;
9352 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute5               := l_curr_instance_rec.ATTRIBUTE5;
9353 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute6               := p_instance_rec.ATTRIBUTE6;
9354 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute6               := l_curr_instance_rec.ATTRIBUTE6;
9355 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute7               := p_instance_rec.ATTRIBUTE7;
9356 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute7               := l_curr_instance_rec.ATTRIBUTE7;
9357 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute8               := p_instance_rec.ATTRIBUTE8;
9358 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute8               := l_curr_instance_rec.ATTRIBUTE8;
9359 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute9               := p_instance_rec.ATTRIBUTE9;
9360 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute9               := l_curr_instance_rec.ATTRIBUTE9;
9361 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute10              := p_instance_rec.ATTRIBUTE10;
9362 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute10              := l_curr_instance_rec.ATTRIBUTE10;
9363 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute11              := p_instance_rec.ATTRIBUTE11;
9364 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute11              := l_curr_instance_rec.ATTRIBUTE11;
9365 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute12              := p_instance_rec.ATTRIBUTE12;
9366 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute12              := l_curr_instance_rec.ATTRIBUTE12;
9367 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute13              := p_instance_rec.ATTRIBUTE13;
9368 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute13              := l_curr_instance_rec.ATTRIBUTE13;
9369 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute14              := p_instance_rec.ATTRIBUTE14;
9370 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute14              := l_curr_instance_rec.ATTRIBUTE14;
9371 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute15              := p_instance_rec.ATTRIBUTE15;
9372 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute15              := l_curr_instance_rec.ATTRIBUTE15;
9373 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).created_by                        := FND_GLOBAL.USER_ID;
9374 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).creation_date                     := SYSDATE;
9375 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_updated_by                   := FND_GLOBAL.USER_ID;
9376 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_update_date                  := SYSDATE;
9377 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_update_login                 := FND_GLOBAL.CONC_LOGIN_ID;
9378 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).object_version_number             := 1;
9379 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_location_type_code := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
9380 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_location_type_code := p_instance_rec.INSTALL_LOCATION_TYPE_CODE;
9381 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_location_id        := l_curr_instance_rec.INSTALL_LOCATION_ID;
9382 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_location_id        := p_instance_rec.INSTALL_LOCATION_ID;
9383 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_usage_code        := l_curr_instance_rec.INSTANCE_USAGE_CODE;
9384 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_usage_code        := p_instance_rec.INSTANCE_USAGE_CODE;
9385 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_vld_organization_id   := fnd_api.g_miss_num;
9386 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_vld_organization_id   := fnd_api.g_miss_num;
9387 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_config_inst_rev_num        := l_curr_instance_rec.CONFIG_INST_REV_NUM;
9388 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_config_inst_rev_num        := p_instance_rec.CONFIG_INST_REV_NUM;
9389 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_config_valid_status        := l_curr_instance_rec.CONFIG_VALID_STATUS;
9390 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_config_valid_status        := p_instance_rec.CONFIG_VALID_STATUS;
9391 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_description       := l_curr_instance_rec.INSTANCE_DESCRIPTION;
9392 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_description       := p_instance_rec.INSTANCE_DESCRIPTION;
9393 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_date               := l_curr_instance_rec.INSTALL_DATE;
9394 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_date               := l_install_date;
9395 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_return_by_date             := l_curr_instance_rec.RETURN_BY_DATE;
9396 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_return_by_date             := p_instance_rec.RETURN_BY_DATE;
9397 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_actual_return_date         := l_curr_instance_rec.ACTUAL_RETURN_DATE;
9398 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_actual_return_date         := p_instance_rec.ACTUAL_RETURN_DATE;
9399 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_agreement_id       := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
9400 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_agreement_id       := p_instance_rec.LAST_OE_AGREEMENT_ID;
9401 	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;
9402 	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;
9403 	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;
9404 	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;
9405 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_wip_job_id            := l_curr_instance_rec.LAST_WIP_JOB_ID;
9406 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_wip_job_id            := p_instance_rec.LAST_WIP_JOB_ID;
9407 	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;
9408 	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;
9409 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_pa_project_id         := l_curr_instance_rec.LAST_PA_PROJECT_ID;
9410 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_pa_project_id         := p_instance_rec.LAST_PA_PROJECT_ID;
9411 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_pa_task_id            := l_curr_instance_rec.LAST_PA_TASK_ID;
9412 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_pa_task_id            := p_instance_rec.LAST_PA_TASK_ID;
9413 	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;
9414 	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;
9415 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_po_number          := l_curr_instance_rec.LAST_OE_PO_NUMBER;
9416 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_po_number          := p_instance_rec.LAST_OE_PO_NUMBER;
9417 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_capitalization_status         := l_curr_instance_rec.CAPITALIZATION_STATUS;
9418 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_capitalization_status         := p_instance_rec.CAPITALIZATION_STATUS;
9419 	--Start of parameters addition for eam integration
9420 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_network_asset_flag      := l_curr_instance_rec.NETWORK_ASSET_FLAG;
9421 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_network_asset_flag      := p_instance_rec.NETWORK_ASSET_FLAG;
9422 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_maintainable_flag       := l_curr_instance_rec.MAINTAINABLE_FLAG;
9423 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_maintainable_flag       := p_instance_rec.MAINTAINABLE_FLAG;
9424 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pn_location_id          := l_curr_instance_rec.PN_LOCATION_ID;
9425 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pn_location_id          := p_instance_rec.PN_LOCATION_ID;
9426 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_asset_criticality_code  := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
9427 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_asset_criticality_code  := p_instance_rec.ASSET_CRITICALITY_CODE;
9428 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_category_id             := l_curr_instance_rec.CATEGORY_ID;
9429 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_category_id             := p_instance_rec.CATEGORY_ID;
9430 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_equipment_gen_object_id := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
9431 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_equipment_gen_object_id := p_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
9432 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instantiation_flag      := l_curr_instance_rec.INSTANTIATION_FLAG;
9433 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instantiation_flag      := p_instance_rec.INSTANTIATION_FLAG;
9434 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_linear_location_id      := l_curr_instance_rec.LINEAR_LOCATION_ID;
9435 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_linear_location_id      := p_instance_rec.LINEAR_LOCATION_ID;
9436 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_operational_log_flag    := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
9437 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_operational_log_flag    := p_instance_rec.OPERATIONAL_LOG_FLAG;
9438 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_checkin_status          := l_curr_instance_rec.CHECKIN_STATUS;
9439 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_checkin_status          := p_instance_rec.CHECKIN_STATUS;
9440 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_supplier_warranty_exp_date   := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
9441 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_supplier_warranty_exp_date   := p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
9442 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute16             := l_curr_instance_rec.ATTRIBUTE16;
9443 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute16             := p_instance_rec.ATTRIBUTE16;
9444 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute17             := l_curr_instance_rec.ATTRIBUTE17;
9445 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute17             := p_instance_rec.ATTRIBUTE17;
9446 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute18             := l_curr_instance_rec.ATTRIBUTE18;
9447 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute18             := p_instance_rec.ATTRIBUTE18;
9448 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute19             := l_curr_instance_rec.ATTRIBUTE19;
9449 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute19             := p_instance_rec.ATTRIBUTE19;
9450 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute20             := l_curr_instance_rec.ATTRIBUTE20;
9451 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute20             := p_instance_rec.ATTRIBUTE20;
9452 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute21             := l_curr_instance_rec.ATTRIBUTE21;
9453 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute21             := p_instance_rec.ATTRIBUTE21;
9454 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute22             := l_curr_instance_rec.ATTRIBUTE22;
9455 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute22             := p_instance_rec.ATTRIBUTE22;
9456 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute23             := l_curr_instance_rec.ATTRIBUTE23;
9457 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute23             := p_instance_rec.ATTRIBUTE23;
9458 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute24             := l_curr_instance_rec.ATTRIBUTE24;
9459 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute24             := p_instance_rec.ATTRIBUTE24;
9460 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute25             := l_curr_instance_rec.ATTRIBUTE25;
9461 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute25             := p_instance_rec.ATTRIBUTE25;
9462 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute26             := l_curr_instance_rec.ATTRIBUTE26;
9463 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute26             := p_instance_rec.ATTRIBUTE26;
9464 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute27             := l_curr_instance_rec.ATTRIBUTE27;
9465 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute27             := p_instance_rec.ATTRIBUTE27;
9466 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute28             := l_curr_instance_rec.ATTRIBUTE28;
9467 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute28             := p_instance_rec.ATTRIBUTE28;
9468 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute29             := l_curr_instance_rec.ATTRIBUTE29;
9469 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute29             := p_instance_rec.ATTRIBUTE29;
9470 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute30             := l_curr_instance_rec.ATTRIBUTE30;
9471 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute30             := p_instance_rec.ATTRIBUTE30;
9472 	--End of parameters addition for eam integration--
9473 	--Addition of columns for FA Integration
9474 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_payables_unit_price     := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
9475 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_payables_unit_price     := p_instance_rec.PAYABLES_UNIT_PRICE;
9476 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_payables_currency_code  := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
9477 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_payables_currency_code  := p_instance_rec.PAYABLES_CURRENCY_CODE;
9478 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_purchase_unit_price     := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
9479 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_purchase_unit_price     := p_instance_rec.PURCHASE_UNIT_PRICE;
9480 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_purchase_currency_code  := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
9481 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_purchase_currency_code  := p_instance_rec.PURCHASE_CURRENCY_CODE;
9482 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sales_unit_price        := l_curr_instance_rec.SALES_UNIT_PRICE;
9483 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sales_unit_price        := p_instance_rec.SALES_UNIT_PRICE;
9484 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sales_currency_code     := l_curr_instance_rec.SALES_CURRENCY_CODE;
9485 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sales_currency_code     := p_instance_rec.SALES_CURRENCY_CODE;
9486 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_operational_status_code := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
9487 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_operational_status_code := p_instance_rec.OPERATIONAL_STATUS_CODE;
9488 	--End addition of columns for FA Integration
9489 	--End of Insert into bulk table
9490 	--End of: Added for Bug:5615169
9491         -- Begin Add Code for Siebel Genesis Project
9492         l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_source_code    := l_curr_instance_rec.SOURCE_CODE;
9493         l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_source_code    := p_instance_rec.SOURCE_CODE;
9494         -- End Add Code for Siebel Genesis Project
9495 	ELSE -- if mod_value <> 0
9496 
9497           -- If the mod value is not equal to zero then dump only the changed columns
9498           -- while the unchanged values have old and new values as null
9499            IF (p_instance_rec.accounting_class_code = fnd_api.g_miss_char) OR
9500               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
9501                 l_instance_hist_rec.old_accounting_class_code := NULL;
9502                 l_instance_hist_rec.new_accounting_class_code := NULL;
9503            ELSIF
9504               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
9505                 l_instance_hist_rec.old_accounting_class_code := l_curr_instance_rec.accounting_class_code ;
9506                 l_instance_hist_rec.new_accounting_class_code := p_instance_rec.accounting_class_code ;
9507            END IF;
9508            --
9509            IF (l_instance_status_id = fnd_api.g_miss_num) OR
9510               NVL(l_curr_instance_rec.instance_status_id,fnd_api.g_miss_num) = NVL(l_instance_status_id,fnd_api.g_miss_num) THEN
9511                 l_instance_hist_rec.old_instance_status_id := NULL;
9512                 l_instance_hist_rec.new_instance_status_id := NULL;
9513            ELSIF
9514               NVL(l_curr_instance_rec.instance_status_id,fnd_api.g_miss_num) <> NVL(l_instance_status_id,fnd_api.g_miss_num) THEN
9515                 l_instance_hist_rec.old_instance_status_id := l_curr_instance_rec.instance_status_id ;
9516                 l_instance_hist_rec.new_instance_status_id := l_instance_status_id ;
9517            END IF;
9518            --
9519            IF (l_system_id = fnd_api.g_miss_num) OR
9520               NVL(l_curr_instance_rec.system_id,fnd_api.g_miss_num) = NVL(l_system_id,fnd_api.g_miss_num) THEN
9521                 l_instance_hist_rec.old_system_id := NULL;
9522                 l_instance_hist_rec.new_system_id := NULL;
9523            ELSIF
9524               NVL(l_curr_instance_rec.system_id,fnd_api.g_miss_num) <> NVL(l_system_id,fnd_api.g_miss_num) THEN
9525                 l_instance_hist_rec.old_system_id := l_curr_instance_rec.system_id ;
9526                 l_instance_hist_rec.new_system_id := l_system_id ;
9527            END IF;
9528            --
9529            IF (l_install_date = fnd_api.g_miss_date) OR
9530               NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) = NVL(l_install_date,fnd_api.g_miss_date) THEN
9531                 l_instance_hist_rec.old_install_date := NULL;
9532                 l_instance_hist_rec.new_install_date := NULL;
9533            ELSIF
9534               NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) <> NVL(l_install_date,fnd_api.g_miss_date) THEN
9535                 l_instance_hist_rec.old_install_date := l_curr_instance_rec.install_date ;
9536                 l_instance_hist_rec.new_install_date := l_install_date ;
9537            END IF;
9538            --
9539            IF (p_instance_rec.active_end_date = fnd_api.g_miss_date) OR
9540               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
9541                 l_instance_hist_rec.old_active_end_date := NULL;
9542                 l_instance_hist_rec.new_active_end_date := NULL;
9543            ELSIF
9544               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
9545                 l_instance_hist_rec.old_active_end_date := l_curr_instance_rec.active_end_date ;
9546                 l_instance_hist_rec.new_active_end_date := p_instance_rec.active_end_date ;
9547            END IF;
9548            --
9549            IF (p_instance_rec.location_type_code = fnd_api.g_miss_char) OR
9550               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
9551                 l_instance_hist_rec.old_location_type_code := NULL;
9552                 l_instance_hist_rec.new_location_type_code := NULL;
9553            ELSIF
9554               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
9555                 l_instance_hist_rec.old_location_type_code := l_curr_instance_rec.location_type_code ;
9556                 l_instance_hist_rec.new_location_type_code := p_instance_rec.location_type_code ;
9557            END IF;
9558            --
9559            IF (p_instance_rec.location_id = fnd_api.g_miss_num) OR
9560               NVL(l_curr_instance_rec.location_id,fnd_api.g_miss_num) = NVL(p_instance_rec.location_id,fnd_api.g_miss_num) THEN
9561                 l_instance_hist_rec.old_location_id := NULL;
9562                 l_instance_hist_rec.new_location_id := NULL;
9563            ELSIF
9564               NVL(l_curr_instance_rec.location_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.location_id,fnd_api.g_miss_num) THEN
9565                 l_instance_hist_rec.old_location_id := l_curr_instance_rec.location_id ;
9566                 l_instance_hist_rec.new_location_id := p_instance_rec.location_id ;
9567            END IF;
9568            --
9569            IF (p_instance_rec.inv_organization_id = fnd_api.g_miss_num) OR
9570               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
9571                 l_instance_hist_rec.old_inv_organization_id := NULL;
9572                 l_instance_hist_rec.new_inv_organization_id := NULL;
9573            ELSIF
9574               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
9575                 l_instance_hist_rec.old_inv_organization_id := l_curr_instance_rec.inv_organization_id ;
9576                 l_instance_hist_rec.new_inv_organization_id := p_instance_rec.inv_organization_id ;
9577            END IF;
9578            --
9579            IF (p_instance_rec.inv_subinventory_name = fnd_api.g_miss_char) OR
9580               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
9581                 l_instance_hist_rec.old_inv_subinventory_name := NULL;
9582                 l_instance_hist_rec.new_inv_subinventory_name := NULL;
9583            ELSIF
9584               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
9585                 l_instance_hist_rec.old_inv_subinventory_name := l_curr_instance_rec.inv_subinventory_name ;
9586                 l_instance_hist_rec.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name ;
9587            END IF;
9588            --
9589            IF (p_instance_rec.inv_locator_id = fnd_api.g_miss_num) OR
9590               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
9591                 l_instance_hist_rec.old_inv_locator_id := NULL;
9592                 l_instance_hist_rec.new_inv_locator_id := NULL;
9593            ELSIF
9594               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
9595                 l_instance_hist_rec.old_inv_locator_id := l_curr_instance_rec.inv_locator_id ;
9596                 l_instance_hist_rec.new_inv_locator_id := p_instance_rec.inv_locator_id ;
9597            END IF;
9598            --
9599            IF (p_instance_rec.pa_project_id = fnd_api.g_miss_num) OR
9600               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
9601                 l_instance_hist_rec.old_pa_project_id := NULL;
9602                 l_instance_hist_rec.new_pa_project_id := NULL;
9603            ELSIF
9604               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
9605                 l_instance_hist_rec.old_pa_project_id := l_curr_instance_rec.pa_project_id ;
9606                 l_instance_hist_rec.new_pa_project_id := p_instance_rec.pa_project_id ;
9607            END IF;
9608            --
9609            IF (p_instance_rec.pa_project_task_id = fnd_api.g_miss_num) OR
9610               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
9611                 l_instance_hist_rec.old_pa_project_task_id := NULL;
9612                 l_instance_hist_rec.new_pa_project_task_id := NULL;
9613            ELSIF
9614               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
9615                 l_instance_hist_rec.old_pa_project_task_id := l_curr_instance_rec.pa_project_task_id ;
9616                 l_instance_hist_rec.new_pa_project_task_id := p_instance_rec.pa_project_task_id ;
9617            END IF;
9618            --
9619            IF (p_instance_rec.in_transit_order_line_id = fnd_api.g_miss_num) OR
9620               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
9621                 l_instance_hist_rec.old_in_transit_order_line_id := NULL;
9622                 l_instance_hist_rec.new_in_transit_order_line_id := NULL;
9623            ELSIF
9624               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
9625                 l_instance_hist_rec.old_in_transit_order_line_id := l_curr_instance_rec.in_transit_order_line_id ;
9626                 l_instance_hist_rec.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id ;
9627            END IF;
9628            --
9629            IF (p_instance_rec.wip_job_id = fnd_api.g_miss_num) OR
9630               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
9631                 l_instance_hist_rec.old_wip_job_id := NULL;
9632                 l_instance_hist_rec.new_wip_job_id := NULL;
9633            ELSIF
9634               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
9635                 l_instance_hist_rec.old_wip_job_id := l_curr_instance_rec.wip_job_id ;
9636                 l_instance_hist_rec.new_wip_job_id := p_instance_rec.wip_job_id ;
9637            END IF;
9638            --
9639            IF (p_instance_rec.po_order_line_id = fnd_api.g_miss_num) OR
9640               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
9641                 l_instance_hist_rec.old_po_order_line_id := NULL;
9642                 l_instance_hist_rec.new_po_order_line_id := NULL;
9643            ELSIF
9644               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
9645                 l_instance_hist_rec.old_po_order_line_id := l_curr_instance_rec.po_order_line_id ;
9646                 l_instance_hist_rec.new_po_order_line_id := p_instance_rec.po_order_line_id ;
9647            END IF;
9648            --
9649            IF (p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num) OR
9650               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
9651                 l_instance_hist_rec.old_last_oe_agreement_id := NULL;
9652                 l_instance_hist_rec.new_last_oe_agreement_id := NULL;
9653            ELSIF
9654               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
9655                 l_instance_hist_rec.old_last_oe_agreement_id := l_curr_instance_rec.last_oe_agreement_id ;
9656                 l_instance_hist_rec.new_last_oe_agreement_id := p_instance_rec.last_oe_agreement_id ;
9657            END IF;
9658            --
9659            IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num) OR
9660               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
9661                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := NULL;
9662                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := NULL;
9663            ELSIF
9664               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
9665                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID ;
9666                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID ;
9667            END IF;
9668            --
9669            IF (p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num) OR
9670               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
9671                 l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID := NULL;
9672                 l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID := NULL;
9673            ELSIF
9674               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
9675                 l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID ;
9676                 l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID ;
9677            END IF;
9678            --
9679            IF (p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num) OR
9680               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
9681                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := NULL;
9682                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := NULL;
9683            ELSIF
9684               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
9685                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID ;
9686                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID ;
9687            END IF;
9688            --
9689            IF (p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num) OR
9690               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
9691                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := NULL;
9692                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := NULL;
9693            ELSIF
9694               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
9695                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
9696                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID ;
9697            END IF;
9698            --
9699            IF (p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num) OR
9700               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
9701                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := NULL;
9702                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := NULL;
9703            ELSIF
9704               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
9705                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID ;
9706                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID ;
9707            END IF;
9708            --
9709            IF (p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num) OR
9710               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
9711                 l_instance_hist_rec.old_LAST_PA_TASK_ID := NULL;
9712                 l_instance_hist_rec.new_LAST_PA_TASK_ID := NULL;
9713            ELSIF
9714               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
9715                 l_instance_hist_rec.old_LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID ;
9716                 l_instance_hist_rec.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID ;
9717            END IF;
9718            --
9719            IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num) OR
9720               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
9721                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := NULL;
9722                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := NULL;
9723            ELSIF
9724               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
9725                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
9726                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
9727            END IF;
9728            --
9729            IF (p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char) OR
9730               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
9731                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := NULL;
9732                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := NULL;
9733            ELSIF
9734               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
9735                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER ;
9736                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER ;
9737            END IF;
9738            --
9739            IF (p_instance_rec.install_location_type_code = fnd_api.g_miss_char) OR
9740               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
9741                 l_instance_hist_rec.old_install_location_type_code := NULL;
9742                 l_instance_hist_rec.new_install_location_type_code := NULL;
9743            ELSIF
9744               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
9745                 l_instance_hist_rec.old_install_location_type_code := l_curr_instance_rec.install_location_type_code ;
9746                 l_instance_hist_rec.new_install_location_type_code := p_instance_rec.install_location_type_code ;
9747            END IF;
9748            --
9749            IF (p_instance_rec.install_location_id = fnd_api.g_miss_num) OR
9750               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
9751                 l_instance_hist_rec.old_install_location_id := NULL;
9752                 l_instance_hist_rec.new_install_location_id := NULL;
9753            ELSIF
9754               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
9755                 l_instance_hist_rec.old_install_location_id := l_curr_instance_rec.install_location_id ;
9756                 l_instance_hist_rec.new_install_location_id := p_instance_rec.install_location_id ;
9757            END IF;
9758            --
9759            IF (p_instance_rec.operational_status_code = fnd_api.g_miss_char) OR
9760               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
9761                 l_instance_hist_rec.old_operational_status_code := NULL;
9762                 l_instance_hist_rec.new_operational_status_code := NULL;
9763            ELSIF
9764               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
9765                 l_instance_hist_rec.old_operational_status_code := l_curr_instance_rec.operational_status_code ;
9766                 l_instance_hist_rec.new_operational_status_code := p_instance_rec.operational_status_code ;
9767            END IF;
9768 
9769           /* Commented to implement bulk operations...Bug:;
9770 	  CSI_ITEM_INSTANCES_H_PKG.Insert_Row
9771            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
9772             ,p_INSTANCE_ID                       => l_rel_tbl(j).SUBJECT_ID
9773             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
9774             ,p_OLD_INSTANCE_NUMBER               => FND_API.G_MISS_CHAR
9775             ,p_NEW_INSTANCE_NUMBER               => FND_API.G_MISS_CHAR
9776             ,p_OLD_EXTERNAL_REFERENCE            => FND_API.G_MISS_CHAR
9777             ,p_NEW_EXTERNAL_REFERENCE            => FND_API.G_MISS_CHAR
9778             ,p_OLD_INVENTORY_ITEM_ID             => FND_API.G_MISS_NUM
9779             ,p_NEW_INVENTORY_ITEM_ID             => FND_API.G_MISS_NUM
9780             ,p_OLD_INVENTORY_REVISION            => FND_API.G_MISS_CHAR
9781             ,p_NEW_INVENTORY_REVISION            => FND_API.G_MISS_CHAR
9782             ,p_OLD_INV_MASTER_ORGZN_ID           => FND_API.G_MISS_NUM
9783             ,p_NEW_INV_MASTER_ORGZN_ID           => FND_API.G_MISS_NUM
9784             ,p_OLD_SERIAL_NUMBER                 => FND_API.G_MISS_CHAR
9785             ,p_NEW_SERIAL_NUMBER                 => FND_API.G_MISS_CHAR
9786             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => FND_API.G_MISS_CHAR
9787             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => FND_API.G_MISS_CHAR
9788             ,p_OLD_LOT_NUMBER                    => FND_API.G_MISS_CHAR
9789             ,p_NEW_LOT_NUMBER                    => FND_API.G_MISS_CHAR
9790             ,p_OLD_QUANTITY                      => FND_API.G_MISS_NUM
9791             ,p_NEW_QUANTITY                      => FND_API.G_MISS_NUM
9792             ,p_OLD_UNIT_OF_MEASURE               => FND_API.G_MISS_CHAR
9793             ,p_NEW_UNIT_OF_MEASURE               => FND_API.G_MISS_CHAR
9794             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_instance_hist_rec.OLD_ACCOUNTING_CLASS_CODE
9795             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_instance_hist_rec.NEW_ACCOUNTING_CLASS_CODE
9796             ,p_OLD_INSTANCE_CONDITION_ID         => FND_API.G_MISS_NUM
9797             ,p_NEW_INSTANCE_CONDITION_ID         => FND_API.G_MISS_NUM
9798             ,p_OLD_INSTANCE_STATUS_ID            => l_instance_hist_rec.OLD_INSTANCE_STATUS_ID
9799             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_hist_rec.NEW_INSTANCE_STATUS_ID
9800             ,p_OLD_CUSTOMER_VIEW_FLAG            => FND_API.G_MISS_CHAR
9801             ,p_NEW_CUSTOMER_VIEW_FLAG            => FND_API.G_MISS_CHAR
9802             ,p_OLD_MERCHANT_VIEW_FLAG            => FND_API.G_MISS_CHAR
9803             ,p_NEW_MERCHANT_VIEW_FLAG            => FND_API.G_MISS_CHAR
9804             ,p_OLD_SELLABLE_FLAG                 => FND_API.G_MISS_CHAR
9805             ,p_NEW_SELLABLE_FLAG                 => FND_API.G_MISS_CHAR
9806             ,p_OLD_SYSTEM_ID                     => l_instance_hist_rec.OLD_SYSTEM_ID
9807             ,p_NEW_SYSTEM_ID                     => l_instance_hist_rec.NEW_SYSTEM_ID
9808             ,p_OLD_INSTANCE_TYPE_CODE            => FND_API.G_MISS_CHAR
9809             ,p_NEW_INSTANCE_TYPE_CODE            => FND_API.G_MISS_CHAR
9810             ,p_OLD_ACTIVE_START_DATE             => FND_API.G_MISS_DATE
9811             ,p_NEW_ACTIVE_START_DATE             => FND_API.G_MISS_DATE
9812             ,p_OLD_ACTIVE_END_DATE               => l_instance_hist_rec.OLD_ACTIVE_END_DATE
9813             ,p_NEW_ACTIVE_END_DATE               => l_instance_hist_rec.NEW_ACTIVE_END_DATE
9814             ,p_OLD_LOCATION_TYPE_CODE            => l_instance_hist_rec.OLD_LOCATION_TYPE_CODE
9815             ,p_NEW_LOCATION_TYPE_CODE            => l_instance_hist_rec.NEW_LOCATION_TYPE_CODE
9816             ,p_OLD_LOCATION_ID                   => l_instance_hist_rec.OLD_LOCATION_ID
9817             ,p_NEW_LOCATION_ID                   => l_instance_hist_rec.NEW_LOCATION_ID
9818             ,p_OLD_INV_ORGANIZATION_ID           => l_instance_hist_rec.OLD_INV_ORGANIZATION_ID
9819             ,p_NEW_INV_ORGANIZATION_ID           => l_instance_hist_rec.NEW_INV_ORGANIZATION_ID
9820             ,p_OLD_INV_SUBINVENTORY_NAME         => l_instance_hist_rec.OLD_INV_SUBINVENTORY_NAME
9821             ,p_NEW_INV_SUBINVENTORY_NAME         => l_instance_hist_rec.NEW_INV_SUBINVENTORY_NAME
9822             ,p_OLD_INV_LOCATOR_ID                => l_instance_hist_rec.OLD_INV_LOCATOR_ID
9823             ,p_NEW_INV_LOCATOR_ID                => l_instance_hist_rec.NEW_INV_LOCATOR_ID
9824             ,p_OLD_PA_PROJECT_ID                 => l_instance_hist_rec.OLD_PA_PROJECT_ID
9825             ,p_NEW_PA_PROJECT_ID                 => l_instance_hist_rec.NEW_PA_PROJECT_ID
9826             ,p_OLD_PA_PROJECT_TASK_ID            => l_instance_hist_rec.OLD_PA_PROJECT_TASK_ID
9827             ,p_NEW_PA_PROJECT_TASK_ID            => l_instance_hist_rec.NEW_PA_PROJECT_TASK_ID
9828             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_instance_hist_rec.OLD_IN_TRANSIT_ORDER_LINE_ID
9829             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_instance_hist_rec.NEW_IN_TRANSIT_ORDER_LINE_ID
9830             ,p_OLD_WIP_JOB_ID                    => l_instance_hist_rec.OLD_WIP_JOB_ID
9831             ,p_NEW_WIP_JOB_ID                    => l_instance_hist_rec.NEW_WIP_JOB_ID
9832             ,p_OLD_PO_ORDER_LINE_ID              => l_instance_hist_rec.OLD_PO_ORDER_LINE_ID
9833             ,p_NEW_PO_ORDER_LINE_ID              => l_instance_hist_rec.NEW_PO_ORDER_LINE_ID
9834             ,p_OLD_COMPLETENESS_FLAG             => FND_API.G_MISS_CHAR
9835             ,p_NEW_COMPLETENESS_FLAG             => FND_API.G_MISS_CHAR
9836             ,p_FULL_DUMP_FLAG                    => 'N'
9837             ,p_NEW_CONTEXT                       => FND_API.G_MISS_CHAR
9838             ,P_OLD_CONTEXT                       => FND_API.G_MISS_CHAR
9839             ,p_NEW_ATTRIBUTE1                    => FND_API.G_MISS_CHAR
9840             ,p_OLD_ATTRIBUTE1                    => FND_API.G_MISS_CHAR
9841             ,p_NEW_ATTRIBUTE2                    => FND_API.G_MISS_CHAR
9842             ,p_OLD_ATTRIBUTE2                    => FND_API.G_MISS_CHAR
9843             ,p_NEW_ATTRIBUTE3                    => FND_API.G_MISS_CHAR
9844             ,p_OLD_ATTRIBUTE3                    => FND_API.G_MISS_CHAR
9845             ,p_NEW_ATTRIBUTE4                    => FND_API.G_MISS_CHAR
9846             ,p_OLD_ATTRIBUTE4                    => FND_API.G_MISS_CHAR
9847             ,p_NEW_ATTRIBUTE5                    => FND_API.G_MISS_CHAR
9848             ,p_OLD_ATTRIBUTE5                    => FND_API.G_MISS_CHAR
9849             ,p_NEW_ATTRIBUTE6                    => FND_API.G_MISS_CHAR
9850             ,p_OLD_ATTRIBUTE6                    => FND_API.G_MISS_CHAR
9851             ,p_NEW_ATTRIBUTE7                    => FND_API.G_MISS_CHAR
9852             ,p_OLD_ATTRIBUTE7                    => FND_API.G_MISS_CHAR
9853             ,p_NEW_ATTRIBUTE8                    => FND_API.G_MISS_CHAR
9854             ,p_OLD_ATTRIBUTE8                    => FND_API.G_MISS_CHAR
9855             ,p_NEW_ATTRIBUTE9                    => FND_API.G_MISS_CHAR
9856             ,p_OLD_ATTRIBUTE9                    => FND_API.G_MISS_CHAR
9857             ,p_NEW_ATTRIBUTE10                   => FND_API.G_MISS_CHAR
9858             ,p_OLD_ATTRIBUTE10                   => FND_API.G_MISS_CHAR
9859             ,p_NEW_ATTRIBUTE11                   => FND_API.G_MISS_CHAR
9860             ,p_OLD_ATTRIBUTE11                   => FND_API.G_MISS_CHAR
9861             ,p_NEW_ATTRIBUTE12                   => FND_API.G_MISS_CHAR
9862             ,p_OLD_ATTRIBUTE12                   => FND_API.G_MISS_CHAR
9863             ,p_NEW_ATTRIBUTE13                   => FND_API.G_MISS_CHAR
9864             ,p_OLD_ATTRIBUTE13                   => FND_API.G_MISS_CHAR
9865             ,p_NEW_ATTRIBUTE14                   => FND_API.G_MISS_CHAR
9866             ,p_OLD_ATTRIBUTE14                   => FND_API.G_MISS_CHAR
9867             ,p_NEW_ATTRIBUTE15                   => FND_API.G_MISS_CHAR
9868             ,p_OLD_ATTRIBUTE15                   => FND_API.G_MISS_CHAR
9869             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
9870             ,p_CREATION_DATE                     => SYSDATE
9871             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
9872             ,p_LAST_UPDATE_DATE                  => SYSDATE
9873             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
9874             ,p_OBJECT_VERSION_NUMBER             => 1
9875             ,p_OLD_INST_LOC_TYPE_CODE            => l_instance_hist_rec.OLD_INSTALL_LOCATION_TYPE_CODE
9876             ,p_NEW_INST_LOC_TYPE_CODE            => l_instance_hist_rec.NEW_INSTALL_LOCATION_TYPE_CODE
9877             ,p_OLD_INST_LOC_ID                   => l_instance_hist_rec.OLD_INSTALL_LOCATION_ID
9878             ,p_NEW_INST_LOC_ID                   => l_instance_hist_rec.NEW_INSTALL_LOCATION_ID
9879             ,p_OLD_INST_USAGE_CODE               => FND_API.G_MISS_CHAR
9880             ,p_NEW_INST_USAGE_CODE               => FND_API.G_MISS_CHAR
9881             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => FND_API.G_MISS_NUM
9882             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => FND_API.G_MISS_NUM
9883             ,p_OLD_CONFIG_INST_REV_NUM           => FND_API.G_MISS_NUM
9884             ,p_NEW_CONFIG_INST_REV_NUM           => FND_API.G_MISS_NUM
9885             ,p_OLD_CONFIG_VALID_STATUS           => FND_API.G_MISS_CHAR
9886             ,p_NEW_CONFIG_VALID_STATUS           => FND_API.G_MISS_CHAR
9887             ,p_OLD_INSTANCE_DESCRIPTION          => FND_API.G_MISS_CHAR
9888             ,p_NEW_INSTANCE_DESCRIPTION          => FND_API.G_MISS_CHAR
9889             ,p_OLD_INSTALL_DATE                  => l_instance_hist_rec.OLD_INSTALL_DATE
9890             ,p_NEW_INSTALL_DATE                  => l_instance_hist_rec.NEW_INSTALL_DATE
9891             ,p_OLD_RETURN_BY_DATE                => FND_API.G_MISS_DATE
9892             ,p_NEW_RETURN_BY_DATE                => FND_API.G_MISS_DATE
9893             ,p_OLD_ACTUAL_RETURN_DATE            => FND_API.G_MISS_DATE
9894             ,p_NEW_ACTUAL_RETURN_DATE            => FND_API.G_MISS_DATE
9895             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_instance_hist_rec.OLD_LAST_OE_AGREEMENT_ID
9896             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_instance_hist_rec.NEW_LAST_OE_AGREEMENT_ID
9897 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_instance_hist_rec.OLD_LAST_OE_ORDER_LINE_ID
9898 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_instance_hist_rec.NEW_LAST_OE_ORDER_LINE_ID
9899 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID
9900 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID
9901 	    ,p_OLD_LAST_WIP_JOB_ID               => l_instance_hist_rec.OLD_LAST_WIP_JOB_ID
9902 	    ,p_NEW_LAST_WIP_JOB_ID               => l_instance_hist_rec.NEW_LAST_WIP_JOB_ID
9903 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_instance_hist_rec.OLD_LAST_PO_PO_LINE_ID
9904 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_instance_hist_rec.NEW_LAST_PO_PO_LINE_ID
9905 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_instance_hist_rec.OLD_LAST_PA_PROJECT_ID
9906 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_instance_hist_rec.NEW_LAST_PA_PROJECT_ID
9907 	    ,p_OLD_LAST_PA_TASK_ID          => l_instance_hist_rec.OLD_LAST_PA_TASK_ID
9908 	    ,p_NEW_LAST_PA_TASK_ID          => l_instance_hist_rec.NEW_LAST_PA_TASK_ID
9909 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_instance_hist_rec.OLD_LAST_TXN_LINE_DETAIL_ID
9910 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_instance_hist_rec.NEW_LAST_TXN_LINE_DETAIL_ID
9911 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_instance_hist_rec.OLD_LAST_OE_PO_NUMBER
9912 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_instance_hist_rec.NEW_LAST_OE_PO_NUMBER
9913  	    --start of parameters addition for eam integration--
9914 	    ,p_OLD_NETWORK_ASSET_FLAG             => FND_API.G_MISS_CHAR
9915 	    ,p_NEW_NETWORK_ASSET_FLAG             => FND_API.G_MISS_CHAR
9916 	    ,p_OLD_MAINTAINABLE_FLAG              => FND_API.G_MISS_CHAR
9917 	    ,p_NEW_MAINTAINABLE_FLAG              => FND_API.G_MISS_CHAR
9918 	    ,p_OLD_PN_LOCATION_ID                 => FND_API.G_MISS_NUM
9919 	    ,p_NEW_PN_LOCATION_ID                 => FND_API.G_MISS_NUM
9920 	    ,p_OLD_ASSET_CRITICALITY_CODE         => FND_API.G_MISS_CHAR
9921 	    ,p_NEW_ASSET_CRITICALITY_CODE         => FND_API.G_MISS_CHAR
9922 	    ,p_OLD_CATEGORY_ID                    => FND_API.G_MISS_NUM
9923 	    ,p_NEW_CATEGORY_ID                    => FND_API.G_MISS_NUM
9924 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => FND_API.G_MISS_NUM
9925 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => FND_API.G_MISS_NUM
9926 	    ,p_OLD_INSTANTIATION_FLAG             => FND_API.G_MISS_CHAR
9927 	    ,p_NEW_INSTANTIATION_FLAG             => FND_API.G_MISS_CHAR
9928 	    ,p_OLD_LINEAR_LOCATION_ID             => FND_API.G_MISS_NUM
9929 	    ,p_NEW_LINEAR_LOCATION_ID             => FND_API.G_MISS_NUM
9930 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => FND_API.G_MISS_CHAR
9931 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => FND_API.G_MISS_CHAR
9932 	    ,p_OLD_CHECKIN_STATUS                 => FND_API.G_MISS_NUM
9933 	    ,p_NEW_CHECKIN_STATUS                 => FND_API.G_MISS_NUM
9934 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => FND_API.G_MISS_DATE
9935 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => FND_API.G_MISS_DATE
9936             ,p_OLD_ATTRIBUTE16                    => FND_API.G_MISS_CHAR
9937             ,p_NEW_ATTRIBUTE16                    => FND_API.G_MISS_CHAR
9938             ,p_OLD_ATTRIBUTE17                    => FND_API.G_MISS_CHAR
9939             ,p_NEW_ATTRIBUTE17                    => FND_API.G_MISS_CHAR
9940             ,p_OLD_ATTRIBUTE18                    => FND_API.G_MISS_CHAR
9941             ,p_NEW_ATTRIBUTE18                    => FND_API.G_MISS_CHAR
9942             ,p_OLD_ATTRIBUTE19                    => FND_API.G_MISS_CHAR
9943             ,p_NEW_ATTRIBUTE19                    => FND_API.G_MISS_CHAR
9944             ,p_OLD_ATTRIBUTE20                    => FND_API.G_MISS_CHAR
9945             ,p_NEW_ATTRIBUTE20                    => FND_API.G_MISS_CHAR
9946             ,p_OLD_ATTRIBUTE21                    => FND_API.G_MISS_CHAR
9947             ,p_NEW_ATTRIBUTE21                    => FND_API.G_MISS_CHAR
9948             ,p_OLD_ATTRIBUTE22                    => FND_API.G_MISS_CHAR
9949             ,p_NEW_ATTRIBUTE22                    => FND_API.G_MISS_CHAR
9950             ,p_OLD_ATTRIBUTE23                    => FND_API.G_MISS_CHAR
9951             ,p_NEW_ATTRIBUTE23                    => FND_API.G_MISS_CHAR
9952             ,p_OLD_ATTRIBUTE24                    => FND_API.G_MISS_CHAR
9953             ,p_NEW_ATTRIBUTE24                    => FND_API.G_MISS_CHAR
9954             ,p_OLD_ATTRIBUTE25                    => FND_API.G_MISS_CHAR
9955             ,p_NEW_ATTRIBUTE25                    => FND_API.G_MISS_CHAR
9956             ,p_OLD_ATTRIBUTE26                    => FND_API.G_MISS_CHAR
9957             ,p_NEW_ATTRIBUTE26                    => FND_API.G_MISS_CHAR
9958             ,p_OLD_ATTRIBUTE27                    => FND_API.G_MISS_CHAR
9959             ,p_NEW_ATTRIBUTE27                    => FND_API.G_MISS_CHAR
9960             ,p_OLD_ATTRIBUTE28                    => FND_API.G_MISS_CHAR
9961             ,p_NEW_ATTRIBUTE28                    => FND_API.G_MISS_CHAR
9962             ,p_OLD_ATTRIBUTE29                    => FND_API.G_MISS_CHAR
9963             ,p_NEW_ATTRIBUTE29                    => FND_API.G_MISS_CHAR
9964             ,p_OLD_ATTRIBUTE30                    => FND_API.G_MISS_CHAR
9965             ,p_NEW_ATTRIBUTE30                    => FND_API.G_MISS_CHAR
9966   	    --end of parameters addition for eam integration--
9967    -- Addition of columns for FA Integration
9968             ,p_OLD_PAYABLES_UNIT_PRICE            => FND_API.G_MISS_NUM
9969             ,p_NEW_PAYABLES_UNIT_PRICE            => FND_API.G_MISS_NUM
9970             ,p_OLD_PAYABLES_CURRENCY_CODE         => FND_API.G_MISS_CHAR
9971             ,p_NEW_PAYABLES_CURRENCY_CODE         => FND_API.G_MISS_CHAR
9972             ,p_OLD_PURCHASE_UNIT_PRICE            => FND_API.G_MISS_NUM
9973             ,p_NEW_PURCHASE_UNIT_PRICE            => FND_API.G_MISS_NUM
9974             ,p_OLD_PURCHASE_CURRENCY_CODE         => FND_API.G_MISS_CHAR
9975             ,p_NEW_PURCHASE_CURRENCY_CODE         => FND_API.G_MISS_CHAR
9976             ,p_OLD_SALES_UNIT_PRICE               => FND_API.G_MISS_NUM
9977             ,p_NEW_SALES_UNIT_PRICE               => FND_API.G_MISS_NUM
9978             ,p_OLD_SALES_CURRENCY_CODE            => FND_API.G_MISS_CHAR
9979             ,p_NEW_SALES_CURRENCY_CODE            => FND_API.G_MISS_CHAR
9980             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_instance_hist_rec.old_operational_status_code
9981             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_instance_hist_rec.new_operational_status_code
9982     -- End addition of columns for FA Integration
9983             );
9984 	    End of insert...Bug:5615169 */
9985 
9986 	--Start of: Added for Bug:5615169
9987 	--Insert the data into bulk table
9988 	l_ciih_blk_ins_cnt                                                       := l_ciih_blk_ins_cnt + 1;
9989 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).instance_history_id          := l_csi_item_instance_h_id;
9990 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).instance_id                  := l_rel_tbl(j).subject_id;
9991 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).transaction_id               := p_txn_rec.TRANSACTION_ID;
9992 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_number          := l_curr_instance_rec.INSTANCE_NUMBER;
9993 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_number          := p_instance_rec.INSTANCE_NUMBER;
9994 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_external_reference       := l_curr_instance_rec.EXTERNAL_REFERENCE;
9995 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_external_reference       := p_instance_rec.EXTERNAL_REFERENCE;
9996 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inventory_item_id        := l_curr_instance_rec.INVENTORY_ITEM_ID;
9997 	-- Bug 10039396 When updating location changes for child
9998   -- Inventory and serial numbers are not changed
9999   --l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inventory_item_id        := p_instance_rec.INVENTORY_ITEM_ID;
10000   l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inventory_item_id        := l_curr_instance_rec.INVENTORY_ITEM_ID;
10001 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inventory_revision       := l_curr_instance_rec.INVENTORY_REVISION;
10002 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inventory_revision       := p_instance_rec.INVENTORY_REVISION;
10003 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_master_org_id        := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
10004 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_master_org_id        := p_instance_rec.INV_MASTER_ORGANIZATION_ID;
10005 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_serial_number            := l_curr_instance_rec.SERIAL_NUMBER;
10006 	-- Bug 10039396
10007   --l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_serial_number            := p_instance_rec.SERIAL_NUMBER;
10008   l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_serial_number            := l_curr_instance_rec.SERIAL_NUMBER;
10009 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_mfg_serial_number_flag   := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
10010 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_mfg_serial_number_flag   := p_instance_rec.MFG_SERIAL_NUMBER_FLAG;
10011 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_lot_number               := l_curr_instance_rec.LOT_NUMBER;
10012 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_lot_number               := p_instance_rec.LOT_NUMBER;
10013 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_quantity                 := l_curr_instance_rec.QUANTITY;
10014 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_quantity                 := p_instance_rec.QUANTITY;
10015 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_unit_of_measure          := l_curr_instance_rec.UNIT_OF_MEASURE;
10016 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_unit_of_measure          := p_instance_rec.UNIT_OF_MEASURE;
10017 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_accounting_class_code    := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
10018 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_accounting_class_code    := p_instance_rec.ACCOUNTING_CLASS_CODE;
10019 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_condition_id    := l_curr_instance_rec.INSTANCE_CONDITION_ID;
10020 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_condition_id    := p_instance_rec.INSTANCE_CONDITION_ID;
10021 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_status_id       := l_curr_instance_rec.INSTANCE_STATUS_ID;
10022 	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;
10023 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_customer_view_flag       := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
10024 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_customer_view_flag       := p_instance_rec.CUSTOMER_VIEW_FLAG;
10025 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_merchant_view_flag       := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
10026 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_merchant_view_flag       := p_instance_rec.MERCHANT_VIEW_FLAG;
10027 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sellable_flag            := l_curr_instance_rec.SELLABLE_FLAG;
10028 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sellable_flag            := p_instance_rec.SELLABLE_FLAG;
10029 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_system_id                := l_curr_instance_rec.SYSTEM_ID;
10030 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_system_id                := l_system_id;
10031 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_type_code       := l_curr_instance_rec.INSTANCE_TYPE_CODE;
10032 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_type_code       := p_instance_rec.INSTANCE_TYPE_CODE;
10033 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_active_start_date        := l_curr_instance_rec.ACTIVE_START_DATE;
10034 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_active_start_date        := p_instance_rec.ACTIVE_START_DATE;
10035 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_active_end_date          := l_curr_instance_rec.ACTIVE_END_DATE;
10036 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_active_end_date          := p_instance_rec.ACTIVE_END_DATE;
10037 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_location_type_code       := l_curr_instance_rec.LOCATION_TYPE_CODE;
10038 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_location_type_code       := p_instance_rec.LOCATION_TYPE_CODE;
10039 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_location_id              := l_curr_instance_rec.LOCATION_ID;
10040 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_location_id              := p_instance_rec.LOCATION_ID;
10041 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_organization_id      := l_curr_instance_rec.INV_ORGANIZATION_ID;
10042 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_organization_id      := p_instance_rec.INV_ORGANIZATION_ID;
10043 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_subinventory_name    := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
10044 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_subinventory_name    := p_instance_rec.INV_SUBINVENTORY_NAME;
10045 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_inv_locator_id           := l_curr_instance_rec.INV_LOCATOR_ID;
10046 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_inv_locator_id           := p_instance_rec.INV_LOCATOR_ID;
10047 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pa_project_id            := l_curr_instance_rec.PA_PROJECT_ID;
10048 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pa_project_id            := p_instance_rec.PA_PROJECT_ID;
10049 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pa_project_task_id       := l_curr_instance_rec.PA_PROJECT_TASK_ID;
10050 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pa_project_task_id       := p_instance_rec.PA_PROJECT_TASK_ID;
10051 	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;
10052 	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;
10053 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_wip_job_id               := l_curr_instance_rec.WIP_JOB_ID;
10054 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_wip_job_id               := p_instance_rec.WIP_JOB_ID;
10055 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_po_order_line_id         := l_curr_instance_rec.PO_ORDER_LINE_ID;
10056 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_po_order_line_id         := p_instance_rec.PO_ORDER_LINE_ID;
10057 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_completeness_flag        := l_curr_instance_rec.COMPLETENESS_FLAG;
10058 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_completeness_flag        := p_instance_rec.COMPLETENESS_FLAG;
10059 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).full_dump_flag               := 'Y';
10060 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_context                  := p_instance_rec.CONTEXT;
10061 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_context                  := l_curr_instance_rec.CONTEXT;
10062 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute1               := p_instance_rec.ATTRIBUTE1;
10063 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute1               := l_curr_instance_rec.ATTRIBUTE1;
10064 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute2               := p_instance_rec.ATTRIBUTE2;
10065 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute2               := l_curr_instance_rec.ATTRIBUTE2;
10066 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute3               := p_instance_rec.ATTRIBUTE3;
10067 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute3               := l_curr_instance_rec.ATTRIBUTE3;
10068 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute4               := p_instance_rec.ATTRIBUTE4;
10069 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute4               := l_curr_instance_rec.ATTRIBUTE4;
10070 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute5               := p_instance_rec.ATTRIBUTE5;
10071 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute5               := l_curr_instance_rec.ATTRIBUTE5;
10072 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute6               := p_instance_rec.ATTRIBUTE6;
10073 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute6               := l_curr_instance_rec.ATTRIBUTE6;
10074 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute7               := p_instance_rec.ATTRIBUTE7;
10075 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute7               := l_curr_instance_rec.ATTRIBUTE7;
10076 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute8               := p_instance_rec.ATTRIBUTE8;
10077 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute8               := l_curr_instance_rec.ATTRIBUTE8;
10078 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute9               := p_instance_rec.ATTRIBUTE9;
10079 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute9               := l_curr_instance_rec.ATTRIBUTE9;
10080 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute10              := p_instance_rec.ATTRIBUTE10;
10081 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute10              := l_curr_instance_rec.ATTRIBUTE10;
10082 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute11              := p_instance_rec.ATTRIBUTE11;
10083 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute11              := l_curr_instance_rec.ATTRIBUTE11;
10084 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute12              := p_instance_rec.ATTRIBUTE12;
10085 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute12              := l_curr_instance_rec.ATTRIBUTE12;
10086 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute13              := p_instance_rec.ATTRIBUTE13;
10087 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute13              := l_curr_instance_rec.ATTRIBUTE13;
10088 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute14              := p_instance_rec.ATTRIBUTE14;
10089 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute14              := l_curr_instance_rec.ATTRIBUTE14;
10090 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute15              := p_instance_rec.ATTRIBUTE15;
10091 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute15              := l_curr_instance_rec.ATTRIBUTE15;
10092 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).created_by                        := FND_GLOBAL.USER_ID;
10093 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).creation_date                     := SYSDATE;
10094 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_updated_by                   := FND_GLOBAL.USER_ID;
10095 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_update_date                  := SYSDATE;
10096 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).last_update_login                 := FND_GLOBAL.CONC_LOGIN_ID;
10097 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).object_version_number             := 1;
10098 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_location_type_code := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
10099 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_location_type_code := p_instance_rec.INSTALL_LOCATION_TYPE_CODE;
10100 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_location_id        := l_curr_instance_rec.INSTALL_LOCATION_ID;
10101 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_location_id        := p_instance_rec.INSTALL_LOCATION_ID;
10102 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_usage_code        := l_curr_instance_rec.INSTANCE_USAGE_CODE;
10103 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_usage_code        := p_instance_rec.INSTANCE_USAGE_CODE;
10104 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_vld_organization_id   := fnd_api.g_miss_num;
10105 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_vld_organization_id   := fnd_api.g_miss_num;
10106 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_config_inst_rev_num        := l_curr_instance_rec.CONFIG_INST_REV_NUM;
10107 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_config_inst_rev_num        := p_instance_rec.CONFIG_INST_REV_NUM;
10108 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_config_valid_status        := l_curr_instance_rec.CONFIG_VALID_STATUS;
10109 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_config_valid_status        := p_instance_rec.CONFIG_VALID_STATUS;
10110 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instance_description       := l_curr_instance_rec.INSTANCE_DESCRIPTION;
10111 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instance_description       := p_instance_rec.INSTANCE_DESCRIPTION;
10112 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_install_date               := l_curr_instance_rec.INSTALL_DATE;
10113 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_install_date               := l_install_date;
10114 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_return_by_date             := l_curr_instance_rec.RETURN_BY_DATE;
10115 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_return_by_date             := p_instance_rec.RETURN_BY_DATE;
10116 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_actual_return_date         := l_curr_instance_rec.ACTUAL_RETURN_DATE;
10117 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_actual_return_date         := p_instance_rec.ACTUAL_RETURN_DATE;
10118 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_agreement_id       := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
10119 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_agreement_id       := p_instance_rec.LAST_OE_AGREEMENT_ID;
10120 	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;
10121 	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;
10122 	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;
10123 	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;
10124 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_wip_job_id            := l_curr_instance_rec.LAST_WIP_JOB_ID;
10125 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_wip_job_id            := p_instance_rec.LAST_WIP_JOB_ID;
10126 	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;
10127 	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;
10128 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_pa_project_id         := l_curr_instance_rec.LAST_PA_PROJECT_ID;
10129 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_pa_project_id         := p_instance_rec.LAST_PA_PROJECT_ID;
10130 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_pa_task_id            := l_curr_instance_rec.LAST_PA_TASK_ID;
10131 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_pa_task_id            := p_instance_rec.LAST_PA_TASK_ID;
10132 	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;
10133 	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;
10134 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_last_oe_po_number          := l_curr_instance_rec.LAST_OE_PO_NUMBER;
10135 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_last_oe_po_number          := p_instance_rec.LAST_OE_PO_NUMBER;
10136 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_capitalization_status         := l_curr_instance_rec.CAPITALIZATION_STATUS;
10137 	--          l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_capitalization_status         := p_instance_rec.CAPITALIZATION_STATUS;
10138 	--Start of parameters addition for eam integration
10139 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_network_asset_flag      := l_curr_instance_rec.NETWORK_ASSET_FLAG;
10140 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_network_asset_flag      := p_instance_rec.NETWORK_ASSET_FLAG;
10141 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_maintainable_flag       := l_curr_instance_rec.MAINTAINABLE_FLAG;
10142 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_maintainable_flag       := p_instance_rec.MAINTAINABLE_FLAG;
10143 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_pn_location_id          := l_curr_instance_rec.PN_LOCATION_ID;
10144 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_pn_location_id          := p_instance_rec.PN_LOCATION_ID;
10145 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_asset_criticality_code  := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
10146 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_asset_criticality_code  := p_instance_rec.ASSET_CRITICALITY_CODE;
10147 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_category_id             := l_curr_instance_rec.CATEGORY_ID;
10148 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_category_id             := p_instance_rec.CATEGORY_ID;
10149 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_equipment_gen_object_id := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
10150 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_equipment_gen_object_id := p_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
10151 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_instantiation_flag      := l_curr_instance_rec.INSTANTIATION_FLAG;
10152 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_instantiation_flag      := p_instance_rec.INSTANTIATION_FLAG;
10153 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_linear_location_id      := l_curr_instance_rec.LINEAR_LOCATION_ID;
10154 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_linear_location_id      := p_instance_rec.LINEAR_LOCATION_ID;
10155 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_operational_log_flag    := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
10156 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_operational_log_flag    := p_instance_rec.OPERATIONAL_LOG_FLAG;
10157 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_checkin_status          := l_curr_instance_rec.CHECKIN_STATUS;
10158 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_checkin_status          := p_instance_rec.CHECKIN_STATUS;
10159 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_supplier_warranty_exp_date   := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
10160 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_supplier_warranty_exp_date   := p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
10161 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute16             := l_curr_instance_rec.ATTRIBUTE16;
10162 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute16             := p_instance_rec.ATTRIBUTE16;
10163 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute17             := l_curr_instance_rec.ATTRIBUTE17;
10164 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute17             := p_instance_rec.ATTRIBUTE17;
10165 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute18             := l_curr_instance_rec.ATTRIBUTE18;
10166 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute18             := p_instance_rec.ATTRIBUTE18;
10167 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute19             := l_curr_instance_rec.ATTRIBUTE19;
10168 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute19             := p_instance_rec.ATTRIBUTE19;
10169 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute20             := l_curr_instance_rec.ATTRIBUTE20;
10170 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute20             := p_instance_rec.ATTRIBUTE20;
10171 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute21             := l_curr_instance_rec.ATTRIBUTE21;
10172 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute21             := p_instance_rec.ATTRIBUTE21;
10173 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute22             := l_curr_instance_rec.ATTRIBUTE22;
10174 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute22             := p_instance_rec.ATTRIBUTE22;
10175 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute23             := l_curr_instance_rec.ATTRIBUTE23;
10176 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute23             := p_instance_rec.ATTRIBUTE23;
10177 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute24             := l_curr_instance_rec.ATTRIBUTE24;
10178 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute24             := p_instance_rec.ATTRIBUTE24;
10179 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute25             := l_curr_instance_rec.ATTRIBUTE25;
10180 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute25             := p_instance_rec.ATTRIBUTE25;
10181 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute26             := l_curr_instance_rec.ATTRIBUTE26;
10182 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute26             := p_instance_rec.ATTRIBUTE26;
10183 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute27             := l_curr_instance_rec.ATTRIBUTE27;
10184 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute27             := p_instance_rec.ATTRIBUTE27;
10185 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute28             := l_curr_instance_rec.ATTRIBUTE28;
10186 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute28             := p_instance_rec.ATTRIBUTE28;
10187 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute29             := l_curr_instance_rec.ATTRIBUTE29;
10188 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute29             := p_instance_rec.ATTRIBUTE29;
10189 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_attribute30             := l_curr_instance_rec.ATTRIBUTE30;
10190 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_attribute30             := p_instance_rec.ATTRIBUTE30;
10191 	--End of parameters addition for eam integration--
10192 	--Addition of columns for FA Integration
10193 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_payables_unit_price     := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
10194 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_payables_unit_price     := p_instance_rec.PAYABLES_UNIT_PRICE;
10195 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_payables_currency_code  := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
10196 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_payables_currency_code  := p_instance_rec.PAYABLES_CURRENCY_CODE;
10197 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_purchase_unit_price     := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
10198 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_purchase_unit_price     := p_instance_rec.PURCHASE_UNIT_PRICE;
10199 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_purchase_currency_code  := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
10200 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_purchase_currency_code  := p_instance_rec.PURCHASE_CURRENCY_CODE;
10201 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sales_unit_price        := l_curr_instance_rec.SALES_UNIT_PRICE;
10202 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sales_unit_price        := p_instance_rec.SALES_UNIT_PRICE;
10203 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_sales_currency_code     := l_curr_instance_rec.SALES_CURRENCY_CODE;
10204 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_sales_currency_code     := p_instance_rec.SALES_CURRENCY_CODE;
10205 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_operational_status_code := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
10206 	l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_operational_status_code := p_instance_rec.OPERATIONAL_STATUS_CODE;
10207 	--End addition of columns for FA Integration
10208 	--End of Insert into bulk table
10209 	--End of: Added for Bug:5615169
10210         -- Begin Add Code for Siebel Genesis Project
10211         l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).old_source_code   := fnd_api.g_miss_char;
10212         l_inst_hist_tbl_blk_ins(l_ciih_blk_ins_cnt).new_source_code   := fnd_api.g_miss_char;
10213         -- End Add Code for Siebel Genesis Project
10214       END IF;
10215      END;
10216      -- End of modifications for Bug#2547034 on 09/20/02 - rtalluri
10217      --
10218      -- Opening New Cursor to retrieve Child Id records Details
10219 	OPEN new_instance_rec(l_rel_tbl(j).subject_id);
10220 	FETCH new_instance_rec INTO l_new_instance_rec;
10221 	   IF new_instance_rec%NOTFOUND THEN
10222 	      FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
10223 	      FND_MSG_PUB.ADD;
10224 	      RAISE FND_API.G_EXC_ERROR;
10225 	   END IF;
10226 	CLOSE new_instance_rec;
10227      --
10228      l_party_id := NULL;
10229      Begin
10230         select party_id
10231         into l_party_id
10232         from CSI_I_PARTIES
10233         where instance_id = l_rel_tbl(j).subject_id
10234         and   relationship_type_code = 'OWNER';
10235      Exception
10236         when no_data_found then
10237            l_party_id := null;
10238      End;
10239      -- p_instance_rec.call_contracts would've been set to FLASE whenever ownership is changed from
10240      -- external to internal or Internal to External. Since contracts call will be made
10241      -- at account update level, we are supressing the call here.
10242      IF l_party_id IS NOT NULL AND
10243         l_party_id <> l_internal_party_id AND
10244         p_instance_rec.call_contracts <> FND_API.G_FALSE THEN
10245 	IF l_curr_instance_rec.instance_status_id <> l_new_instance_rec.instance_status_id AND
10246 	   l_termination_status AND
10247 	   p_instance_rec.call_contracts <> FND_API.G_FALSE THEN
10248 	   IF p_txn_rec.transaction_type_id in (53,54) THEN
10249 	      l_oks_txn_type := 'RET';
10250 	   ELSE
10251 	      l_oks_txn_type := 'TRM';
10252 	   END IF;
10253 	   --
10254 
10255 
10256 
10257 	   --Changed for Bug 11679952 --Added more paranthesis for Bug 13055898
10258            IF p_txn_rec.transaction_type_id <> 7   -- Added for bug 3973706
10259 		     AND (((Nvl(p_instance_rec.CALL_CONTRACTS, FND_API.G_FALSE) = FND_API.G_TRUE)
10260 			       AND (p_txn_rec.transaction_type_id = 3)
10261                    AND (nvl(p_txn_rec.source_group_ref, FND_API.G_MISS_CHAR) = 'WBADI')
10262 				  )
10263                   OR nvl(p_txn_rec.source_group_ref, FND_API.G_MISS_CHAR) <> 'WBADI'
10264 				 )
10265            THEN
10266 	      csi_item_instance_pvt.Call_to_Contracts
10267 	       ( p_transaction_type   =>   l_oks_txn_type
10268 	        ,p_instance_id        =>   l_rel_tbl(j).SUBJECT_ID
10269 	        ,p_new_instance_id    =>   NULL
10270 	        ,p_vld_org_id         =>   l_curr_instance_rec.last_vld_organization_id
10271 	        ,p_quantity           =>   NULL
10272 	        ,p_party_account_id1  =>   NULL
10273 	        ,p_party_account_id2  =>   NULL
10274 	        ,p_transaction_date   =>   p_txn_rec.transaction_date
10275 	        ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date
10276 		,p_txn_type_id        => p_txn_rec.transaction_type_id  --added for BUG# 5752271
10277                 ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
10278 	        ,x_return_status      =>   x_return_status
10279 	        ,x_msg_count          =>   x_msg_count
10280 	        ,x_msg_data           =>   x_msg_data
10281 	       );
10282               --
10283 	      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
10284 	         l_msg_index := 1;
10285 	         l_msg_count := x_msg_count;
10286 	         WHILE l_msg_count > 0 LOOP
10287 		   x_msg_data := FND_MSG_PUB.GET
10288 				 (  l_msg_index,
10289 				    FND_API.G_FALSE
10290 				  );
10291 		   csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
10292 		       l_msg_index := l_msg_index + 1;
10293 		       l_msg_count := l_msg_count - 1;
10294 		 END LOOP;
10295 		 RAISE FND_API.G_EXC_ERROR;
10296 	      END IF;
10297            END IF; -- Added for bug 3973706
10298 	ELSE
10299 	   IF ((nvl(l_curr_instance_rec.active_end_date,(sysdate+1)) <= sysdate) AND
10300 	      ((p_instance_rec.active_end_date IS NULL) OR
10301 	       (p_instance_rec.active_end_date IS NOT NULL AND p_instance_rec.active_end_date > sysdate AND
10302 		p_instance_rec.active_end_date <> FND_API.G_MISS_DATE))) THEN
10303 	      --
10304 	      -- 11.5.10 ER. While un-expiring the instance, order Line ID will be passed only if it changes
10305 	      IF l_new_instance_rec.location_type_code = 'IN_TRANSIT' THEN
10306 		 IF nvl(l_curr_instance_rec.in_transit_order_line_id,-99999) <>
10307 				    nvl(l_new_instance_rec.in_transit_order_line_id,-99999) THEN
10308 		    l_order_line_id := l_new_instance_rec.in_transit_order_line_id;
10309 		 ELSE
10310 		    l_order_line_id := NULL;
10311 		 END IF;
10312 	      ELSE
10313 		 IF nvl(l_curr_instance_rec.last_oe_order_line_id,-99999) <>
10314 				  nvl(l_new_instance_rec.last_oe_order_line_id,-99999) THEN
10315 		    l_order_line_id := l_new_instance_rec.last_oe_order_line_id;
10316 		 ELSE
10317 		    l_order_line_id := NULL;
10318 		 END IF;
10319 	      END IF;
10320 	      --
10321 	      --Changed for FP of Bug 11679952
10322               IF p_txn_rec.transaction_type_id <> 7   -- Added for bug 3973706
10323 	         AND ((Nvl(p_instance_rec.CALL_CONTRACTS, FND_API.G_FALSE) = FND_API.G_TRUE)
10324 			AND (p_txn_rec.transaction_type_id = 3)
10325 			AND (nvl(p_txn_rec.source_group_ref, FND_API.G_MISS_CHAR) = 'WBADI'
10326 		       )
10327 		      OR nvl(p_txn_rec.source_group_ref, FND_API.G_MISS_CHAR) <> 'WBADI'
10328 		     )
10329               THEN
10330 		 csi_item_instance_pvt.Call_to_Contracts
10331 		  ( p_transaction_type   =>   'NEW'
10332 		   ,p_instance_id        =>   l_rel_tbl(j).SUBJECT_ID
10333 		   ,p_new_instance_id    =>   NULL
10334 		   ,p_vld_org_id         =>   l_curr_instance_rec.last_vld_organization_id
10335 		   ,p_quantity           =>   NULL
10336 		   ,p_party_account_id1  =>   NULL
10337 		   ,p_party_account_id2  =>   NULL
10338 		   ,p_transaction_date   =>   p_txn_rec.transaction_date
10339 		   ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date
10340 		   ,p_order_line_id      =>   l_order_line_id
10341 		   ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
10342 		   ,x_return_status      =>   x_return_status
10343 		   ,x_msg_count          =>   x_msg_count
10344 		   ,x_msg_data           =>   x_msg_data
10345 		   );
10346                  --
10347 		 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
10348 		    l_msg_index := 1;
10349 		    l_msg_count := x_msg_count;
10350 		    WHILE l_msg_count > 0 LOOP
10351 			 x_msg_data := FND_MSG_PUB.GET
10352 				       (  l_msg_index,
10353 					  FND_API.G_FALSE
10354 					);
10355 			 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
10356 			     l_msg_index := l_msg_index + 1;
10357 			     l_msg_count := l_msg_count - 1;
10358 		    END LOOP;
10359 		    RAISE FND_API.G_EXC_ERROR;
10360 		 END IF;
10361               END IF;  -- Added for bug 3973706
10362            -- 'IDC' is added as ELSE condition. If during un-expiry, install_date is also changed then
10363            -- OKS would have used that date when called with 'NEW'. In such cases, OKS need not be called
10364            -- with 'IDC'. Following call is exclusively for Install_date change only.
10365            ELSE -- Check for 'IDC'
10366 	      --Changed for Bug 11679952
10367 	      IF NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) <>
10368 		 NVL(l_new_instance_rec.install_date,fnd_api.g_miss_date)
10369 		 AND((Nvl(p_instance_rec.CALL_CONTRACTS, FND_API.G_FALSE) = FND_API.G_TRUE)
10370 		      AND (p_txn_rec.transaction_type_id = 3)
10371 		      AND (nvl(p_txn_rec.source_group_ref, FND_API.G_MISS_CHAR) = 'WBADI'
10372 		      )
10373                       OR nvl(p_txn_rec.source_group_ref, FND_API.G_MISS_CHAR) <> 'WBADI'
10374 		     )
10375 		 THEN
10376 		 csi_item_instance_pvt.Call_to_Contracts
10377 		  ( p_transaction_type   =>   'IDC'
10378 		   ,p_instance_id        =>   l_rel_tbl(j).SUBJECT_ID
10379 		   ,p_new_instance_id    =>   NULL
10380 		   ,p_vld_org_id         =>   l_curr_instance_rec.last_vld_organization_id
10381 		   ,p_quantity           =>   NULL
10382 		   ,p_party_account_id1  =>   NULL
10383 		   ,p_party_account_id2  =>   NULL
10384 		   ,p_transaction_date   =>   p_txn_rec.transaction_date
10385 		   ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date
10386 		   ,p_order_line_id      =>   l_order_line_id
10387 		   ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
10388 		   ,x_return_status      =>   x_return_status
10389 		   ,x_msg_count          =>   x_msg_count
10390 		   ,x_msg_data           =>   x_msg_data
10391 		   );
10392                  --
10393 		 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
10394 		    l_msg_index := 1;
10395 		    l_msg_count := x_msg_count;
10396 		    WHILE l_msg_count > 0 LOOP
10397 			 x_msg_data := FND_MSG_PUB.GET
10398 				       (  l_msg_index,
10399 					  FND_API.G_FALSE
10400 					);
10401 			 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
10402 			     l_msg_index := l_msg_index + 1;
10403 			     l_msg_count := l_msg_count - 1;
10404 		    END LOOP;
10405 		    RAISE FND_API.G_EXC_ERROR;
10406 		 END IF;
10407               END IF;
10408 	   END IF;
10409         END IF;
10410      END IF; -- Internal party and call_contracts check
10411  -- End of modifications for Bug#2887590
10412    EXCEPTION
10413      WHEN PROCESS_NEXT THEN
10414        NULL;
10415    END;
10416       -- Calling eam API to log instance update event
10417        IF l_eam_item
10418        THEN
10419           IF l_ins_hist_id IS NOT NULL
10420           THEN
10421              l_instance_history_id:=l_ins_hist_id;
10422           ELSE
10423              l_instance_history_id:=l_csi_item_instance_h_id;
10424           END IF;
10425           eam_asset_log_pvt.instance_update_event
10426           (p_api_version         => p_api_version
10427           ,p_init_msg_list       => fnd_api.g_false
10428           ,p_commit              => fnd_api.g_false
10429           ,p_validation_level    => fnd_api.g_valid_level_full
10430           ,x_return_status       => x_return_status
10431           ,x_msg_count           => x_msg_count
10432           ,x_msg_data            => x_msg_data
10433           ,p_instance_id         => l_rel_tbl(j).subject_id
10434           ,p_ref_id              => l_instance_history_id
10435           ,p_event_date          => sysdate);
10436          IF NOT(x_return_status = fnd_api.g_ret_sts_success)
10437          THEN
10438             csi_gen_utility_pvt.put_line('Error from eam_asset_log_pvt.instance_update_event API');
10439             RAISE fnd_api.g_exc_error;
10440          END IF;
10441        END IF;
10442       -- Calling eam API to log instance update event
10443  END LOOP;
10444 --Start of:Added for Bug:5615169
10445  IF l_inst_hist_tbl_blk_ins.count > 0 THEN   -- BUG#6203160
10446 --Do the ciih bulk insert
10447 --Convert PL/SQl table to column table
10448 build_inst_hist_rec_of_table ( p_inst_hist_tbl => l_inst_hist_tbl_blk_ins  -- csi_datastructures_pub.instance_history_tbl
10449 ,p_inst_hist_rec_tab                           => l_inst_hist_rec_tab      -- csi_item_instance_grp.instance_history_rec_tab
10450 );
10451 --Do the actual bulk Insert
10452 -- Modified OLD_LAST_OE_AGREEMENT_ID, NEW_LAST_OE_AGREEMENT_ID for the bug 6967129
10453 l_ciih_blk_ins_cnt := l_inst_hist_rec_tab.instance_history_id.count;
10454 --
10455 FORALL i in 1 .. l_ciih_blk_ins_cnt
10456 INSERT
10457 INTO    CSI_ITEM_INSTANCES_H
10458         ( INSTANCE_HISTORY_ID,
10459                 INSTANCE_ID,
10460                 TRANSACTION_ID,
10461                 OLD_INSTANCE_NUMBER,
10462                 NEW_INSTANCE_NUMBER,
10463                 OLD_EXTERNAL_REFERENCE,
10464                 NEW_EXTERNAL_REFERENCE,
10465                 OLD_INVENTORY_ITEM_ID,
10466                 NEW_INVENTORY_ITEM_ID,
10467                 OLD_INVENTORY_REVISION,
10468                 NEW_INVENTORY_REVISION,
10469                 OLD_INV_MASTER_ORGANIZATION_ID,
10470                 NEW_INV_MASTER_ORGANIZATION_ID,
10471                 OLD_SERIAL_NUMBER,
10472                 NEW_SERIAL_NUMBER ,
10473                 OLD_MFG_SERIAL_NUMBER_FLAG,
10474                 NEW_MFG_SERIAL_NUMBER_FLAG,
10475                 OLD_LOT_NUMBER,
10476                 NEW_LOT_NUMBER,
10477                 OLD_QUANTITY,
10478                 NEW_QUANTITY,
10479                 OLD_UNIT_OF_MEASURE,
10480                 NEW_UNIT_OF_MEASURE,
10481                 OLD_ACCOUNTING_CLASS_CODE,
10482                 NEW_ACCOUNTING_CLASS_CODE,
10483                 OLD_INSTANCE_CONDITION_ID,
10484                 NEW_INSTANCE_CONDITION_ID,
10485                 OLD_INSTANCE_STATUS_ID,
10486                 NEW_INSTANCE_STATUS_ID,
10487                 OLD_CUSTOMER_VIEW_FLAG,
10488                 NEW_CUSTOMER_VIEW_FLAG,
10489                 OLD_MERCHANT_VIEW_FLAG,
10490                 NEW_MERCHANT_VIEW_FLAG,
10491                 OLD_SELLABLE_FLAG,
10492                 NEW_SELLABLE_FLAG,
10493                 OLD_SYSTEM_ID,
10494                 NEW_SYSTEM_ID,
10495                 OLD_INSTANCE_TYPE_CODE,
10496                 NEW_INSTANCE_TYPE_CODE,
10497                 OLD_ACTIVE_START_DATE,
10498                 NEW_ACTIVE_START_DATE,
10499                 OLD_ACTIVE_END_DATE,
10500                 NEW_ACTIVE_END_DATE,
10501                 OLD_LOCATION_TYPE_CODE,
10502                 NEW_LOCATION_TYPE_CODE,
10503                 OLD_LOCATION_ID,
10504                 NEW_LOCATION_ID,
10505                 OLD_INV_ORGANIZATION_ID,
10506                 NEW_INV_ORGANIZATION_ID,
10507                 OLD_INV_SUBINVENTORY_NAME,
10508                 NEW_INV_SUBINVENTORY_NAME,
10509                 OLD_INV_LOCATOR_ID,
10510                 NEW_INV_LOCATOR_ID,
10511                 OLD_PA_PROJECT_ID,
10512                 NEW_PA_PROJECT_ID,
10513                 OLD_PA_PROJECT_TASK_ID,
10514                 NEW_PA_PROJECT_TASK_ID,
10515                 OLD_IN_TRANSIT_ORDER_LINE_ID,
10516                 NEW_IN_TRANSIT_ORDER_LINE_ID,
10517                 OLD_WIP_JOB_ID,
10518                 NEW_WIP_JOB_ID,
10519                 OLD_PO_ORDER_LINE_ID,
10520                 NEW_PO_ORDER_LINE_ID,
10521                 OLD_COMPLETENESS_FLAG,
10522                 NEW_COMPLETENESS_FLAG,
10523                 FULL_DUMP_FLAG,
10524                 OLD_CONTEXT,
10525                 NEW_CONTEXT,
10526                 OLD_ATTRIBUTE1,
10527                 NEW_ATTRIBUTE1,
10528                 OLD_ATTRIBUTE2,
10529                 NEW_ATTRIBUTE2,
10530                 OLD_ATTRIBUTE3,
10531                 NEW_ATTRIBUTE3,
10532                 OLD_ATTRIBUTE4,
10533                 NEW_ATTRIBUTE4,
10534                 OLD_ATTRIBUTE5,
10535                 NEW_ATTRIBUTE5,
10536                 OLD_ATTRIBUTE6,
10537                 NEW_ATTRIBUTE6,
10538                 OLD_ATTRIBUTE7,
10539                 NEW_ATTRIBUTE7,
10540                 OLD_ATTRIBUTE8,
10541                 NEW_ATTRIBUTE8,
10542                 OLD_ATTRIBUTE9,
10543                 NEW_ATTRIBUTE9,
10544                 OLD_ATTRIBUTE10,
10545                 NEW_ATTRIBUTE10,
10546                 OLD_ATTRIBUTE11,
10547                 NEW_ATTRIBUTE11,
10548                 OLD_ATTRIBUTE12,
10549                 NEW_ATTRIBUTE12,
10550                 OLD_ATTRIBUTE13,
10551                 NEW_ATTRIBUTE13,
10552                 OLD_ATTRIBUTE14,
10553                 NEW_ATTRIBUTE14,
10554                 OLD_ATTRIBUTE15,
10555                 NEW_ATTRIBUTE15,
10556                 CREATED_BY,
10557                 CREATION_DATE,
10558                 LAST_UPDATED_BY,
10559                 LAST_UPDATE_DATE,
10560                 LAST_UPDATE_LOGIN,
10561                 OBJECT_VERSION_NUMBER,
10562                 OLD_INST_LOC_TYPE_CODE,
10563                 NEW_INST_LOC_TYPE_CODE,
10564                 OLD_INST_LOC_ID,
10565                 NEW_INST_LOC_ID,
10566                 OLD_INST_USAGE_CODE,
10567                 NEW_INST_USAGE_CODE,
10568                 OLD_last_vld_organization_id,
10569                 NEW_last_vld_organization_id,
10570                 OLD_CONFIG_INST_REV_NUM ,
10571                 NEW_CONFIG_INST_REV_NUM ,
10572                 OLD_CONFIG_VALID_STATUS ,
10573                 NEW_CONFIG_VALID_STATUS ,
10574                 OLD_INSTANCE_DESCRIPTION ,
10575                 NEW_INSTANCE_DESCRIPTION ,
10576                 OLD_INSTALL_DATE ,
10577                 NEW_INSTALL_DATE ,
10578                 OLD_RETURN_BY_DATE ,
10579                 NEW_RETURN_BY_DATE ,
10580                 OLD_ACTUAL_RETURN_DATE ,
10581                 NEW_ACTUAL_RETURN_DATE ,
10582                 OLD_OE_AGREEMENT_ID ,
10583                 NEW_OE_AGREEMENT_ID ,
10584                 OLD_LAST_OE_ORDER_LINE_ID,
10585                 NEW_LAST_OE_ORDER_LINE_ID,
10586                 OLD_LAST_OE_RMA_LINE_ID,
10587                 NEW_LAST_OE_RMA_LINE_ID,
10588                 OLD_LAST_WIP_JOB_ID,
10589                 NEW_LAST_WIP_JOB_ID,
10590                 OLD_LAST_PO_PO_LINE_ID,
10591                 NEW_LAST_PO_PO_LINE_ID,
10592                 OLD_LAST_PA_PROJECT_ID,
10593                 NEW_LAST_PA_PROJECT_ID,
10594                 OLD_LAST_PA_TASK_ID,
10595                 NEW_LAST_PA_TASK_ID,
10596                 OLD_LAST_TXN_LINE_DETAIL_ID,
10597                 NEW_LAST_TXN_LINE_DETAIL_ID,
10598                 OLD_LAST_OE_PO_NUMBER,
10599                 NEW_LAST_OE_PO_NUMBER,
10600                 --Start of eam integration changes--
10601                 OLD_NETWORK_ASSET_FLAG,
10602                 NEW_NETWORK_ASSET_FLAG,
10603                 OLD_MAINTAINABLE_FLAG,
10604                 NEW_MAINTAINABLE_FLAG,
10605                 OLD_PN_LOCATION_ID,
10606                 NEW_PN_LOCATION_ID,
10607                 OLD_ASSET_CRITICALITY_CODE,
10608                 NEW_ASSET_CRITICALITY_CODE,
10609                 OLD_CATEGORY_ID,
10610                 NEW_CATEGORY_ID,
10611                 OLD_EQUIPMENT_GEN_OBJECT_ID,
10612                 NEW_EQUIPMENT_GEN_OBJECT_ID,
10613                 OLD_INSTANTIATION_FLAG,
10614                 NEW_INSTANTIATION_FLAG,
10615                 OLD_LINEAR_LOCATION_ID,
10616                 NEW_LINEAR_LOCATION_ID,
10617                 OLD_OPERATIONAL_LOG_FLAG,
10618                 NEW_OPERATIONAL_LOG_FLAG,
10619                 OLD_CHECKIN_STATUS,
10620                 NEW_CHECKIN_STATUS,
10621                 OLD_SUPPLIER_WARRANTY_EXP_DATE,
10622                 NEW_SUPPLIER_WARRANTY_EXP_DATE,
10623                 OLD_ATTRIBUTE16,
10624                 NEW_ATTRIBUTE16,
10625                 OLD_ATTRIBUTE17,
10626                 NEW_ATTRIBUTE17,
10627                 OLD_ATTRIBUTE18,
10628                 NEW_ATTRIBUTE18,
10629                 OLD_ATTRIBUTE19,
10630                 NEW_ATTRIBUTE19,
10631                 OLD_ATTRIBUTE20,
10632                 NEW_ATTRIBUTE20,
10633                 OLD_ATTRIBUTE21,
10634                 NEW_ATTRIBUTE21,
10635                 OLD_ATTRIBUTE22,
10636                 NEW_ATTRIBUTE22,
10637                 OLD_ATTRIBUTE23,
10638                 NEW_ATTRIBUTE23,
10639                 OLD_ATTRIBUTE24,
10640                 NEW_ATTRIBUTE24,
10641                 OLD_ATTRIBUTE25,
10642                 NEW_ATTRIBUTE25,
10643                 OLD_ATTRIBUTE26,
10644                 NEW_ATTRIBUTE26,
10645                 OLD_ATTRIBUTE27,
10646                 NEW_ATTRIBUTE27,
10647                 OLD_ATTRIBUTE28,
10648                 NEW_ATTRIBUTE28,
10649                 OLD_ATTRIBUTE29,
10650                 NEW_ATTRIBUTE29,
10651                 OLD_ATTRIBUTE30,
10652                 NEW_ATTRIBUTE30,
10653                 --End of eam integration changes--
10654                 --Addition of columns for FA Integration
10655                 OLD_PAYABLES_UNIT_PRICE,
10656                 NEW_PAYABLES_UNIT_PRICE,
10657                 OLD_PAYABLES_CURRENCY_CODE,
10658                 NEW_PAYABLES_CURRENCY_CODE,
10659                 OLD_PURCHASE_UNIT_PRICE,
10660                 NEW_PURCHASE_UNIT_PRICE,
10661                 OLD_PURCHASE_CURRENCY_CODE,
10662                 NEW_PURCHASE_CURRENCY_CODE,
10663                 OLD_SALES_UNIT_PRICE,
10664                 NEW_SALES_UNIT_PRICE,
10665                 OLD_SALES_CURRENCY_CODE,
10666                 NEW_SALES_CURRENCY_CODE,
10667                 OLD_OPERATIONAL_STATUS_CODE,
10668                 NEW_OPERATIONAL_STATUS_CODE
10669                 --End addition of columns for FA Integration
10670         )
10671         VALUES
10672         (
10673                 l_inst_hist_rec_tab.INSTANCE_HISTORY_ID(i),
10674                 decode( l_inst_hist_rec_tab.INSTANCE_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.INSTANCE_ID(i)),
10675                 decode( l_inst_hist_rec_tab.TRANSACTION_ID(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.TRANSACTION_ID(i)),
10676                 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)),
10677                 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)),
10678                 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)),
10679                 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)),
10680                 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)),
10681                 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)),
10682                 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)),
10683                 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)),
10684                 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)),
10685                 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)),
10686                 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)),
10687                 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)),
10688                 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)),
10689                 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)),
10690                 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)),
10691                 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)),
10692                 decode( l_inst_hist_rec_tab.OLD_QUANTITY(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.OLD_QUANTITY(i)),
10693                 decode( l_inst_hist_rec_tab.NEW_QUANTITY(i), FND_API.G_MISS_NUM, NULL, l_inst_hist_rec_tab.NEW_QUANTITY(i)),
10694                 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)),
10695                 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)),
10696                 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)),
10697                 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)),
10698                 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)),
10699                 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)),
10700                 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)),
10701                 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)),
10702                 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)),
10703                 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)),
10704                 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)),
10705                 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)),
10706                 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)),
10707                 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)),
10708                 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)),
10709                 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)),
10710                 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)),
10711                 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)),
10712                 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)),
10713                 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)),
10714                 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)),
10715                 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)),
10716                 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)),
10717                 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)),
10718                 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)),
10719                 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)),
10720                 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)),
10721                 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)),
10722                 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)),
10723                 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)),
10724                 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)),
10725                 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)),
10726                 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)),
10727                 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)),
10728                 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)),
10729                 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)),
10730                 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)),
10731                 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)),
10732                 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)),
10733                 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)),
10734                 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)),
10735                 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)),
10736                 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)),
10737                 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)),
10738                  'N',
10739                 decode( l_inst_hist_rec_tab.OLD_CONTEXT(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_CONTEXT(i)),
10740                 decode( l_inst_hist_rec_tab.NEW_CONTEXT(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_CONTEXT(i)),
10741                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE1(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE1(i)),
10742                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE1(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE1(i)),
10743                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE2(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE2(i)),
10744                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE2(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE2(i)),
10745                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE3(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE3(i)),
10746                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE3(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE3(i)),
10747                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE4(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE4(i)),
10748                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE4(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE4(i)),
10749                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE5(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE5(i)),
10750                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE5(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE5(i)),
10751                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE6(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE6(i)),
10752                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE6(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE6(i)),
10753                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE7(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE7(i)),
10754                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE7(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE7(i)),
10755                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE8(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE8(i)),
10756                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE8(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE8(i)),
10757                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE9(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE9(i)),
10758                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE9(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE9(i)),
10759                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE10(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE10(i)),
10760                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE10(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE10(i)),
10761                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE11(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE11(i)),
10762                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE11(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE11(i)),
10763                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE12(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE12(i)),
10764                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE12(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE12(i)),
10765                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE13(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE13(i)),
10766                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE13(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE13(i)),
10767                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE14(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE14(i)),
10768                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE14(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE14(i)),
10769                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE15(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE15(i)),
10770                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE15(i), FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE15(i)),
10771                 l_user_id,
10772                 SYSDATE,
10773                 l_user_id,
10774                 SYSDATE,
10775                 l_login_id,
10776                 1,
10777                 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)),
10778                 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)),
10779                 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)),
10780                 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)),
10781                 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)),
10782                 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)),
10783                 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)),
10784                 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)),
10785                 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)),
10786                 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)),
10787                 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)),
10788                 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)),
10789                 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)),
10790                 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)),
10791 
10792                 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)) ,
10793                 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)) ,
10794                 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)),
10795                 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)),
10796                 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)),
10797                 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)),
10798 
10799                 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)),
10800                 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)),
10801 
10802                 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)),
10803                 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)),
10804                 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)),
10805                 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)),
10806                 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)),
10807                 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)),
10808                 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)),
10809                 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)),
10810                 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)),
10811                 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)),
10812                 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)),
10813                 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)),
10814                 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)),
10815                 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)),
10816                 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)),
10817                 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)),
10818                 --Start of eam integration changes--
10819                 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)),
10820                 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)),
10821                 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)),
10822                 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)),
10823                 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)),
10824                 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)),
10825                 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)),
10826                 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)),
10827                 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)),
10828                 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)),
10829                 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)),
10830                 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)),
10831                 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)),
10832                 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)),
10833                 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)),
10834                 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)),
10835                 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)),
10836                 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)),
10837                 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)),
10838                 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)),
10839                 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)),
10840                 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)),
10841                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE16(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE16(i)),
10842                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE16(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE16(i)),
10843                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE17(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE17(i)),
10844                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE17(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE17(i)),
10845                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE18(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE18(i)),
10846                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE18(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE18(i)),
10847                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE19(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE19(i)),
10848                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE19(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE19(i)),
10849                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE20(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE20(i)),
10850                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE20(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE20(i)),
10851                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE21(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE21(i)),
10852                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE21(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE21(i)),
10853                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE22(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE22(i)),
10854                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE22(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE22(i)),
10855                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE23(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE23(i)),
10856                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE23(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE23(i)),
10857                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE24(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE24(i)),
10858                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE24(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE24(i)),
10859                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE25(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE25(i)),
10860                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE25(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE25(i)),
10861                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE26(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE26(i)),
10862                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE26(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE26(i)),
10863                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE27(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE27(i)),
10864                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE27(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE27(i)),
10865                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE28(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE28(i)),
10866                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE28(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE28(i)),
10867                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE29(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE29(i)),
10868                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE29(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE29(i)),
10869                 decode( l_inst_hist_rec_tab.OLD_ATTRIBUTE30(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.OLD_ATTRIBUTE30(i)),
10870                 decode( l_inst_hist_rec_tab.NEW_ATTRIBUTE30(i) ,FND_API.G_MISS_CHAR, NULL, l_inst_hist_rec_tab.NEW_ATTRIBUTE30(i)),
10871                 --End of eam integration changes--
10872                 --Addition of columns for FA Integration
10873                 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)),
10874                 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)),
10875                 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)),
10876                 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)),
10877                 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)),
10878                 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)),
10879                 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)),
10880                 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)),
10881                 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)),
10882                 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)),
10883                 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)),
10884                 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)),
10885                 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)),
10886                 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))
10887                 --End addition of columns for FA Integration
10888         );
10889 --End of:Added for Bug:5615169
10890 END IF; -- Bug#6203160
10891 END IF; -- check for l_rel_tbl count
10892   -- End of modifications for Bug#2887590
10893 
10894         IF FND_API.To_Boolean( p_commit )
10895         THEN
10896                 COMMIT WORK;
10897         END IF;
10898 
10899     -- Standard call to get message count and if count is  get message info.
10900     FND_MSG_PUB.Count_And_Get
10901             (p_encoded => FND_API.G_FALSE,
10902                  p_count      =>       x_msg_count ,
10903              p_data       =>       x_msg_data
10904             );
10905 
10906 EXCEPTION
10907 
10908     WHEN FND_API.G_EXC_ERROR THEN
10909             IF FND_API.To_Boolean( p_commit ) THEN
10910                ROLLBACK TO update_child_instance_pvt;
10911             END IF;
10912             x_return_status := FND_API.G_RET_STS_ERROR ;
10913             FND_MSG_PUB.Count_And_Get
10914                 (   p_encoded => FND_API.G_FALSE,
10915                  p_count               =>      x_msg_count,
10916                     p_data                =>      x_msg_data
10917                 );
10918     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
10919             IF FND_API.To_Boolean( p_commit ) THEN
10920                ROLLBACK TO update_child_instance_pvt;
10921             END IF;
10922             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10923             FND_MSG_PUB.Count_And_Get
10924                 (   p_encoded => FND_API.G_FALSE,
10925                  p_count               =>      x_msg_count,
10926                     p_data                =>      x_msg_data
10927                 );
10928     WHEN OTHERS THEN
10929             IF FND_API.To_Boolean( p_commit ) THEN
10930                ROLLBACK TO update_child_instance_pvt;
10931             END IF;
10932             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
10933 
10934             IF     FND_MSG_PUB.Check_Msg_Level
10935                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
10936             THEN
10937                     FND_MSG_PUB.Add_Exc_Msg
10938                     (      G_PKG_NAME            ,
10939                           l_api_name
10940                     );
10941             END IF;
10942             FND_MSG_PUB.Count_And_Get
10943                 (   p_encoded => FND_API.G_FALSE,
10944                  p_count               =>      x_msg_count,
10945                     p_data                =>      x_msg_data
10946                 );
10947 
10948 END update_child_instance_location;
10949 
10950 /*---------------------------------------------------*/
10951 /* procedure name: call_contracts                    */
10952 /* description   : call_contracts                    */
10953 /*                                                   */
10954 /*---------------------------------------------------*/
10955 
10956 PROCEDURE  Call_to_Contracts
10957 (  p_transaction_type         IN   VARCHAR2
10958   ,p_instance_id              IN   NUMBER
10959   ,p_new_instance_id          IN   NUMBER
10960   ,p_vld_org_id               IN   NUMBER
10961   ,p_quantity                 IN   NUMBER
10962   ,p_party_account_id1        IN   NUMBER
10963   ,p_party_account_id2        IN   NUMBER
10964   ,p_transaction_date         IN   DATE
10965   ,p_source_transaction_date  IN   DATE     -- Added by jpwilson
10966   ,p_transaction_id           IN   NUMBER   -- Added by sguthiva for TRF(HTML)
10967   ,p_grp_call_contracts       IN   VARCHAR2  -- Will be TRUE only from Group API
10968   ,p_txn_type_id              IN   NUMBER
10969   ,p_system_id                IN   NUMBER
10970   ,p_order_line_id            IN   NUMBER
10971   ,p_call_from_bom_expl       IN   VARCHAR2
10972   ,p_oks_txn_inst_tbl         IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
10973   ,x_return_status            OUT  NOCOPY VARCHAR2
10974   ,x_msg_count                OUT  NOCOPY NUMBER
10975   ,x_msg_data                 OUT  NOCOPY VARCHAR2
10976   )IS
10977 
10978    CURSOR instance_csr (p_ins_id IN NUMBER) IS
10979     SELECT  *
10980     FROM    csi_item_instances
10981     WHERE   instance_id = p_ins_id;
10982 
10983      --Start of: Added for bug 5615162
10984      CURSOR instance_txn_chk_csr(p_ins_id IN NUMBER,p_txn_id in NUMBER, p_src_txn_date in DATE)  IS
10985          SELECT 'X' FROM CSI_TRANSACTIONS CST,
10986          (
10987          SELECT CIIH.TRANSACTION_ID TRANSACTION_ID, CIIH.INSTANCE_ID INSTANCE_ID
10988          FROM CSI_ITEM_INSTANCES_H CIIH
10989          WHERE INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10990          UNION ALL
10991 
10992          SELECT CIVH.TRANSACTION_ID TRANSACTION_ID, CIV.INSTANCE_ID INSTANCE_ID
10993          FROM CSI_IEA_VALUES_H CIVH, CSI_IEA_VALUES CIV
10994          WHERE CIV.ATTRIBUTE_VALUE_ID = CIVH.ATTRIBUTE_VALUE_ID
10995          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
10996          UNION ALL
10997 
10998          SELECT CIRH.TRANSACTION_ID TRANSACTION_ID, CIR.SUBJECT_ID INSTANCE_ID
10999          FROM CSI_II_RELATIONSHIPS_H CIRH, CSI_II_RELATIONSHIPS CIR
11000          WHERE CIRH.RELATIONSHIP_ID = CIR.RELATIONSHIP_ID
11001          AND subject_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
11002          UNION ALL
11003 
11004          SELECT CIRH.TRANSACTION_ID TRANSACTION_ID, CIR.OBJECT_ID INSTANCE_ID
11005          FROM CSI_II_RELATIONSHIPS_H CIRH, CSI_II_RELATIONSHIPS CIR
11006          WHERE CIRH.RELATIONSHIP_ID = CIR.RELATIONSHIP_ID
11007          AND object_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
11008          UNION ALL
11009 
11010          SELECT CIPH.TRANSACTION_ID TRANSACTION_ID, CIP.INSTANCE_ID INSTANCE_ID
11011          FROM CSI_I_PARTIES_H CIPH, CSI_I_PARTIES CIP
11012          WHERE CIPH.INSTANCE_PARTY_ID = CIP.INSTANCE_PARTY_ID
11013          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
11014          UNION ALL
11015 
11016          SELECT CIAAH.TRANSACTION_ID TRANSACTION_ID, CIAA.INSTANCE_ID INSTANCE_ID
11017          FROM CSI_I_ASSETS_H CIAAH, CSI_I_ASSETS CIAA
11018          WHERE CIAAH.INSTANCE_ASSET_ID = CIAA.INSTANCE_ASSET_ID
11019          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
11020          UNION ALL
11021 
11022          SELECT CIAH.TRANSACTION_ID TRANSACTION_ID, CIP.INSTANCE_ID INSTANCE_ID
11023          FROM CSI_IP_ACCOUNTS_H CIAH, CSI_IP_ACCOUNTS CIA, CSI_I_PARTIES CIP
11024          WHERE CIAH.IP_ACCOUNT_ID = CIA.IP_ACCOUNT_ID
11025          AND CIA.INSTANCE_PARTY_ID = CIP.INSTANCE_PARTY_ID
11026          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
11027          UNION ALL
11028 
11029          SELECT CIOAH.TRANSACTION_ID TRANSACTION_ID, CIOA.INSTANCE_ID INSTANCE_ID
11030          FROM CSI_I_ORG_ASSIGNMENTS_H CIOAH, CSI_I_ORG_ASSIGNMENTS CIOA
11031          WHERE CIOAH.INSTANCE_OU_ID = CIOA.INSTANCE_OU_ID
11032          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
11033          UNION ALL
11034 
11035          SELECT CIVLH.TRANSACTION_ID TRANSACTION_ID, CIVL.INSTANCE_ID INSTANCE_ID
11036          FROM CSI_I_VERSION_LABELS_H CIVLH, CSI_I_VERSION_LABELS CIVL
11037          WHERE CIVLH.VERSION_LABEL_ID = CIVL.VERSION_LABEL_ID
11038          AND INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
11039          UNION ALL
11040 
11041          SELECT CIPAH.TRANSACTION_ID TRANSACTION_ID, CIPA.INSTANCE_ID INSTANCE_ID
11042          FROM CSI_I_PRICING_ATTRIBS_H CIPAH, CSI_I_PRICING_ATTRIBS CIPA
11043          WHERE INSTANCE_ID=p_ins_id  AND TRANSACTION_ID<>p_txn_id
11044          AND CIPAH.PRICING_ATTRIBUTE_ID = CIPA.PRICING_ATTRIBUTE_ID
11045          ) CSA
11046 	 WHERE CSA.TRANSACTION_ID=CST.TRANSACTION_ID
11047 	 AND CST.TRANSACTION_ID <>p_txn_id
11048 	 AND CST.SOURCE_TRANSACTION_DATE>p_src_txn_date
11049 	 AND ROWNUM=1;
11050       --End of: Added for bug 5615162
11051 
11052     l_instance_csr             instance_csr%ROWTYPE;
11053     l_new_ins_csr              instance_csr%ROWTYPE;
11054     l_new_instance_csr         instance_csr%ROWTYPE;
11055     l_debug_level              NUMBER;
11056     l_contracts_status         VARCHAR2(3);
11057     l_internal_party_id        NUMBER;
11058     l_msg_count                NUMBER;
11059     l_msg_index                NUMBER;
11060     l_msg_dummy                NUMBER;
11061     l_transaction_date         DATE;
11062     l_call_contracts           BOOLEAN := FALSE;
11063     l_temp                     VARCHAR2(1);
11064     l_chg_owner                VARCHAR2(1);
11065     l_sql                      VARCHAR2(2000);     -- Added for ER 3378294
11066     l_found                    VARCHAR2(1) := 'N'; -- Added for ER 3378294
11067     l_rma_line_id              NUMBER;
11068     l_oks_txn_count            NUMBER;
11069     l_exists                   VARCHAR2(1);
11070     l_order_org_id             NUMBER;
11071     l_order_shipped_date       DATE;
11072     l_txn_date                 DATE;
11073     l_txn_exists               VARCHAR2(1) :=null; --5615162
11074 
11075 	SKIP_CHILD_CONT_PROCESSING  EXCEPTION; -- Bug 13055898
11076 
11077 BEGIN
11078 
11079    --  Initialize API return status to success
11080    x_return_status := FND_API.G_RET_STS_SUCCESS;
11081    --
11082    l_contracts_status := FND_PROFILE.VALUE('CSI_CONTRACTS_ENABLED');
11083    --
11084    IF UPPER(l_contracts_status) <> 'Y'  THEN
11085       RETURN;
11086    END IF;
11087    --
11088    csi_gen_utility_pvt.put_line('Begin Call_to_Contracts : '||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
11089    csi_gen_utility_pvt.put_line('Contracts Transaction Type: '||p_transaction_type);
11090    IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
11091       csi_gen_utility_pvt.populate_install_param_rec;
11092    END IF;
11093    --
11094    l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
11095    --
11096    IF l_internal_party_id IS NULL THEN
11097       FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
11098       FND_MSG_PUB.ADD;
11099       RAISE FND_API.G_EXC_ERROR;
11100    END IF;
11101    --
11102    OPEN instance_csr (p_instance_id);
11103    FETCH instance_csr INTO l_instance_csr;
11104    CLOSE instance_csr;
11105    --
11106    csi_gen_utility_pvt.put_line('p_transaction_date: '||p_transaction_date);
11107    csi_gen_utility_pvt.put_line('p_source_transaction_date: '||p_source_transaction_date);
11108    --
11109    IF p_transaction_date IS NULL OR p_transaction_date = fnd_api.g_miss_date THEN
11110      l_txn_date:= SYSDATE;
11111    ELSE
11112      l_txn_date:= p_transaction_date;
11113    END IF;
11114    --
11115    l_exists := 'N';
11116    --
11117    -- Bug 13055898
11118    -- For return transaction if last_oe_rma_line_id is NULL, then this processing was invoked by
11119    -- RMA processing of parent instance while updating child instance location
11120    -- Skipping this contracts param building call as as child RMA lines are yet to processed
11121    -- and child RMA line id is NULL
11122    csi_gen_utility_pvt.put_line('RMA Line ID : '|| l_instance_csr.last_oe_rma_line_id);
11123    csi_gen_utility_pvt.put_line('p_transaction_id : '|| p_transaction_id); -- Added for bug 13057871
11124    IF ( NVL(p_transaction_type, FND_API.G_MISS_CHAR) = 'RET' )THEN
11125      IF NVL(l_instance_csr.last_oe_rma_line_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM  THEN
11126 	  csi_gen_utility_pvt.put_line('Skipping RMA Processing for child instances as RMA Line id is NULL');
11127 	  RAISE SKIP_CHILD_CONT_PROCESSING;
11128 	 ELSIF (NVL(p_transaction_id,FND_API.G_MISS_NUM) <> FND_API.G_MISS_NUM) THEN -- Added for bug 13057871 start
11129 	   BEGIN
11130 	     csi_gen_utility_pvt.put_line('l_exists : '||l_exists);
11131 	     SELECT 'Y'
11132 	     INTO   l_exists
11133 	     FROM   oe_order_lines_all ool,
11134 	            csi_transactions ct
11135 	     WHERE  ool.line_id = l_instance_csr.last_oe_rma_line_id
11136 	     AND    ct.transaction_id = p_transaction_id
11137 	     AND    ool.header_id = ct.source_header_ref_id
11138 		 AND    ROWNUM = 1;
11139 	   EXCEPTION
11140 	     WHEN OTHERS THEN
11141 		   l_exists := 'N';
11142 	   END;
11143 	   csi_gen_utility_pvt.put_line('l_exists : '||l_exists);
11144 	   IF l_exists = 'N' THEN
11145 	     csi_gen_utility_pvt.put_line('Skipping RMA Processing for child instances as RMA Line id is not current RMA');
11146 	     RAISE SKIP_CHILD_CONT_PROCESSING;
11147 	   END IF;
11148 	 END IF; -- Added for bug 13057871 END
11149    END IF;
11150 
11151    l_exists := 'N'; -- Added for bug 13057871
11152 
11153    IF ( l_instance_csr.owner_party_id IS NOT NULL
11154         AND l_instance_csr.owner_party_id <> l_internal_party_id
11155         AND l_instance_csr.owner_party_source_table = 'HZ_PARTIES')
11156         OR ( l_instance_csr.owner_party_id IS NOT NULL
11157         AND l_instance_csr.owner_party_id = l_internal_party_id
11158         AND p_transaction_type in ('TRM','RET')
11159         AND l_instance_csr.owner_party_source_table = 'HZ_PARTIES')
11160    THEN
11161       IF p_source_transaction_date IS NULL OR p_source_transaction_date = fnd_api.g_miss_date THEN
11162          l_transaction_date:= SYSDATE;
11163       ELSE
11164 	 l_transaction_date:= p_source_transaction_date;
11165       END IF;
11166       --
11167       csi_gen_utility_pvt.put_line('l_transaction_date: '||l_transaction_date);
11168 
11169       IF p_oks_txn_inst_tbl.count > 0 THEN
11170       csi_gen_utility_pvt.put_line('p_oks_txn_inst_tbl has records ...');
11171 	 FOR J in p_oks_txn_inst_tbl.FIRST .. p_oks_txn_inst_tbl.LAST LOOP
11172 	    IF p_oks_txn_inst_tbl.EXISTS(J) THEN
11173 	       IF p_oks_txn_inst_tbl(J).old_customer_product_id = p_instance_id THEN
11174 		  IF p_transaction_type = 'TRM' THEN
11175 		  -- Modified for bug 5442038
11176 		     IF l_instance_csr.active_end_date IS NULL OR
11177 		        l_instance_csr.active_end_date = fnd_api.g_miss_date
11178 		     THEN
11179 		        p_oks_txn_inst_tbl(J).termination_date := l_transaction_date;
11180 		     ELSE
11181 		        csi_gen_utility_pvt.put_line('1. Assigning user entered end date');
11182 		        p_oks_txn_inst_tbl(J).termination_date := l_instance_csr.active_end_date;
11183 		     END IF;
11184 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11185                      p_oks_txn_inst_tbl(J).TRM := 'Y';
11186                   ELSIF p_transaction_type = 'RET' THEN
11187                      p_oks_txn_inst_tbl(J).termination_date := l_transaction_date;
11188 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11189                      p_oks_txn_inst_tbl(J).RET := 'Y';
11190 		  ELSIF p_transaction_type = 'TRF' THEN
11191 		     IF p_system_id IS NOT NULL AND
11192 			p_system_id <> FND_API.G_MISS_NUM THEN
11193 			p_oks_txn_inst_tbl(J).system_id := p_system_id;
11194 		     ELSE
11195 			p_oks_txn_inst_tbl(J).system_id := NULL;
11196 		     END IF;
11197 		     p_oks_txn_inst_tbl(J).new_customer_product_id :=
11198 						  p_oks_txn_inst_tbl(J).old_customer_product_id;
11199 		     p_oks_txn_inst_tbl(J).new_inventory_item_id :=
11200 						  p_oks_txn_inst_tbl(J).old_inventory_item_id;
11201 		     p_oks_txn_inst_tbl(J).new_unit_of_measure :=
11202 						  p_oks_txn_inst_tbl(J).old_unit_of_measure;
11203 		     p_oks_txn_inst_tbl(J).new_quantity :=
11204 						  p_oks_txn_inst_tbl(J).old_quantity;
11205 		     p_oks_txn_inst_tbl(J).new_customer_acct_id := p_party_account_id2;
11206 		     p_oks_txn_inst_tbl(J).old_customer_acct_id := p_party_account_id1;
11207 		     --
11208 		     -- The following code has been added by sguthiva in order to incorporate the
11209 		     -- changes made by the HTML UI .
11210 		     -- When HTML UI passes a transaction date which should be less than sysdate,
11211 		     -- then before calling contracts we need to make sure that there are no transactions
11212 		     -- between passed date and sysdate.
11213 		     IF (( p_source_transaction_date IS NOT NULL) AND (p_source_transaction_date < SYSDATE)) AND
11214 			p_source_transaction_date <> fnd_api.g_miss_date THEN
11215 			l_temp:=NULL;
11216 			-- srramakr changed to source_transaction_date instead of transaction_date (3804960)
11217 			BEGIN
11218 			 /*Commenting for bug 5615162 added more code below
11219 			   SELECT 'x'
11220 			   INTO   l_temp
11221 			   FROM   csi_inst_transactions_v
11222 			   WHERE  instance_id=p_instance_id
11223 			   AND    source_transaction_date > p_source_transaction_date
11224 			   AND    transaction_id <> p_transaction_id
11225 			   AND    ROWNUM=1;
11226 			   IF l_temp IS NOT NULL AND p_txn_type_id <> 53  --added for bug  5752271 */
11227 
11228 			--Start of:Added for bug 5615162
11229 			l_txn_exists :=null;
11230 			OPEN instance_txn_chk_csr (p_instance_id,p_transaction_id,p_transaction_date);
11231 			FETCH instance_txn_chk_csr INTO l_txn_exists;
11232 			CLOSE instance_txn_chk_csr;
11233 
11234 			IF l_txn_exists IS NOT NULL AND p_txn_type_id <> 53 --End of:Added for bug 5615162
11235 			   THEN
11236 			      x_return_status := fnd_api.g_ret_sts_error ;
11237 			      fnd_message.set_name('CSI', 'CSI_HAS_TXNS_GT_SYS');
11238 			      fnd_message.set_token('INSTANCE_ID',p_instance_id );
11239 			      fnd_message.set_token('SOURCE_TXN_DATE',to_char(p_source_transaction_date, 'DD-MON-YYYY HH24:MI:SS'));
11240 			      fnd_msg_pub.add;
11241 			     RAISE fnd_api.g_exc_error;
11242 			   END IF;
11243 			EXCEPTION
11244 			   WHEN fnd_api.g_exc_error THEN
11245 			      RAISE fnd_api.g_exc_error;
11246 			   WHEN OTHERS THEN
11247 			      NULL;
11248 			END;
11249 		     ELSIF (( p_source_transaction_date IS NOT NULL) AND (p_source_transaction_date > SYSDATE)) AND
11250 			     p_source_transaction_date <> fnd_api.g_miss_date THEN
11251 			x_return_status := fnd_api.g_ret_sts_error ;
11252 			fnd_message.set_name('CSI', 'CSI_PASS_TXNS_GT_SYS');
11253 			fnd_message.set_token('SOURCE_TXN_DATE',to_char(p_source_transaction_date, 'DD-MON-YYYY HH24:MI:SS'));
11254 			fnd_msg_pub.add;
11255 			RAISE fnd_api.g_exc_error;
11256 		     END IF;
11257 		     p_oks_txn_inst_tbl(J).transfer_date := l_transaction_date;
11258 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11259                      p_oks_txn_inst_tbl(J).TRF := 'Y';
11260 		  ELSIF p_transaction_type = 'UPD' THEN
11261 		     p_oks_txn_inst_tbl(J).new_quantity :=
11262 						  p_oks_txn_inst_tbl(J).old_quantity;
11263 		     p_oks_txn_inst_tbl(J).old_quantity := p_quantity; -- Passed old Qty
11264 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11265                      p_oks_txn_inst_tbl(J).UPD := 'Y';
11266 		     --
11267 		     IF p_txn_type_id is NOT NULL AND
11268 			p_txn_type_id <> FND_API.G_MISS_NUM AND
11269 			p_txn_type_id in (53,54) THEN
11270 			p_oks_txn_inst_tbl(J).return_reason_code := 'RETURN'; -- RMA
11271 		     ELSE
11272 			p_oks_txn_inst_tbl(J).return_reason_code := 'REGULAR';
11273 		     END IF;
11274 		  ELSIF p_transaction_type = 'SPL' THEN
11275 		     OPEN instance_csr (p_new_instance_id);
11276 		     FETCH instance_csr INTO l_new_ins_csr;
11277 		     CLOSE instance_csr;
11278 		     --
11279 		     p_oks_txn_inst_tbl(J).new_customer_product_id := p_new_instance_id;
11280 		     p_oks_txn_inst_tbl(J).new_customer_acct_id :=
11281 						  p_oks_txn_inst_tbl(J).old_customer_acct_id;
11282 		     p_oks_txn_inst_tbl(J).new_inventory_item_id :=
11283 						  p_oks_txn_inst_tbl(J).old_inventory_item_id;
11284 		     p_oks_txn_inst_tbl(J).new_unit_of_measure :=
11285 						  p_oks_txn_inst_tbl(J).old_unit_of_measure;
11286 		     p_oks_txn_inst_tbl(J).new_quantity := l_new_ins_csr.quantity;
11287 		     p_oks_txn_inst_tbl(J).old_quantity := p_quantity; -- Passed old Qty
11288 		     p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11289                      p_oks_txn_inst_tbl(J).SPL := 'Y';
11290 		  ELSIF p_transaction_type = 'RPL' THEN
11291 		     OPEN instance_csr (p_new_instance_id);
11292 		     FETCH instance_csr INTO l_new_instance_csr;
11293 		     CLOSE instance_csr;
11294 		     --
11295 		     IF l_new_instance_csr.owner_party_id IS NOT NULL AND
11296 			l_new_instance_csr.owner_party_id <> l_internal_party_id AND
11297 			l_new_instance_csr.owner_party_source_table = 'HZ_PARTIES' THEN
11298 			l_call_contracts  := TRUE;
11299 			p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id := p_new_instance_id;
11300 			p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity  := l_new_instance_csr.quantity;
11301 			p_oks_txn_inst_tbl(l_oks_txn_count).new_unit_of_measure :=
11302 						    l_new_instance_csr.unit_of_measure;
11303 			p_oks_txn_inst_tbl(l_oks_txn_count).new_inventory_item_id :=
11304 						    l_new_instance_csr.inventory_item_id;
11305 			p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11306                         p_oks_txn_inst_tbl(J).RPL := 'Y';
11307 		     END IF;
11308                   ELSIF p_transaction_type = 'IDC' THEN
11309                      p_oks_txn_inst_tbl(J).IDC := 'Y';
11310                      p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11311                   ELSIF p_transaction_type = 'NEW' THEN
11312                      p_oks_txn_inst_tbl(J).NEW := 'Y';
11313                      p_oks_txn_inst_tbl(J).transaction_date := l_txn_date;
11314 		  END IF;
11315 		  l_exists := 'Y';
11316 		  exit;
11317 	       END IF; -- Instance ID matches
11318 	    END IF; -- row exists check
11319 	 END LOOP;
11320       END IF;
11321       --
11322       IF l_exists = 'N' THEN
11323          csi_gen_utility_pvt.put_line('l_exists is N ...');
11324          l_oks_txn_count := p_oks_txn_inst_tbl.count + 1;
11325          --
11326          p_oks_txn_inst_tbl(l_oks_txn_count).installation_date := l_instance_csr.install_date;
11327          --
11328          IF l_instance_csr.location_type_code = 'IN_TRANSIT' THEN
11329             p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := l_instance_csr.in_transit_order_line_id;
11330          ELSE
11331             p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := l_instance_csr.last_oe_order_line_id;
11332          END IF;
11333          --
11334          l_order_shipped_date := NULL;
11335          l_order_org_id := NULL;
11336          --
11337 	 IF p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id IS NOT NULL THEN
11338 	    Begin
11339 	       select NVL(actual_shipment_date,schedule_ship_date)
11340 		      ,org_id
11341 	       into   l_order_shipped_date,l_order_org_id
11342 	       from   OE_ORDER_LINES_ALL
11343 	       where  line_id = p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id;
11344             Exception  -- Added exception handling for bug 6870487, in case the order line no longer exist in oe_order_lines_all table
11345               When no_data_found Then
11346                 p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := NULL;
11347 	    End;
11348 	 END IF;
11349          --
11350          IF p_oks_txn_inst_tbl(l_oks_txn_count).installation_date IS NULL THEN
11351             p_oks_txn_inst_tbl(l_oks_txn_count).shipped_date := NVL(l_order_shipped_date,l_instance_csr.active_start_date);
11352          ELSE
11353             p_oks_txn_inst_tbl(l_oks_txn_count).shipped_date := NULL;
11354          END IF;
11355          --
11356          p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_product_id := p_instance_id;
11357          p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity          := l_instance_csr.quantity;
11358          p_oks_txn_inst_tbl(l_oks_txn_count).old_unit_of_measure   := l_instance_csr.unit_of_measure;
11359          p_oks_txn_inst_tbl(l_oks_txn_count).old_inventory_item_id := l_instance_csr.inventory_item_id;
11360          p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_acct_id  := l_instance_csr.owner_party_account_id;
11361          --
11362          IF p_transaction_type ='TRM' THEN
11363            csi_gen_utility_pvt.put_line('TRM Transaction Type');
11364          -- p_party_account_id1 will be passed only for TRF
11365          --   p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_acct_id  := p_party_account_id1;
11366             p_oks_txn_inst_tbl(l_oks_txn_count).TRM := 'Y';
11367             -- Modified for bug 5442038
11368 		     IF l_instance_csr.active_end_date IS NULL OR
11369 		        l_instance_csr.active_end_date = fnd_api.g_miss_date
11370 		     THEN
11371 		        p_oks_txn_inst_tbl(l_oks_txn_count).termination_date := l_transaction_date;
11372 		     ELSE
11373                 csi_gen_utility_pvt.put_line('2. Assigning user entered end date');
11374 		        p_oks_txn_inst_tbl(l_oks_txn_count).termination_date := l_instance_csr.active_end_date;
11375 		     END IF;
11376 
11377             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11378          END IF;
11379          --
11380          IF p_transaction_type ='RET' THEN
11381            csi_gen_utility_pvt.put_line('RET Transaction Type');
11382             p_oks_txn_inst_tbl(l_oks_txn_count).RET := 'Y';
11383             p_oks_txn_inst_tbl(l_oks_txn_count).termination_date := l_transaction_date;
11384             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11385          END IF;
11386          --
11387          IF p_transaction_type ='IDC' THEN
11388             csi_gen_utility_pvt.put_line('IDC Transaction Type');
11389             p_oks_txn_inst_tbl(l_oks_txn_count).IDC := 'Y';
11390             p_oks_txn_inst_tbl(l_oks_txn_count).termination_date := l_transaction_date;
11391             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11392          END IF;
11393          --
11394          IF p_transaction_type = 'UPD' THEN
11395             csi_gen_utility_pvt.put_line('UPD Transaction Type');
11396             p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity :=
11397                                           p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity;
11398             p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity := p_quantity; -- Passed old Qty
11399             p_oks_txn_inst_tbl(l_oks_txn_count).UPD := 'Y';
11400             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11401             --
11402             IF p_txn_type_id is NOT NULL AND
11403                p_txn_type_id <> FND_API.G_MISS_NUM AND
11404                p_txn_type_id in (53,54) THEN
11405                p_oks_txn_inst_tbl(l_oks_txn_count).return_reason_code := 'RETURN'; -- RMA
11406             ELSE
11407                p_oks_txn_inst_tbl(l_oks_txn_count).return_reason_code := 'REGULAR';
11408             END IF;
11409          ELSE
11410             p_oks_txn_inst_tbl(l_oks_txn_count).return_reason_code := NULL;
11411          END IF;
11412          --
11413          IF p_transaction_type = 'NEW' THEN
11414             csi_gen_utility_pvt.put_line('NEW Transaction Type');
11415             IF p_call_from_bom_expl = FND_API.G_TRUE THEN
11416                p_oks_txn_inst_tbl(l_oks_txn_count).bom_explosion_flag := 'Y';
11417             ELSE
11418                p_oks_txn_inst_tbl(l_oks_txn_count).bom_explosion_flag := 'N';
11419             END IF;
11420             p_oks_txn_inst_tbl(l_oks_txn_count).NEW := 'Y';
11421             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11422          END IF;
11423          --
11424          IF p_vld_org_id IS NULL OR
11425             p_vld_org_id = FND_API.G_MISS_NUM
11426          THEN
11427             p_oks_txn_inst_tbl(l_oks_txn_count).organization_id := l_instance_csr.last_vld_organization_id; -- Changed from Master Org
11428          ELSE
11429             p_oks_txn_inst_tbl(l_oks_txn_count).organization_id := p_vld_org_id ;
11430          END IF;
11431          -- Added by sk for bug 2190051
11432          IF l_order_org_id IS NOT NULL THEN
11433             p_oks_txn_inst_tbl(l_oks_txn_count).org_id := l_order_org_id;
11434          ELSE
11435             SELECT operating_unit
11436             INTO   p_oks_txn_inst_tbl(l_oks_txn_count).org_id
11437             FROM   org_organization_definitions
11438             WHERE  organization_id = p_oks_txn_inst_tbl(l_oks_txn_count).organization_id ;
11439          END IF;
11440          -- Added by sk for bug 2190051
11441          --
11442          -- Added for ER 3381250
11443          l_rma_line_id := l_instance_csr.last_oe_rma_line_id;
11444          --
11445 	 IF l_rma_line_id IS NOT NULL THEN
11446 	    BEGIN
11447 	       csi_gen_utility_pvt.put_line('Calling package oe_service_credit_grp.get_service_credit_eligible');
11448 	       csi_gen_utility_pvt.put_line('to retreive service_credit_eligible_code for rma line id :'||l_rma_line_id);
11449          --l_sql := 'BEGIN oe_service_credit_grp.get_service_credit_eligible( :l_line_id, :l_service_code); END;';
11450            oe_service_credit_grp.get_service_credit_eligible
11451                 ( p_line_id                 => l_rma_line_id
11452                  ,p_service_credit_eligible => p_oks_txn_inst_tbl(l_oks_txn_count).raise_credit
11453                  );
11454          --   EXECUTE IMMEDIATE l_sql USING IN l_rma_line_id, OUT p_oks_txn_inst_tbl(l_oks_txn_count).raise_credit;
11455 	       csi_gen_utility_pvt.put_line( 'Value of raise_credit is : '||p_oks_txn_inst_tbl(l_oks_txn_count).raise_credit);
11456 	    EXCEPTION
11457 	       WHEN OTHERS THEN
11458 		  csi_gen_utility_pvt.put_line('Into when others exception. ');
11459 		  csi_gen_utility_pvt.put_line( 'Nothing is assigned to raise_credit. ');
11460 	    END;
11461 	 ELSE
11462 	    csi_gen_utility_pvt.put_line('RMA line id is null');
11463 	 END IF;
11464 	 -- End addition for ER 3381250
11465 	 --
11466 	 IF p_transaction_type= 'SPL' THEN
11467 	    csi_gen_utility_pvt.put_line('SPL Transaction Type');
11468 	    OPEN instance_csr (p_new_instance_id);
11469 	    FETCH instance_csr INTO l_new_ins_csr;
11470 	    CLOSE instance_csr;
11471 	    --
11472 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id := p_new_instance_id;
11473 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_acct_id :=
11474 					 p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_acct_id;
11475 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_inventory_item_id :=
11476 					 p_oks_txn_inst_tbl(l_oks_txn_count).old_inventory_item_id;
11477 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_unit_of_measure :=
11478 					 p_oks_txn_inst_tbl(l_oks_txn_count).old_unit_of_measure;
11479 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity := l_new_ins_csr.quantity;
11480 	    p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity := p_quantity; -- Passed old Qty
11481             p_oks_txn_inst_tbl(l_oks_txn_count).SPL := 'Y';
11482             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11483 	 END IF;
11484 	 --
11485 	 IF p_transaction_type = 'TRF' THEN
11486 	   csi_gen_utility_pvt.put_line('TRF Transaction Type');
11487             -- Need to notify contracts with the system_id during 'TRF'.
11488 	    IF p_system_id IS NOT NULL AND
11489 	       p_system_id <> FND_API.G_MISS_NUM THEN
11490 	       p_oks_txn_inst_tbl(l_oks_txn_count).system_id := p_system_id;
11491 	    ELSE
11492 	       p_oks_txn_inst_tbl(l_oks_txn_count).system_id := NULL;
11493 	    END IF;
11494             --
11495 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id :=
11496 				  p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_product_id;
11497 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_inventory_item_id :=
11498 				  p_oks_txn_inst_tbl(l_oks_txn_count).old_inventory_item_id;
11499 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_unit_of_measure :=
11500 				  p_oks_txn_inst_tbl(l_oks_txn_count).old_unit_of_measure;
11501 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity :=
11502 				  p_oks_txn_inst_tbl(l_oks_txn_count).old_quantity;
11503 	    p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_acct_id := p_party_account_id2;
11504 	    p_oks_txn_inst_tbl(l_oks_txn_count).old_customer_acct_id := p_party_account_id1;
11505 	    --
11506 	    -- The following code has been added by sguthiva in order to incorporate the
11507 	    -- changes made by the HTML UI .
11508 	    -- When HTML UI passes a transaction date which should be less than sysdate,
11509 	    -- then before calling contracts we need to make sure that there are no transactions
11510 	    -- between passed date and sysdate.
11511 	    IF (( p_source_transaction_date IS NOT NULL) AND (p_source_transaction_date < SYSDATE)) AND
11512 	          p_source_transaction_date <> fnd_api.g_miss_date THEN
11513 	       l_temp:=NULL;
11514 	       -- srramakr changed to source_transaction_date instead of transaction_date (3804960)
11515 	       BEGIN
11516 		  SELECT 'x'
11517 		  INTO   l_temp
11518 		  FROM   csi_inst_transactions_v
11519 		  WHERE  instance_id=p_instance_id
11520 		  AND    source_transaction_date > p_source_transaction_date
11521 		  AND    transaction_id <> p_transaction_id
11522 		  AND    ROWNUM=1;
11523 		  IF l_temp IS NOT NULL THEN
11524 		     x_return_status := fnd_api.g_ret_sts_error ;
11525 		     fnd_message.set_name('CSI', 'CSI_HAS_TXNS_GT_SYS');
11526 		     fnd_message.set_token('INSTANCE_ID',p_instance_id );
11527 		     fnd_message.set_token('SOURCE_TXN_DATE',to_char(p_source_transaction_date, 'DD-MON-YYYY HH24:MI:SS'));
11528 		     fnd_msg_pub.add;
11529 		     RAISE fnd_api.g_exc_error;
11530 		  END IF;
11531 	       EXCEPTION
11532 		  WHEN fnd_api.g_exc_error THEN
11533 		     RAISE fnd_api.g_exc_error;
11534 		  WHEN OTHERS THEN
11535 		     NULL;
11536 	       END;
11537 	    ELSIF (( p_source_transaction_date IS NOT NULL) AND (p_source_transaction_date > SYSDATE)) AND
11538 		     p_source_transaction_date <> fnd_api.g_miss_date THEN
11539 	       x_return_status := fnd_api.g_ret_sts_error ;
11540 	       fnd_message.set_name('CSI', 'CSI_PASS_TXNS_GT_SYS');
11541 	       fnd_message.set_token('SOURCE_TXN_DATE',to_char(p_source_transaction_date, 'DD-MON-YYYY HH24:MI:SS'));
11542 	       fnd_msg_pub.add;
11543 	       RAISE fnd_api.g_exc_error;
11544 	    END IF;
11545             p_oks_txn_inst_tbl(l_oks_txn_count).transfer_date := l_transaction_date;
11546             p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11547             p_oks_txn_inst_tbl(l_oks_txn_count).TRF := 'Y';
11548 	 -- End changes by sguthiva for HTML
11549          ELSE
11550             p_oks_txn_inst_tbl(l_oks_txn_count).system_id := NULL;
11551          END IF;
11552          --
11553          -- Start addition for 'RPL'
11554          IF p_transaction_type= 'RPL' THEN
11555             csi_gen_utility_pvt.put_line('RPL Transaction Type');
11556             OPEN instance_csr (p_new_instance_id);
11557             FETCH instance_csr INTO l_new_instance_csr;
11558             CLOSE instance_csr;
11559             --
11560             IF l_new_instance_csr.owner_party_id IS NOT NULL AND
11561                l_new_instance_csr.owner_party_id <> l_internal_party_id AND
11562                l_new_instance_csr.owner_party_source_table = 'HZ_PARTIES' THEN
11563                l_call_contracts  := TRUE;
11564                p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id := p_new_instance_id;
11565                p_oks_txn_inst_tbl(l_oks_txn_count).new_quantity        := l_new_instance_csr.quantity;
11566                p_oks_txn_inst_tbl(l_oks_txn_count).new_unit_of_measure := l_new_instance_csr.unit_of_measure;
11567                p_oks_txn_inst_tbl(l_oks_txn_count).new_inventory_item_id := l_new_instance_csr.inventory_item_id;
11568                p_oks_txn_inst_tbl(l_oks_txn_count).RPL := 'Y';
11569                p_oks_txn_inst_tbl(l_oks_txn_count).transaction_date := l_txn_date;
11570 
11571                --Added for bug 6617569--
11572        	       csi_gen_utility_pvt.put_line('Addition of order line id........');
11573                p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := l_new_instance_csr.last_oe_order_line_id;
11574        	       csi_gen_utility_pvt.put_line('New order line id........'||p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id);
11575        	       csi_gen_utility_pvt.put_line('New instance id........'||p_oks_txn_inst_tbl(l_oks_txn_count).new_customer_product_id);
11576 
11577             END IF;
11578          END IF;
11579 	 IF p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id IS NULL THEN
11580 	    p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := okc_api.g_miss_num;
11581 	 END IF;
11582          -- Pass G_MISS order line ID while un-expiring an Instance if there is no change to the line_id.
11583 	 IF p_transaction_type= 'NEW' THEN
11584 	     csi_gen_utility_pvt.put_line('NEW Transaction Type');
11585 	     IF nvl(p_order_line_id,-99999) <> FND_API.G_MISS_NUM THEN
11586 	        p_oks_txn_inst_tbl(l_oks_txn_count).order_line_id := nvl(p_order_line_id,FND_API.G_MISS_NUM);
11587 	     END IF;
11588          END IF;
11589       END IF;
11590    END IF;
11591    --
11592    csi_gen_utility_pvt.put_line('End Call_to_Contracts : '||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
11593 EXCEPTION
11594    WHEN SKIP_CHILD_CONT_PROCESSING THEN
11595       csi_gen_utility_pvt.put_line('End Call_to_Contracts : '||to_char(sysdate,'DD-MON-YYYY HH24:MI:SS'));
11596    WHEN fnd_api.g_exc_error THEN
11597       RAISE fnd_api.g_exc_error;
11598    WHEN OTHERS THEN
11599       FND_MESSAGE.Set_Name('CSI', 'CSI_UNEXP_SQL_ERROR');
11600       FND_MESSAGE.Set_Token('API_NAME', 'Call_to_Contracts');
11601       FND_MESSAGE.Set_Token('SQL_ERROR', sqlerrm);
11602       FND_MSG_PUB.Add;
11603       RAISE fnd_api.g_exc_error;
11604 END Call_to_Contracts;
11605 
11606   PROCEDURE update_txn_status(
11607     px_txn_rec       IN OUT nocopy csi_datastructures_pub.transaction_rec,
11608     x_return_status     OUT nocopy varchar2)
11609   IS
11610     l_return_status    varchar2(1) := fnd_api.g_ret_sts_success;
11611     l_msg_count        number;
11612     l_msg_data         varchar2(2000);
11613   BEGIN
11614 
11615     x_return_status := fnd_api.g_ret_sts_success;
11616 
11617     SELECT object_version_number
11618     INTO   px_txn_rec.object_version_number
11619     FROM   csi_transactions
11620     WHERE  transaction_id = px_txn_rec.transaction_id;
11621 
11622     csi_transactions_pvt.update_transactions(
11623       p_api_version      => 1.0,
11624       p_init_msg_list    => fnd_api.g_true,
11625       p_commit           => fnd_api.g_false,
11626       p_validation_level => fnd_api.g_valid_level_full,
11627       p_transaction_rec  => px_txn_rec,
11628       x_return_status    => l_return_status,
11629       x_msg_count        => l_msg_count,
11630       x_msg_data         => l_msg_data);
11631 
11632     IF l_return_status <> fnd_api.g_ret_sts_success THEN
11633       RAISE fnd_api.g_exc_error;
11634     END IF;
11635 
11636   EXCEPTION
11637     WHEN fnd_api.g_exc_error THEN
11638       x_return_status := fnd_api.g_ret_sts_error;
11639   END update_txn_status;
11640 
11641 
11642 /*------------------------------------------------------*/
11643 /* Procedure name: update_item_instance                 */
11644 /* Description   : procedure used to update an Item     */
11645 /*                 Instance                             */
11646 /*------------------------------------------------------*/
11647 
11648 PROCEDURE Update_Item_Instance(
11649       p_api_version         IN      NUMBER
11650      ,p_commit              IN      VARCHAR2
11651      ,p_init_msg_list       IN      VARCHAR2
11652      ,p_validation_level    IN      NUMBER
11653      ,p_instance_rec        IN OUT  NOCOPY csi_datastructures_pub.instance_rec
11654      ,p_txn_rec             IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
11655      ,x_instance_id_lst        OUT  NOCOPY csi_datastructures_pub.id_tbl
11656      ,x_return_status          OUT  NOCOPY VARCHAR2
11657      ,x_msg_count              OUT  NOCOPY NUMBER
11658      ,x_msg_data               OUT  NOCOPY VARCHAR2
11659      ,p_item_attribute_tbl  IN OUT  NOCOPY csi_item_instance_pvt.item_attribute_tbl
11660      ,p_location_tbl        IN OUT  NOCOPY csi_item_instance_pvt.location_tbl
11661      ,p_generic_id_tbl      IN OUT  NOCOPY csi_item_instance_pvt.generic_id_tbl
11662      ,p_lookup_tbl          IN OUT  NOCOPY csi_item_instance_pvt.lookup_tbl
11663      ,p_ins_count_rec       IN OUT  NOCOPY csi_item_instance_pvt.ins_count_rec
11664      ,p_called_from_rel     IN      VARCHAR2
11665      ,p_validation_mode     IN      VARCHAR2
11666      ,p_oks_txn_inst_tbl    IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
11667      ,p_child_inst_tbl      IN OUT NOCOPY csi_item_instance_grp.child_inst_tbl
11668  )
11669 IS
11670     l_api_name               CONSTANT VARCHAR2(30)   := 'UPDATE_ITEM_INSTANCE';
11671     l_api_version            CONSTANT NUMBER         := 1.0;
11672     l_debug_level            NUMBER;
11673     l_instance_id            NUMBER;
11674     l_mod_curr_instance_rec  csi_datastructures_pub.instance_rec;
11675     l_party_tbl              csi_datastructures_pub.party_tbl;
11676     l_asset_tbl              csi_datastructures_pub.instance_asset_rec;
11677     l_dummy                  VARCHAR2(1);
11678     l_instance_rec           csi_datastructures_pub.instance_rec;
11679     l_get_instance_rec       csi_datastructures_pub.instance_rec;
11680     l_check_instance_rec     csi_datastructures_pub.instance_rec;
11681     l_version_label_rec      csi_datastructures_pub.version_label_rec;
11682     l_object_version_number  NUMBER;
11683     l_return_value           BOOLEAN;
11684     l_csi_item_instance_h_id NUMBER;
11685     l_full_dump_frequency    NUMBER;
11686     l_owner                  NUMBER;
11687     l_owner_count            NUMBER := 0;
11688     l_org_id                 NUMBER;
11689     l_inv_org_id             NUMBER;
11690     l_int_party_id           NUMBER;
11691     l_serial_control         NUMBER;
11692     l_lot_control            NUMBER;
11693     l_shelf_life_code        NUMBER;
11694     l_mod_value              NUMBER;
11695     l_dump_flag              VARCHAR2(1);
11696     l_msg_index              NUMBER;
11697     l_msg_count              NUMBER;
11698     l_msg_dummy              NUMBER;
11699     l_party_rec              csi_datastructures_pub.party_rec;
11700     l_party_owner_rec        csi_datastructures_pub.party_rec;
11701     l_location_type_code     VARCHAR2(20);
11702     l_location_id            NUMBER;
11703     l_inv_organization_id    NUMBER;
11704     l_inv_subinventory_name  VARCHAR2(10);
11705     l_inv_locator_id         NUMBER;
11706     l_pa_project_id          NUMBER;
11707     l_pa_project_task_id     NUMBER;
11708     l_in_tran_order_line_id  NUMBER;
11709     l_wip_job_id             NUMBER;
11710     l_po_order_line_id       NUMBER;
11711     l_acct_class_code        VARCHAR2(10);
11712     l_sys_date               DATE := SYSDATE;
11713     l_last_vld_organization_id NUMBER;
11714     l_trackable_flag         VARCHAR2(1);
11715     l_uom_code               VARCHAR2(3);
11716     l_rev_control            NUMBER;
11717     l_exists_flag            VARCHAR2(1);
11718     l_valid_flag             VARCHAR2(1);
11719     l_ctr_grp_id_template    NUMBER;
11720     l_ctr_grp_id_instance    NUMBER;
11721     l_ctr_id_template        csi_counter_template_pub.ctr_template_autoinst_tbl;
11722     l_ctr_id_instance        csi_counter_template_pub.counter_autoinstantiate_tbl;
11723     l_base_item_id           NUMBER;
11724     l_ctr_association_id     NUMBER;
11725     l_association_type       VARCHAR2(30) := 'PROD_ITEM';
11726 --    l_desc_flex              CS_COUNTERS_EXT_PVT.DFF_Rec_Type;
11727 -- Counter ref r12 changes
11728     l_desc_flex              CSI_CTR_DATASTRUCTURES_PUB.DFF_REC_TYPE;
11729     l_delete_status          VARCHAR2(1);
11730     l_exists                 VARCHAR2(1);
11731     l_instance_hist_rec      csi_datastructures_pub.instance_history_rec;
11732     l_prior_txn_id           NUMBER;
11733     l_oe_line_id             NUMBER;
11734     l_install_date           DATE;
11735     l_current_val            NUMBER;
11736     l_txn_status             varchar2(10) := 'COMPLETE';
11737     l_part_or_serial_change  BOOLEAN := FALSE;   --6176621
11738     l_number_open_ro         NUMBER;
11739     --
11740     l_mtl_txn_tbl            CSI_DATASTRUCTURES_PUB.MTL_TXN_TBL;  -- Added for the bug 6875664, base bug 6531599
11741 
11742      -- Added variables for FP bug 8551918
11743     l_exp_rltns_rec             csi_datastructures_pub.ii_relationship_rec;
11744     l_instance_id_lst           csi_datastructures_pub.id_tbl;
11745     l_msg_data                  VARCHAR2(2000);
11746 
11747 	l_transaction_type_id NUMBER := 0;
11748 	l_serial_tagged NUMBER := 1;
11749 
11750     l_shippable_item_flag VARCHAR2(1);  --Bug 13887020
11751     l_shipped_date DATE;  --Bug 13887020
11752     l_allow_earlier_installdt_flag   VARCHAR2(1); --Bug 13887020
11753 
11754     CURSOR CTR_GROUP(p_src_object_id IN NUMBER) IS
11755     SELECT  group_id,
11756             associated_to_group, --Added for bug 9142776
11757 	    COUNTER_ID		--Added for bug 9142776
11758       FROM  csi_ctr_item_associations
11759      WHERE  inventory_item_id = p_src_object_id;
11760 
11761     CURSOR party_owner_rec (p_instance_id NUMBER) is
11762             SELECT
11763                  INSTANCE_PARTY_ID,
11764                  INSTANCE_ID,
11765                  PARTY_SOURCE_TABLE,
11766                  PARTY_ID,
11767                  RELATIONSHIP_TYPE_CODE,
11768                  CONTACT_FLAG,
11769                  CONTACT_IP_ID,
11770                  ACTIVE_START_DATE,
11771                  ACTIVE_END_DATE,
11772                  CONTEXT,
11773                  ATTRIBUTE1,
11774                  ATTRIBUTE2,
11775                  ATTRIBUTE3,
11776                  ATTRIBUTE4,
11777                  ATTRIBUTE5,
11778                  ATTRIBUTE6,
11779                  ATTRIBUTE7,
11780                  ATTRIBUTE8,
11781                  ATTRIBUTE9,
11782                  ATTRIBUTE10,
11783                  ATTRIBUTE11,
11784                  ATTRIBUTE12,
11785                  ATTRIBUTE13,
11786                  ATTRIBUTE14,
11787                  ATTRIBUTE15,
11788                  OBJECT_VERSION_NUMBER,
11789                  PRIMARY_FLAG,
11790                  PREFERRED_FLAG,
11791                  NULL PARENT_TBL_INDEX,
11792                  --NULL PROCESSED_FLAG,
11793                  NULL CALL_CONTRACTS,
11794                  NULL INTERFACE_ID,
11795                  NULL CONTACT_PARENT_TBL_INDEX,
11796                  NULL CASCADE_OWNERSHIP_FLAG -- Added for bug 2972082
11797           FROM   csi_i_parties
11798           WHERE  instance_id = p_instance_id
11799           AND    relationship_type_code = 'OWNER';
11800 
11801 
11802     CURSOR curr_instance_rec(p_instance_id IN NUMBER)  IS
11803            SELECT
11804                  INSTANCE_ID,
11805                  INSTANCE_NUMBER,
11806                  EXTERNAL_REFERENCE,
11807                  INVENTORY_ITEM_ID,
11808                  NULL VLD_ORGANIZATION_ID,
11809                  INVENTORY_REVISION,
11810                  INV_MASTER_ORGANIZATION_ID,
11811                  SERIAL_NUMBER,
11812                  MFG_SERIAL_NUMBER_FLAG,
11813                  LOT_NUMBER,
11814                  QUANTITY,
11815                  UNIT_OF_MEASURE,
11816                  ACCOUNTING_CLASS_CODE,
11817                  INSTANCE_CONDITION_ID,
11818                  INSTANCE_STATUS_ID,
11819                  CUSTOMER_VIEW_FLAG,
11820                  MERCHANT_VIEW_FLAG,
11821                  SELLABLE_FLAG,
11822                  SYSTEM_ID,
11823                  INSTANCE_TYPE_CODE,
11824                  ACTIVE_START_DATE,
11825                  ACTIVE_END_DATE,
11826                  LOCATION_TYPE_CODE,
11827                  LOCATION_ID,
11828                  INV_ORGANIZATION_ID,
11829                  INV_SUBINVENTORY_NAME,
11830                  INV_LOCATOR_ID,
11831                  PA_PROJECT_ID,
11832                  PA_PROJECT_TASK_ID,
11833                  IN_TRANSIT_ORDER_LINE_ID,
11834                  WIP_JOB_ID,
11835                  PO_ORDER_LINE_ID,
11836                  LAST_OE_ORDER_LINE_ID,
11837                  LAST_OE_RMA_LINE_ID,
11838                  LAST_PO_PO_LINE_ID,
11839                  LAST_OE_PO_NUMBER,
11840                  LAST_WIP_JOB_ID,
11841                  LAST_PA_PROJECT_ID,
11842                  LAST_PA_TASK_ID,
11843                  LAST_OE_AGREEMENT_ID,
11844                  INSTALL_DATE,
11845                  MANUALLY_CREATED_FLAG,
11846                  RETURN_BY_DATE,
11847                  ACTUAL_RETURN_DATE,
11848                  CREATION_COMPLETE_FLAG,
11849                  COMPLETENESS_FLAG,
11850                  NULL VERSION_LABEL,
11851                  NULL VERSION_LABEL_DESCRIPTION,
11852                  CONTEXT,
11853                  ATTRIBUTE1,
11854                  ATTRIBUTE2,
11855                  ATTRIBUTE3,
11856                  ATTRIBUTE4,
11857                  ATTRIBUTE5,
11858                  ATTRIBUTE6,
11859                  ATTRIBUTE7,
11860                  ATTRIBUTE8,
11861                  ATTRIBUTE9,
11862                  ATTRIBUTE10,
11863                  ATTRIBUTE11,
11864                  ATTRIBUTE12,
11865                  ATTRIBUTE13,
11866                  ATTRIBUTE14,
11867                  ATTRIBUTE15,
11868                  OBJECT_VERSION_NUMBER,
11869                  LAST_TXN_LINE_DETAIL_ID,
11870                  INSTALL_LOCATION_TYPE_CODE,
11871                  INSTALL_LOCATION_ID,
11872                  INSTANCE_USAGE_CODE,
11873                  LAST_VLD_ORGANIZATION_ID,
11874                  CONFIG_INST_HDR_ID,
11875                  CONFIG_INST_ITEM_ID,
11876                  CONFIG_INST_REV_NUM,
11877                  CONFIG_VALID_STATUS,
11878                  INSTANCE_DESCRIPTION,
11879                  -- Added for eam integration
11880                  NETWORK_ASSET_FLAG,
11881                  MAINTAINABLE_FLAG,
11882                  PN_LOCATION_ID,
11883                  ASSET_CRITICALITY_CODE,
11884                  CATEGORY_ID,
11885                  EQUIPMENT_GEN_OBJECT_ID,
11886                  INSTANTIATION_FLAG,
11887                  LINEAR_LOCATION_ID,
11888                  OPERATIONAL_LOG_FLAG,
11889                  CHECKIN_STATUS,
11890                  SUPPLIER_WARRANTY_EXP_DATE,
11891                  ATTRIBUTE16,
11892                  ATTRIBUTE17,
11893                  ATTRIBUTE18,
11894                  ATTRIBUTE19,
11895                  ATTRIBUTE20,
11896                  ATTRIBUTE21,
11897                  ATTRIBUTE22,
11898                  ATTRIBUTE23,
11899                  ATTRIBUTE24,
11900                  ATTRIBUTE25,
11901                  ATTRIBUTE26,
11902                  ATTRIBUTE27,
11903                  ATTRIBUTE28,
11904                  ATTRIBUTE29,
11905                  ATTRIBUTE30,
11906                -- End addition for eam integration
11907                -- Addition of columns for FA Integration
11908                  PURCHASE_UNIT_PRICE,
11909                  PURCHASE_CURRENCY_CODE,
11910                  PAYABLES_UNIT_PRICE,
11911                  PAYABLES_CURRENCY_CODE,
11912                  SALES_UNIT_PRICE,
11913                  SALES_CURRENCY_CODE,
11914                  OPERATIONAL_STATUS_CODE,
11915                -- End addition of columns for FA Integration
11916                  SOURCE_CODE -- Added Code for Siebel Genesis Project
11917            FROM  csi_item_instances
11918            WHERE instance_id = p_instance_id
11919            FOR UPDATE OF OBJECT_VERSION_NUMBER ;
11920            l_curr_instance_rec  curr_instance_rec%ROWTYPE;
11921 
11922       CURSOR cur_instance_rec(p_instance_id IN NUMBER)  IS
11923            SELECT   last_vld_organization_id
11924            FROM     csi_item_instances
11925            WHERE    instance_id = p_instance_id;
11926 
11927            l_cur_instance_rec   cur_instance_rec%ROWTYPE;
11928 
11929       CURSOR ins_hist_csr(p_instance_history_id NUMBER) IS
11930              SELECT  INSTANCE_HISTORY_ID
11931                     ,INSTANCE_ID
11932                     ,TRANSACTION_ID
11933                     ,OLD_INSTANCE_NUMBER
11934                     ,NEW_INSTANCE_NUMBER
11935                     ,OLD_EXTERNAL_REFERENCE
11936                     ,NEW_EXTERNAL_REFERENCE
11937                     ,OLD_INVENTORY_ITEM_ID
11938                     ,NEW_INVENTORY_ITEM_ID
11939                     ,OLD_INVENTORY_REVISION
11940                     ,NEW_INVENTORY_REVISION
11941                     ,OLD_INV_MASTER_ORGANIZATION_ID
11942                     ,NEW_INV_MASTER_ORGANIZATION_ID
11943                     ,OLD_SERIAL_NUMBER
11944                     ,NEW_SERIAL_NUMBER
11945                     ,OLD_MFG_SERIAL_NUMBER_FLAG
11946                     ,NEW_MFG_SERIAL_NUMBER_FLAG
11947                     ,OLD_LOT_NUMBER
11948                     ,NEW_LOT_NUMBER
11949                     ,OLD_QUANTITY
11950                     ,NEW_QUANTITY
11951                     ,OLD_UNIT_OF_MEASURE
11952                     ,NEW_UNIT_OF_MEASURE
11953                     ,OLD_ACCOUNTING_CLASS_CODE
11954                     ,NEW_ACCOUNTING_CLASS_CODE
11955                     ,OLD_INSTANCE_CONDITION_ID
11956                     ,NEW_INSTANCE_CONDITION_ID
11957                     ,OLD_INSTANCE_STATUS_ID
11958                     ,NEW_INSTANCE_STATUS_ID
11959                     ,OLD_CUSTOMER_VIEW_FLAG
11960                     ,NEW_CUSTOMER_VIEW_FLAG
11961                     ,OLD_MERCHANT_VIEW_FLAG
11962                     ,NEW_MERCHANT_VIEW_FLAG
11963                     ,OLD_SELLABLE_FLAG
11964                     ,NEW_SELLABLE_FLAG
11965                     ,OLD_SYSTEM_ID
11966                     ,NEW_SYSTEM_ID
11967                     ,OLD_INSTANCE_TYPE_CODE
11968                     ,NEW_INSTANCE_TYPE_CODE
11969                     ,OLD_ACTIVE_START_DATE
11970                     ,NEW_ACTIVE_START_DATE
11971                     ,OLD_ACTIVE_END_DATE
11972                     ,NEW_ACTIVE_END_DATE
11973                     ,OLD_LOCATION_TYPE_CODE
11974                     ,NEW_LOCATION_TYPE_CODE
11975                     ,OLD_LOCATION_ID
11976                     ,NEW_LOCATION_ID
11977                     ,OLD_INV_ORGANIZATION_ID
11978                     ,NEW_INV_ORGANIZATION_ID
11979                     ,OLD_INV_SUBINVENTORY_NAME
11980                     ,NEW_INV_SUBINVENTORY_NAME
11981                     ,OLD_INV_LOCATOR_ID
11982                     ,NEW_INV_LOCATOR_ID
11983                     ,OLD_PA_PROJECT_ID
11984                     ,NEW_PA_PROJECT_ID
11985                     ,OLD_PA_PROJECT_TASK_ID
11986                     ,NEW_PA_PROJECT_TASK_ID
11987                     ,OLD_IN_TRANSIT_ORDER_LINE_ID
11988                     ,NEW_IN_TRANSIT_ORDER_LINE_ID
11989                     ,OLD_WIP_JOB_ID
11990                     ,NEW_WIP_JOB_ID
11991                     ,OLD_PO_ORDER_LINE_ID
11992                     ,NEW_PO_ORDER_LINE_ID
11993                     ,OLD_COMPLETENESS_FLAG
11994                     ,NEW_COMPLETENESS_FLAG
11995                     ,OLD_CONTEXT
11996                     ,NEW_CONTEXT
11997                     ,OLD_ATTRIBUTE1
11998                     ,NEW_ATTRIBUTE1
11999                     ,OLD_ATTRIBUTE2
12000                     ,NEW_ATTRIBUTE2
12001                     ,OLD_ATTRIBUTE3
12002                     ,NEW_ATTRIBUTE3
12003                     ,OLD_ATTRIBUTE4
12004                     ,NEW_ATTRIBUTE4
12005                     ,OLD_ATTRIBUTE5
12006                     ,NEW_ATTRIBUTE5
12007                     ,OLD_ATTRIBUTE6
12008                     ,NEW_ATTRIBUTE6
12009                     ,OLD_ATTRIBUTE7
12010                     ,NEW_ATTRIBUTE7
12011                     ,OLD_ATTRIBUTE8
12012                     ,NEW_ATTRIBUTE8
12013                     ,OLD_ATTRIBUTE9
12014                     ,NEW_ATTRIBUTE9
12015                     ,OLD_ATTRIBUTE10
12016                     ,NEW_ATTRIBUTE10
12017                     ,OLD_ATTRIBUTE11
12018                     ,NEW_ATTRIBUTE11
12019                     ,OLD_ATTRIBUTE12
12020                     ,NEW_ATTRIBUTE12
12021                     ,OLD_ATTRIBUTE13
12022                     ,NEW_ATTRIBUTE13
12023                     ,OLD_ATTRIBUTE14
12024                     ,NEW_ATTRIBUTE14
12025                     ,OLD_ATTRIBUTE15
12026                     ,NEW_ATTRIBUTE15
12027                     ,FULL_DUMP_FLAG
12028                     ,OLD_INST_LOC_TYPE_CODE
12029                     ,NEW_INST_LOC_TYPE_CODE
12030                     ,OLD_INST_LOC_ID
12031                     ,NEW_INST_LOC_ID
12032                     ,OLD_INST_USAGE_CODE
12033                     ,NEW_INST_USAGE_CODE
12034                     ,OLD_LAST_VLD_ORGANIZATION_ID
12035                     ,NEW_LAST_VLD_ORGANIZATION_ID
12036                     ,OLD_CONFIG_INST_REV_NUM
12037                     ,NEW_CONFIG_INST_REV_NUM
12038                     ,OLD_CONFIG_VALID_STATUS
12039                     ,NEW_CONFIG_VALID_STATUS
12040                     ,OLD_INSTANCE_DESCRIPTION
12041                     ,NEW_INSTANCE_DESCRIPTION
12042                     ,OLD_INSTALL_DATE
12043                     ,NEW_INSTALL_DATE
12044                     ,OLD_RETURN_BY_DATE
12045                     ,NEW_RETURN_BY_DATE
12046                     ,OLD_ACTUAL_RETURN_DATE
12047                     ,NEW_ACTUAL_RETURN_DATE
12048                     ,OLD_OE_AGREEMENT_ID
12049                     ,NEW_OE_AGREEMENT_ID
12050                     ,OLD_LAST_OE_ORDER_LINE_ID
12051                     ,NEW_LAST_OE_ORDER_LINE_ID
12052                     ,OLD_LAST_OE_RMA_LINE_ID
12053                     ,NEW_LAST_OE_RMA_LINE_ID
12054                     ,OLD_LAST_WIP_JOB_ID
12055                     ,NEW_LAST_WIP_JOB_ID
12056                     ,OLD_LAST_PO_PO_LINE_ID
12057                     ,NEW_LAST_PO_PO_LINE_ID
12058                     ,OLD_LAST_PA_PROJECT_ID
12059                     ,NEW_LAST_PA_PROJECT_ID
12060                     ,OLD_LAST_PA_TASK_ID
12061                     ,NEW_LAST_PA_TASK_ID
12062                     ,OLD_LAST_TXN_LINE_DETAIL_ID
12063                     ,NEW_LAST_TXN_LINE_DETAIL_ID
12064                     ,OLD_LAST_OE_PO_NUMBER
12065                     ,NEW_LAST_OE_PO_NUMBER
12066 		    --start of column addition for eam integration--
12067                     ,OLD_NETWORK_ASSET_FLAG
12068                     ,NEW_NETWORK_ASSET_FLAG
12069                     ,OLD_MAINTAINABLE_FLAG
12070                     ,NEW_MAINTAINABLE_FLAG
12071                     ,OLD_PN_LOCATION_ID
12072                     ,NEW_PN_LOCATION_ID
12073                     ,OLD_ASSET_CRITICALITY_CODE
12074                     ,NEW_ASSET_CRITICALITY_CODE
12075                     ,OLD_CATEGORY_ID
12076                     ,NEW_CATEGORY_ID
12077                     ,OLD_EQUIPMENT_GEN_OBJECT_ID
12078                     ,NEW_EQUIPMENT_GEN_OBJECT_ID
12079                     ,OLD_INSTANTIATION_FLAG
12080                     ,NEW_INSTANTIATION_FLAG
12081                     ,OLD_LINEAR_LOCATION_ID
12082                     ,NEW_LINEAR_LOCATION_ID
12083                     ,OLD_OPERATIONAL_LOG_FLAG
12084                     ,NEW_OPERATIONAL_LOG_FLAG
12085                     ,OLD_CHECKIN_STATUS
12086                     ,NEW_CHECKIN_STATUS
12087                     ,OLD_SUPPLIER_WARRANTY_EXP_DATE
12088                     ,NEW_SUPPLIER_WARRANTY_EXP_DATE
12089                     ,OLD_ATTRIBUTE16
12090                     ,NEW_ATTRIBUTE16
12091                     ,OLD_ATTRIBUTE17
12092                     ,NEW_ATTRIBUTE17
12093                     ,OLD_ATTRIBUTE18
12094                     ,NEW_ATTRIBUTE18
12095                     ,OLD_ATTRIBUTE19
12096                     ,NEW_ATTRIBUTE19
12097                     ,OLD_ATTRIBUTE20
12098                     ,NEW_ATTRIBUTE20
12099                     ,OLD_ATTRIBUTE21
12100                     ,NEW_ATTRIBUTE21
12101                     ,OLD_ATTRIBUTE22
12102                     ,NEW_ATTRIBUTE22
12103                     ,OLD_ATTRIBUTE23
12104                     ,NEW_ATTRIBUTE23
12105                     ,OLD_ATTRIBUTE24
12106                     ,NEW_ATTRIBUTE24
12107                     ,OLD_ATTRIBUTE25
12108                     ,NEW_ATTRIBUTE25
12109                     ,OLD_ATTRIBUTE26
12110                     ,NEW_ATTRIBUTE26
12111                     ,OLD_ATTRIBUTE27
12112                     ,NEW_ATTRIBUTE27
12113                     ,OLD_ATTRIBUTE28
12114                     ,NEW_ATTRIBUTE28
12115                     ,OLD_ATTRIBUTE29
12116                     ,NEW_ATTRIBUTE29
12117                     ,OLD_ATTRIBUTE30
12118                     ,NEW_ATTRIBUTE30
12119 		    --end of column addition for eam integration--
12120             -- Addition of columns for FA Integration
12121                     ,OLD_PAYABLES_UNIT_PRICE
12122                     ,NEW_PAYABLES_UNIT_PRICE
12123                     ,OLD_PAYABLES_CURRENCY_CODE
12124                     ,NEW_PAYABLES_CURRENCY_CODE
12125                     ,OLD_PURCHASE_UNIT_PRICE
12126                     ,NEW_PURCHASE_UNIT_PRICE
12127                     ,OLD_PURCHASE_CURRENCY_CODE
12128                     ,NEW_PURCHASE_CURRENCY_CODE
12129                     ,OLD_SALES_UNIT_PRICE
12130                     ,NEW_SALES_UNIT_PRICE
12131                     ,OLD_SALES_CURRENCY_CODE
12132                     ,NEW_SALES_CURRENCY_CODE
12133                     ,OLD_OPERATIONAL_STATUS_CODE
12134                     ,NEW_OPERATIONAL_STATUS_CODE
12135              -- End addition of columns for FA Integration
12136                     -- Begin Add Code for Siebel Genesis Project
12137                     ,OLD_SOURCE_CODE
12138                     ,NEW_SOURCE_CODE
12139                     -- End Add Code for Siebel Genesis Project
12140              FROM   csi_item_instances_h
12141              WHERE  instance_history_id = p_instance_history_id
12142              FOR UPDATE OF OBJECT_VERSION_NUMBER ;
12143 
12144 
12145       CURSOR upd_ctr_assn_csr(p_source_object_id NUMBER) IS
12146              SELECT  instance_association_id
12147                     ,source_object_id
12148                     ,counter_id
12149                     ,object_version_number
12150                     ,start_date_active --Add for bug 6963602
12151                FROM csi_counter_associations
12152               WHERE source_object_id = p_source_object_id
12153                 AND source_object_code = 'CP';
12154 
12155       -- Added cursor for bug 8516781, FP bug 8551918
12156       CURSOR relationship_csr (p_subject_id IN NUMBER) IS
12157              SELECT relationship_id,object_version_number
12158              FROM csi_ii_relationships
12159              WHERE (subject_id = p_subject_id
12160              or    object_id = p_subject_id)    -- added bug 8661671
12161 			 AND   (active_end_date IS NULL OR active_end_date > SYSDATE); --Bug 9207673 FP Bug 9287115
12162 
12163 
12164 l_ins_hist_id            NUMBER;
12165 l_ins_hist_csr           ins_hist_csr%ROWTYPE;
12166 l_temp_rec               VARCHAR2(1);
12167 l_temp_rec1              VARCHAR2(1);
12168 l_open_service           VARCHAR2(1);
12169 l_config_key             csi_utility_grp.config_instance_key;
12170 l_config_valid_status    VARCHAR2(10);
12171 l_return_status          VARCHAR2(10);
12172 l_return_message         VARCHAR2(100);
12173 l_component_ins_type     VARCHAR2(1):=NULL;
12174 l_config_hdr_id          NUMBER;
12175 l_config_rev_nbr         NUMBER;
12176 l_original_status_id     NUMBER;
12177 l_original_system_id     NUMBER;
12178 l_orig_install_date      DATE;
12179 l_unexpire               VARCHAR2(1);
12180 l_ins_flag               VARCHAR2(1);
12181 l_temp                   VARCHAR2(1);
12182 l_eam_item               BOOLEAN := FALSE;
12183 l_eam_item_type          NUMBER;
12184 l_instance_history_id    NUMBER;
12185 l_maintenance_object_type NUMBER:=3;
12186 l_reason_failed          VARCHAR2(30);
12187 l_token                  VARCHAR2(30);
12188 l_lock_status            NUMBER;
12189 l_counter_group_id       NUMBER :=0;
12190 l_ctr_item_associations_rec csi_ctr_datastructures_pub.ctr_item_associations_rec;
12191 l_valid                  BOOLEAN     := TRUE;
12192 l_creation_flag          VARCHAR2(1);
12193 l_gen_object_id          NUMBER;
12194 l_ctr_associations_tbl   csi_ctr_datastructures_pub.counter_associations_tbl;
12195 l_ctr                    NUMBER;
12196 l_curr_maint_org_id      NUMBER;
12197 l_latest_maint_org_id    NUMBER;
12198 l_equipment_type         NUMBER;
12199 l_network_asset_flag     VARCHAR2(1);
12200 l_pn_location_id         NUMBER;
12201 
12202 l_wip_loc_chgd BOOLEAN := FALSE; --bug9553621
12203 
12204 BEGIN
12205    -- Standard Start of API savepoint
12206       IF FND_API.To_Boolean( p_commit )
12207       THEN
12208          SAVEPOINT  update_item_instance_pvt;
12209       END IF;
12210 
12211    -- Standard call to check for call compatibility.
12212       IF NOT FND_API.Compatible_API_Call (l_api_version,
12213                                           p_api_version,
12214                                           l_api_name   ,
12215                                           G_PKG_NAME    )
12216       THEN
12217             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
12218       END IF;
12219 
12220    -- Initialize message list if p_init_msg_list is set to TRUE.
12221        IF FND_API.to_Boolean( p_init_msg_list ) THEN
12222              FND_MSG_PUB.initialize;
12223        END IF;
12224 
12225    -- Initialize API return status to success
12226        x_return_status := FND_API.G_RET_STS_SUCCESS;
12227         -- Check the profile option debug_level for debug message reporting
12228         l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
12229         -- If debug_level = 1 then dump the procedure name
12230         IF (l_debug_level > 0) THEN
12231             csi_gen_utility_pvt.put_line ( 'update_item_instance_pvt');
12232         END IF;
12233         -- If the debug level = 2 then dump all the parameters values.
12234 
12235         IF (l_debug_level > 1) THEN
12236              csi_gen_utility_pvt.put_line ( 'update_item_instance_pvt:'     ||
12237                                                  p_api_version         ||'-'||
12238                                                  p_commit              ||'-'||
12239                                                  p_init_msg_list            );
12240 
12241        --dump the records in a log file
12242              csi_gen_utility_pvt.dump_instance_rec(p_instance_rec);
12243              csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
12244         END IF;
12245       -- Start API body
12246       --
12247       -- Initialize the Instance count
12248       --
12249       If p_ins_count_rec.inv_count is NULL OR
12250          p_ins_count_rec.inv_count = FND_API.G_MISS_NUM THEN
12251          p_ins_count_rec.inv_count := 0;
12252       End if;
12253       --
12254       If p_ins_count_rec.generic_count is NULL OR
12255          p_ins_count_rec.generic_count = FND_API.G_MISS_NUM THEN
12256          p_ins_count_rec.generic_count := 0;
12257       End if;
12258       --
12259       If p_ins_count_rec.location_count is NULL OR
12260          p_ins_count_rec.location_count = FND_API.G_MISS_NUM THEN
12261          p_ins_count_rec.location_count := 0;
12262       End if;
12263       --
12264       If p_ins_count_rec.lookup_count is NULL OR
12265          p_ins_count_rec.lookup_count = FND_API.G_MISS_NUM THEN
12266          p_ins_count_rec.lookup_count := 0;
12267       End if;
12268       --
12269       -- check if the object_version_number passed matches with the one
12270       -- in the database else raise error
12271         OPEN curr_instance_rec(p_instance_rec.INSTANCE_ID);
12272             FETCH curr_instance_rec INTO l_curr_instance_rec;
12273                 IF  (l_curr_instance_rec.object_version_number <> nvl(p_instance_rec.OBJECT_VERSION_NUMBER,0)) THEN
12274                         FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
12275                         FND_MSG_PUB.ADD;
12276                         RAISE FND_API.G_EXC_ERROR;
12277                 END IF;
12278         CLOSE curr_instance_rec;
12279 
12280 /* Fix for bug 4632441 : Here g_miss and null values for eam_columns are flip-flopped
12281    since EAM API treats g_miss and null value differently compared to CSI API */
12282      IF p_instance_rec.department_id = FND_API.G_MISS_NUM THEN
12283         p_instance_rec.department_id := NULL;
12284      ELSIF p_instance_rec.department_id IS  NULL THEN
12285         p_instance_rec.department_id := FND_API.G_MISS_NUM;
12286      END IF;
12287 
12288     IF p_instance_rec.wip_accounting_class = FND_API.G_MISS_CHAR THEN
12289        p_instance_rec.wip_accounting_class := NULL;
12290     ELSIF p_instance_rec.wip_accounting_class IS  NULL THEN
12291        p_instance_rec.wip_accounting_class := FND_API.G_MISS_CHAR;
12292     END IF;
12293 
12294     IF p_instance_rec.area_id = FND_API.G_MISS_NUM THEN
12295        p_instance_rec.area_id := NULL;
12296     ELSIF p_instance_rec.area_id IS  NULL THEN
12297        p_instance_rec.area_id := FND_API.G_MISS_NUM;
12298     END IF;
12299 
12300 
12301 
12302 
12303     --Added for MACD lock functionality
12304     IF p_instance_rec.instance_id IS NOT NULL AND
12305        p_instance_rec.instance_id <> fnd_api.g_miss_num
12306     THEN
12307       csi_item_instance_pvt.get_instance_lock_status
12308       ( p_instance_id  => p_instance_rec.instance_id ,
12309         p_lock_status  => l_lock_status
12310       );
12311        IF (p_txn_rec.transaction_type_id = 401 AND
12312            (l_lock_status = 1 OR p_called_from_rel = fnd_api.g_true)) OR
12313           (l_lock_status = 0)
12314        THEN
12315           NULL;
12316        ELSE
12317         FND_MESSAGE.SET_NAME('CSI','CSI_INSTANCE_LOCKED');
12318         FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_instance_rec.instance_id);
12319         FND_MSG_PUB.ADD;
12320         RAISE FND_API.G_EXC_ERROR;
12321        END IF;
12322     END IF;
12323     -- End addition for MACD lock functionality
12324 
12325         OPEN  cur_instance_rec(p_instance_rec.INSTANCE_ID);
12326         FETCH cur_instance_rec INTO l_cur_instance_rec;
12327         CLOSE cur_instance_rec;
12328 
12329          l_mod_curr_instance_rec.INSTANCE_ID  :=  l_curr_instance_rec.INSTANCE_ID;
12330          l_mod_curr_instance_rec.INSTANCE_NUMBER     :=  l_curr_instance_rec.INSTANCE_NUMBER;
12331          l_mod_curr_instance_rec.EXTERNAL_REFERENCE  := l_curr_instance_rec.EXTERNAL_REFERENCE            ;
12332          l_mod_curr_instance_rec.INVENTORY_ITEM_ID             :=  l_curr_instance_rec.INVENTORY_ITEM_ID             ;
12333          l_mod_curr_instance_rec.VLD_ORGANIZATION_ID           :=  l_curr_instance_rec.VLD_ORGANIZATION_ID           ;
12334          l_mod_curr_instance_rec.INVENTORY_REVISION            :=  l_curr_instance_rec.INVENTORY_REVISION            ;
12335          l_mod_curr_instance_rec.INV_MASTER_ORGANIZATION_ID    :=  l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID    ;
12336          l_mod_curr_instance_rec.SERIAL_NUMBER                 :=  l_curr_instance_rec.SERIAL_NUMBER                 ;
12337          l_mod_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG        :=  l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG        ;
12338          l_mod_curr_instance_rec.LOT_NUMBER                    :=  l_curr_instance_rec.LOT_NUMBER                    ;
12339          l_mod_curr_instance_rec.QUANTITY                      :=  l_curr_instance_rec.QUANTITY                      ;
12340          l_mod_curr_instance_rec.UNIT_OF_MEASURE               :=  l_curr_instance_rec.UNIT_OF_MEASURE               ;
12341          l_mod_curr_instance_rec.ACCOUNTING_CLASS_CODE         :=  l_curr_instance_rec.ACCOUNTING_CLASS_CODE         ;
12342          l_mod_curr_instance_rec.INSTANCE_CONDITION_ID         :=  l_curr_instance_rec.INSTANCE_CONDITION_ID         ;
12343          l_mod_curr_instance_rec.INSTANCE_STATUS_ID            :=  l_curr_instance_rec.INSTANCE_STATUS_ID            ;
12344          l_mod_curr_instance_rec.CUSTOMER_VIEW_FLAG            :=  l_curr_instance_rec.CUSTOMER_VIEW_FLAG            ;
12345          l_mod_curr_instance_rec.MERCHANT_VIEW_FLAG            :=  l_curr_instance_rec.MERCHANT_VIEW_FLAG            ;
12346          l_mod_curr_instance_rec.SELLABLE_FLAG                 :=  l_curr_instance_rec.SELLABLE_FLAG                 ;
12347          l_mod_curr_instance_rec.SYSTEM_ID                     :=  l_curr_instance_rec.SYSTEM_ID                     ;
12348          l_mod_curr_instance_rec.INSTANCE_TYPE_CODE            :=  l_curr_instance_rec.INSTANCE_TYPE_CODE            ;
12349          l_mod_curr_instance_rec.ACTIVE_START_DATE             :=  l_curr_instance_rec.ACTIVE_START_DATE             ;
12350          l_mod_curr_instance_rec.ACTIVE_END_DATE               :=  l_curr_instance_rec.ACTIVE_END_DATE               ;
12351          l_mod_curr_instance_rec.LOCATION_TYPE_CODE            :=  l_curr_instance_rec.LOCATION_TYPE_CODE            ;
12352          l_mod_curr_instance_rec.LOCATION_ID                   :=  l_curr_instance_rec.LOCATION_ID                   ;
12353          l_mod_curr_instance_rec.INV_ORGANIZATION_ID           :=  l_curr_instance_rec.INV_ORGANIZATION_ID           ;
12354          l_mod_curr_instance_rec.INV_SUBINVENTORY_NAME         :=  l_curr_instance_rec.INV_SUBINVENTORY_NAME         ;
12355          l_mod_curr_instance_rec.INV_LOCATOR_ID                :=  l_curr_instance_rec.INV_LOCATOR_ID                ;
12356          l_mod_curr_instance_rec.PA_PROJECT_ID                 :=  l_curr_instance_rec.PA_PROJECT_ID                 ;
12357          l_mod_curr_instance_rec.PA_PROJECT_TASK_ID            :=  l_curr_instance_rec.PA_PROJECT_TASK_ID            ;
12358          l_mod_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID      :=  l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID      ;
12359          l_mod_curr_instance_rec.WIP_JOB_ID                    :=  l_curr_instance_rec.WIP_JOB_ID                    ;
12360          l_mod_curr_instance_rec.PO_ORDER_LINE_ID              :=  l_curr_instance_rec.PO_ORDER_LINE_ID              ;
12361          l_mod_curr_instance_rec.LAST_OE_ORDER_LINE_ID         :=  l_curr_instance_rec.LAST_OE_ORDER_LINE_ID         ;
12362          l_mod_curr_instance_rec.LAST_OE_RMA_LINE_ID           :=  l_curr_instance_rec.LAST_OE_RMA_LINE_ID           ;
12363          l_mod_curr_instance_rec.LAST_PO_PO_LINE_ID            :=  l_curr_instance_rec.LAST_PO_PO_LINE_ID            ;
12364          l_mod_curr_instance_rec.LAST_OE_PO_NUMBER             :=  l_curr_instance_rec.LAST_OE_PO_NUMBER             ;
12365          l_mod_curr_instance_rec.LAST_WIP_JOB_ID               :=  l_curr_instance_rec.LAST_WIP_JOB_ID               ;
12366          l_mod_curr_instance_rec.LAST_PA_PROJECT_ID            :=  l_curr_instance_rec.LAST_PA_PROJECT_ID            ;
12367          l_mod_curr_instance_rec.LAST_PA_TASK_ID               :=  l_curr_instance_rec.LAST_PA_TASK_ID               ;
12368          l_mod_curr_instance_rec.LAST_OE_AGREEMENT_ID          :=  l_curr_instance_rec.LAST_OE_AGREEMENT_ID          ;
12369          l_mod_curr_instance_rec.INSTALL_DATE                  :=  l_curr_instance_rec.INSTALL_DATE                  ;
12370          l_mod_curr_instance_rec.MANUALLY_CREATED_FLAG         :=  l_curr_instance_rec.MANUALLY_CREATED_FLAG         ;
12371          l_mod_curr_instance_rec.RETURN_BY_DATE                :=  l_curr_instance_rec.RETURN_BY_DATE                ;
12372          l_mod_curr_instance_rec.ACTUAL_RETURN_DATE            :=  l_curr_instance_rec.ACTUAL_RETURN_DATE            ;
12373          l_mod_curr_instance_rec.CREATION_COMPLETE_FLAG        :=  l_curr_instance_rec.CREATION_COMPLETE_FLAG        ;
12374          l_mod_curr_instance_rec.COMPLETENESS_FLAG             :=  l_curr_instance_rec.COMPLETENESS_FLAG             ;
12375          l_mod_curr_instance_rec.VERSION_LABEL                 :=  l_curr_instance_rec.VERSION_LABEL                 ;
12376          l_mod_curr_instance_rec.VERSION_LABEL_DESCRIPTION     :=  l_curr_instance_rec.VERSION_LABEL_DESCRIPTION     ;
12377          l_mod_curr_instance_rec.CONTEXT                       :=  l_curr_instance_rec.CONTEXT                       ;
12378          l_mod_curr_instance_rec.ATTRIBUTE1                    :=  l_curr_instance_rec.ATTRIBUTE1                    ;
12379          l_mod_curr_instance_rec.ATTRIBUTE2                    :=  l_curr_instance_rec.ATTRIBUTE2                    ;
12380          l_mod_curr_instance_rec.ATTRIBUTE3                    :=  l_curr_instance_rec.ATTRIBUTE3                    ;
12381          l_mod_curr_instance_rec.ATTRIBUTE4                    :=  l_curr_instance_rec.ATTRIBUTE4                    ;
12382          l_mod_curr_instance_rec.ATTRIBUTE5                    :=  l_curr_instance_rec.ATTRIBUTE5                    ;
12383          l_mod_curr_instance_rec.ATTRIBUTE6                    :=  l_curr_instance_rec.ATTRIBUTE6                    ;
12384          l_mod_curr_instance_rec.ATTRIBUTE7                    :=  l_curr_instance_rec.ATTRIBUTE7                    ;
12385          l_mod_curr_instance_rec.ATTRIBUTE8                    :=  l_curr_instance_rec.ATTRIBUTE8                    ;
12386          l_mod_curr_instance_rec.ATTRIBUTE9                    :=  l_curr_instance_rec.ATTRIBUTE9                    ;
12387          l_mod_curr_instance_rec.ATTRIBUTE10                   :=  l_curr_instance_rec.ATTRIBUTE10                   ;
12388          l_mod_curr_instance_rec.ATTRIBUTE11                   :=  l_curr_instance_rec.ATTRIBUTE11                   ;
12389          l_mod_curr_instance_rec.ATTRIBUTE12                   :=  l_curr_instance_rec.ATTRIBUTE12                   ;
12390          l_mod_curr_instance_rec.ATTRIBUTE13                   :=  l_curr_instance_rec.ATTRIBUTE13                   ;
12391          l_mod_curr_instance_rec.ATTRIBUTE14                   :=  l_curr_instance_rec.ATTRIBUTE14                   ;
12392          l_mod_curr_instance_rec.ATTRIBUTE15                   :=  l_curr_instance_rec.ATTRIBUTE15                   ;
12393          l_mod_curr_instance_rec.OBJECT_VERSION_NUMBER         :=  l_curr_instance_rec.OBJECT_VERSION_NUMBER         ;
12394          l_mod_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID       :=  l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID       ;
12395          l_mod_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE    :=  l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE    ;
12396          l_mod_curr_instance_rec.INSTALL_LOCATION_ID           :=  l_curr_instance_rec.INSTALL_LOCATION_ID           ;
12397          l_mod_curr_instance_rec.INSTANCE_USAGE_CODE           :=  l_curr_instance_rec.INSTANCE_USAGE_CODE           ;
12398          --start of code for eam integration--
12399          l_mod_curr_instance_rec.NETWORK_ASSET_FLAG            :=  l_curr_instance_rec.NETWORK_ASSET_FLAG            ;
12400          l_mod_curr_instance_rec.MAINTAINABLE_FLAG             :=  l_curr_instance_rec.MAINTAINABLE_FLAG             ;
12401          l_mod_curr_instance_rec.PN_LOCATION_ID                :=  l_curr_instance_rec.PN_LOCATION_ID                ;
12402          l_mod_curr_instance_rec.ASSET_CRITICALITY_CODE        :=  l_curr_instance_rec.ASSET_CRITICALITY_CODE        ;
12403          l_mod_curr_instance_rec.CATEGORY_ID                   :=  l_curr_instance_rec.CATEGORY_ID                   ;
12404          l_mod_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID       :=  l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID       ;
12405          l_mod_curr_instance_rec.INSTANTIATION_FLAG            :=  l_curr_instance_rec.INSTANTIATION_FLAG            ;
12406          l_mod_curr_instance_rec.LINEAR_LOCATION_ID            :=  l_curr_instance_rec.LINEAR_LOCATION_ID            ;
12407          l_mod_curr_instance_rec.OPERATIONAL_LOG_FLAG          :=  l_curr_instance_rec.OPERATIONAL_LOG_FLAG          ;
12408          l_mod_curr_instance_rec.CHECKIN_STATUS                :=  l_curr_instance_rec.CHECKIN_STATUS                ;
12409          l_mod_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE    :=  l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE    ;
12410          l_mod_curr_instance_rec.ATTRIBUTE16                   :=  l_curr_instance_rec.ATTRIBUTE16                   ;
12411          l_mod_curr_instance_rec.ATTRIBUTE17                   :=  l_curr_instance_rec.ATTRIBUTE17                   ;
12412          l_mod_curr_instance_rec.ATTRIBUTE18                   :=  l_curr_instance_rec.ATTRIBUTE18                   ;
12413          l_mod_curr_instance_rec.ATTRIBUTE19                   :=  l_curr_instance_rec.ATTRIBUTE19                   ;
12414          l_mod_curr_instance_rec.ATTRIBUTE20                   :=  l_curr_instance_rec.ATTRIBUTE20                   ;
12415          l_mod_curr_instance_rec.ATTRIBUTE21                   :=  l_curr_instance_rec.ATTRIBUTE21                   ;
12416          l_mod_curr_instance_rec.ATTRIBUTE22                   :=  l_curr_instance_rec.ATTRIBUTE22                   ;
12417          l_mod_curr_instance_rec.ATTRIBUTE23                   :=  l_curr_instance_rec.ATTRIBUTE23                   ;
12418          l_mod_curr_instance_rec.ATTRIBUTE24                   :=  l_curr_instance_rec.ATTRIBUTE24                   ;
12419          l_mod_curr_instance_rec.ATTRIBUTE25                   :=  l_curr_instance_rec.ATTRIBUTE25                   ;
12420          l_mod_curr_instance_rec.ATTRIBUTE26                   :=  l_curr_instance_rec.ATTRIBUTE26                   ;
12421          l_mod_curr_instance_rec.ATTRIBUTE27                   :=  l_curr_instance_rec.ATTRIBUTE27                   ;
12422          l_mod_curr_instance_rec.ATTRIBUTE28                   :=  l_curr_instance_rec.ATTRIBUTE28                   ;
12423          l_mod_curr_instance_rec.ATTRIBUTE29                   :=  l_curr_instance_rec.ATTRIBUTE29                   ;
12424          l_mod_curr_instance_rec.ATTRIBUTE30                   :=  l_curr_instance_rec.ATTRIBUTE30                   ;
12425 		 --end of code for eam integration--
12426        -- Addition of columns for FA Integration
12427          l_mod_curr_instance_rec.PAYABLES_UNIT_PRICE           := l_curr_instance_rec.PAYABLES_UNIT_PRICE            ;
12428          l_mod_curr_instance_rec.PAYABLES_CURRENCY_CODE        := l_curr_instance_rec.PAYABLES_CURRENCY_CODE         ;
12429          l_mod_curr_instance_rec.PURCHASE_UNIT_PRICE           := l_curr_instance_rec.PURCHASE_UNIT_PRICE            ;
12430          l_mod_curr_instance_rec.PURCHASE_CURRENCY_CODE        := l_curr_instance_rec.PURCHASE_CURRENCY_CODE         ;
12431          l_mod_curr_instance_rec.SALES_UNIT_PRICE              := l_curr_instance_rec.SALES_UNIT_PRICE               ;
12432          l_mod_curr_instance_rec.SALES_CURRENCY_CODE           := l_curr_instance_rec.SALES_CURRENCY_CODE            ;
12433          l_mod_curr_instance_rec.OPERATIONAL_STATUS_CODE       := l_curr_instance_rec.OPERATIONAL_STATUS_CODE        ;
12434         -- End addition of columns for FA Integration
12435         -- Begin Add Code for Siebel Genesis Project
12436         l_mod_curr_instance_rec.SOURCE_CODE                    := l_curr_instance_rec.SOURCE_CODE;
12437         -- End Add Code for Siebel Genesis Project
12438 
12439         csi_item_instance_vld_pvt.get_merge_rec   (p_instance_rec      =>   p_instance_rec,
12440                                                    l_curr_instance_rec =>   l_mod_curr_instance_rec,
12441                                                    l_get_instance_rec  =>   l_get_instance_rec
12442                                                    );
12443       l_wip_loc_chgd := FALSE;
12444 
12445 --Added for bug 2766787
12446       IF p_instance_rec.location_type_code='INVENTORY'
12447       THEN
12448          p_instance_rec.vld_organization_id := p_instance_rec.inv_organization_id;
12449       --bug 9553621 for cmro start
12450        ELSIF p_instance_rec.location_type_code='WIP'
12451         AND p_txn_rec.transaction_type_id = 203
12452         AND (p_instance_rec.WIP_JOB_ID IS NOT NULL AND
12453              p_instance_rec.WIP_JOB_ID <> FND_API.G_MISS_NUM)
12454         AND ((p_instance_rec.vld_organization_id IS NULL)  OR
12455              (p_instance_rec.vld_organization_id = FND_API.G_MISS_NUM))
12456        THEN
12457          BEGIN
12458            SELECT ORGANIZATION_ID
12459            INTO p_instance_rec.vld_organization_id
12460            FROM wip_discrete_jobs
12461            WHERE WIP_ENTITY_ID = p_instance_rec.WIP_JOB_ID;
12462 
12463            l_wip_loc_chgd := TRUE;
12464          EXCEPTION
12465          WHEN OTHERS THEN
12466             null;
12467          END;
12468        --bug 9553621 for cmro end
12469       END IF;
12470 --End addition for bug 2766787
12471       IF ((p_instance_rec.vld_organization_id IS NULL)  OR
12472           (p_instance_rec.vld_organization_id = FND_API.G_MISS_NUM))
12473       THEN
12474          p_instance_rec.vld_organization_id := l_cur_instance_rec.last_vld_organization_id;
12475          l_get_instance_rec.vld_organization_id := l_cur_instance_rec.last_vld_organization_id;
12476       ELSE
12477          l_get_instance_rec.vld_organization_id := p_instance_rec.vld_organization_id;
12478       END IF;
12479 
12480       l_last_vld_organization_id := p_instance_rec.vld_organization_id;
12481 
12482      --bug 9553621
12483       IF   (NOT l_wip_loc_chgd) AND (l_get_instance_rec.location_type_code <> 'INVENTORY' AND
12484            l_cur_instance_rec.last_vld_organization_id <> l_get_instance_rec.vld_organization_id
12485 	   AND l_curr_instance_rec.instance_usage_code <> 'IN_TRANSIT') --Added for bug 6188180
12486       THEN
12487                FND_MESSAGE.Set_Name('CSI', 'CSI_CANNOT_MODIFY_VLD_ORG');
12488                FND_MSG_PUB.ADD;
12489                RAISE FND_API.G_EXC_ERROR;
12490       END IF;
12491 
12492       -- Check if all the required parameters are passed
12493            CSI_Item_Instance_vld_pvt.Check_Reqd_Param_num
12494              (    p_instance_rec.INSTANCE_ID ,
12495                 '  p_instance_rec.INSTANCE_ID ',
12496                    l_api_name                 );
12497 
12498       -- Check if the instance id  is valid
12499         IF NOT(CSI_Item_Instance_vld_pvt.Is_InstanceID_Valid
12500                                                      (p_instance_rec.INSTANCE_ID,
12501                                                       TRUE                    )) THEN
12502               RAISE FND_API.G_EXC_ERROR;
12503         END IF;
12504         --FND_File.Put_Line(Fnd_File.LOG,'p_validation_mode is :'||p_validation_mode);
12505         IF (p_validation_mode <> 'U')
12506         THEN
12507 
12508        -- The following sequence will be set only from the Data Correction
12509         l_current_val := -9999999;
12510         --
12511         Begin
12512            select CSI_II_FORWARD_SYNC_TEMP_S.CURRVAL
12513            into l_current_val
12514            FROM DUAL;
12515         Exception
12516            when others then
12517               l_current_val := -9999999;
12518         End;
12519         --
12520         -- Proceed with Forward SYnch check if the sequence does not return any value.
12521         IF l_current_val = -9999999 THEN
12522            IF NOT(CSI_Item_Instance_vld_pvt.Is_Forward_Synch
12523                      (p_instance_id    =>  p_instance_rec.INSTANCE_ID,
12524                       p_stop_all_txn   =>  fnd_api.g_true,
12525                       p_mtl_txn_id     =>  fnd_api.g_miss_num)) THEN
12526               FND_MESSAGE.Set_Name('CSI', 'CSI_API_NO_FORWARD_SYNCH');
12527               FND_MESSAGE.Set_Token('INSTANCE', p_instance_rec.INSTANCE_ID);
12528               FND_MSG_PUB.ADD;
12529               RAISE FND_API.G_EXC_ERROR;
12530            END IF;
12531         ELSE -- Even if seq exists, stop later txns
12532            IF NOT(CSI_Item_Instance_vld_pvt.Is_Forward_Synch
12533                      (p_instance_id    =>  p_instance_rec.INSTANCE_ID,
12534                       p_stop_all_txn   =>  fnd_api.g_false, -- Stop only later txns
12535                       p_mtl_txn_id     =>  p_txn_rec.inv_material_transaction_id)) THEN
12536               FND_MESSAGE.Set_Name('CSI', 'CSI_API_NO_FORWARD_SYNCH');
12537               FND_MESSAGE.Set_Token('INSTANCE', p_instance_rec.INSTANCE_ID);
12538               FND_MSG_PUB.ADD;
12539               RAISE FND_API.G_EXC_ERROR;
12540            END IF;
12541         END IF;
12542         --
12543       -- validation for Instance id
12544         IF ((p_instance_rec.instance_id IS NULL) OR
12545             (p_instance_rec.instance_id <> FND_API.G_MISS_NUM)) THEN
12546             IF ((p_instance_rec.instance_id IS NULL) OR
12547                 (p_instance_rec.instance_id <> l_curr_instance_rec.instance_id)) THEN
12548                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12549                     FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_ID');
12550                     FND_MSG_PUB.ADD;
12551                     RAISE FND_API.G_EXC_ERROR;
12552             END IF;
12553         END IF;
12554 
12555       -- validation for Instance Number
12556         IF ((p_instance_rec.instance_number IS NULL) OR
12557             (p_instance_rec.instance_number <> FND_API.G_MISS_CHAR)) THEN
12558             IF ((p_instance_rec.instance_number IS NULL) OR
12559                 (p_instance_rec.instance_number <> l_curr_instance_rec.instance_number))
12560             THEN
12561             -- Added for eam integration
12562               IF NOT csi_item_Instance_Vld_pvt.Is_InstanceNum_Valid(p_instance_rec.instance_id,
12563                                                                     p_instance_rec.instance_number,
12564                                                                     'UPDATE')
12565               THEN
12566                RAISE fnd_api.g_exc_error;
12567               END IF;
12568             -- End addition for eam integration
12569             /*
12570                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12571                     FND_MESSAGE.Set_Token('COLUMN', 'INSTANCE_NUMBER');
12572                     FND_MSG_PUB.ADD;
12573                     RAISE FND_API.G_EXC_ERROR;
12574                     */
12575             END IF;
12576         END IF;
12577       -- validation for Inventory Item id
12578 
12579 --start change for BUG:6176621
12580 
12581       /*  IF ((p_instance_rec.inventory_item_id IS NULL) OR
12582             (p_instance_rec.inventory_item_id <> FND_API.G_MISS_NUM)) THEN
12583             IF ((p_instance_rec.inventory_item_id IS NULL) OR
12584                 (p_instance_rec.inventory_item_id <> l_curr_instance_rec.inventory_item_id)) THEN
12585 		*/
12586 IF p_txn_rec.transaction_type_id = 205
12587  THEN
12588  SELECT count(*)
12589    INTO l_number_open_ro
12590    FROM CSD_REPAIRS cr
12591    where  cr.STATUS <> 'C'AND
12592        (cr.CUSTOMER_PRODUCT_ID = p_instance_rec.instance_id or exists
12593             (select 'X' from csd_product_txns_v cptv
12594                   where cptv.repair_line_id = cr.repair_line_id and
12595                         (cptv.source_instance_id = p_instance_rec.instance_id or
12596                              cptv.non_source_instance_id = p_instance_rec.instance_id)));
12597 
12598 		IF(l_number_open_ro>0)
12599 		 THEN
12600 		    FND_MESSAGE.Set_Name('CSI', 'CSI_OPEN_RO_EXISTS');
12601                     FND_MESSAGE.Set_Token('COLUMN', 'INVENTORY_ITEM_ID OR SERIAL_NUMBER');
12602                     FND_MSG_PUB.ADD;
12603                     RAISE FND_API.G_EXC_ERROR;
12604 
12605 		  END IF;
12606 	END IF;
12607 
12608 						--validation for open depot repair orders for CMRO
12609 
12610           IF p_instance_rec.inventory_item_id IS NULL THEN
12611             FND_MESSAGE.Set_Name('CSI', 'CSI_API_INVALID_ITEM');
12612             FND_MESSAGE.Set_Token('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
12613 	     fnd_message.set_token('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12614 	     FND_MSG_PUB.ADD;
12615  	       RAISE FND_API.G_EXC_ERROR;
12616  	     ELSE
12617  	       IF (p_instance_rec.inventory_item_id <> FND_API.G_MISS_NUM)
12618  	          AND
12619  	          (p_instance_rec.inventory_item_id <> l_curr_instance_rec.inventory_item_id)
12620  	       THEN
12621  	         IF p_txn_rec.transaction_type_id = 205
12622 
12623 		 THEN
12624  	           l_part_or_serial_change := TRUE;
12625  	         ELSE
12626                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12627                     FND_MESSAGE.Set_Token('COLUMN', 'INVENTORY_ITEM_ID');
12628                     FND_MSG_PUB.ADD;
12629                     RAISE FND_API.G_EXC_ERROR;
12630             END IF;
12631         END IF;
12632      END IF;
12633 
12634 
12635  	     IF nvl(p_instance_rec.serial_number, fnd_api.g_miss_char) <> fnd_api.g_miss_char
12636  	        AND
12637  	        p_instance_rec.serial_number <> l_curr_instance_rec.serial_number
12638  	     THEN
12639  	       IF p_txn_rec.transaction_type_id = 205
12640 
12641 	       THEN
12642  	         l_part_or_serial_change := TRUE;
12643  	       /*ELSE -- Commented for bug 6965008
12644                  -- Modified else block for the bug 6875664, base bug 6531599
12645                  IF p_txn_rec.transaction_type_id = 1 THEN
12646                    l_mtl_txn_tbl.DELETE;
12647                    CSI_Item_Instance_vld_pvt.get_mtl_txn_for_srl(
12648                       p_inventory_item_id => p_instance_rec.inventory_item_id,
12649                       p_serial_number     => p_instance_rec.serial_number,
12650                       x_mtl_txn_tbl       => l_mtl_txn_tbl);
12651                    IF NVL(l_mtl_txn_tbl.Count,0) > 0 THEN
12652                       FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12653                       FND_MESSAGE.Set_Token('COLUMN', 'SERIAL_NUMBER');
12654                       FND_MSG_PUB.ADD;
12655                       RAISE FND_API.G_EXC_ERROR;
12656                    END IF;
12657                  ELSE
12658  	           FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12659  	           FND_MESSAGE.Set_Token('COLUMN', 'SERIAL_NUMBER');
12660  	           FND_MSG_PUB.ADD;
12661  	           RAISE FND_API.G_EXC_ERROR;
12662                  END IF;
12663 		  */      -- Commented for bug 6965008
12664                END IF;
12665  	     END IF;
12666 			--end of code for 6176621
12667 
12668         --
12669         IF p_instance_rec.instance_status_id IS NULL THEN
12670            FND_MESSAGE.Set_Name('CSI','CSI_API_MANDATORY_STATUS');
12671            FND_MSG_PUB.ADD;
12672            RAISE FND_API.G_EXC_ERROR;
12673         END IF;
12674         --
12675         IF p_instance_rec.quantity IS NULL THEN
12676            FND_MESSAGE.Set_Name('CSI','CSI_API_MANDATORY_QUANTITY');
12677            FND_MSG_PUB.ADD;
12678            RAISE FND_API.G_EXC_ERROR;
12679         END IF;
12680         --
12681         IF p_instance_rec.unit_of_measure IS NULL THEN
12682            FND_MESSAGE.Set_Name('CSI','CSI_API_MANDATORY_UOM');
12683            FND_MSG_PUB.ADD;
12684            RAISE FND_API.G_EXC_ERROR;
12685         END IF;
12686         --
12687         -- validation for Inv Master Organization Id
12688         -- srramakr Bug 4163719. Master Organization can be changed under certain circumstances.
12689         -- For those customers who maintain multiple Inventory Master Oraganizations, shipping might
12690         -- happen from one org and RMA into another. Under these scenarios, the master organization
12691         -- will change. When this transaction lands in IB, we need to check the combination of
12692         -- Master org and Vld org and make the update. If the combination is not valid, we error out.
12693         --
12694         IF ((p_instance_rec.inv_master_organization_id IS NULL) OR
12695             (p_instance_rec.inv_master_organization_id <> FND_API.G_MISS_NUM)) THEN
12696            IF ((p_instance_rec.inv_master_organization_id IS NULL) OR
12697                (p_instance_rec.inv_master_organization_id <>
12698                                          l_curr_instance_rec.inv_master_organization_id)) THEN
12699 	       BEGIN
12700 		  SELECT  'x'
12701 		  INTO    l_temp
12702 		  FROM    mtl_parameters
12703 		  WHERE   organization_id = p_instance_rec.vld_organization_id
12704 		  AND     master_organization_id = p_instance_rec.inv_master_organization_id;
12705 	       EXCEPTION
12706 		 WHEN NO_DATA_FOUND THEN
12707 		   FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_VLD_MAST_COMB');
12708 		   FND_MSG_PUB.Add;
12709 		   RAISE FND_API.G_EXC_ERROR;
12710 	       END;
12711                /*****     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12712                     FND_MESSAGE.Set_Token('COLUMN', 'INV_MASTER_ORGANIZATION_ID');
12713                     FND_MSG_PUB.ADD;
12714                     RAISE FND_API.G_EXC_ERROR; *****/
12715             END IF;
12716         END IF;
12717       --
12718 
12719 
12720          IF (p_instance_rec.location_id IS NULL OR
12721              p_instance_rec.location_id =fnd_api.g_miss_num)
12722          THEN
12723            IF p_instance_rec.location_type_code IN ('WIP','HR_LOCATIONS','PROJECT','IN_TRANSIT','PO','INTERNAL_SITE')
12724            THEN
12725             BEGIN
12726               SELECT location_id
12727                 INTO p_instance_rec.location_id
12728                 FROM hr_all_organization_units
12729                WHERE organization_id = p_instance_rec.vld_organization_id;
12730 
12731                l_get_instance_rec.location_id:=p_instance_rec.location_id;
12732 
12733             EXCEPTION
12734               WHEN NO_DATA_FOUND THEN
12735                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
12736                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12737                fnd_msg_pub.ADD;
12738 	           RAISE fnd_api.g_exc_error;
12739             END;
12740             IF p_instance_rec.location_id IS NULL
12741             THEN
12742                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
12743                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12744                fnd_msg_pub.ADD;
12745 	           RAISE fnd_api.g_exc_error;
12746             END IF;
12747            END IF;
12748          END IF;
12749 
12750          IF (p_instance_rec.install_location_id IS NULL OR
12751              p_instance_rec.install_location_id =fnd_api.g_miss_num)
12752          THEN
12753            IF p_instance_rec.install_location_type_code IN ('WIP','HR_LOCATIONS','PROJECT','IN_TRANSIT','PO','INTERNAL_SITE')
12754            THEN
12755             BEGIN
12756               SELECT location_id
12757                 INTO p_instance_rec.install_location_id
12758                 FROM hr_all_organization_units
12759                WHERE organization_id = p_instance_rec.vld_organization_id;
12760             EXCEPTION
12761               WHEN NO_DATA_FOUND THEN
12762                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
12763                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12764                fnd_msg_pub.ADD;
12765 	           RAISE fnd_api.g_exc_error;
12766             END;
12767             IF p_instance_rec.install_location_id IS NULL
12768             THEN
12769                fnd_message.set_name('CSI','CSI_NO_HR_LOCATIONS');
12770                fnd_message.set_token('ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12771                fnd_msg_pub.ADD;
12772 	           RAISE fnd_api.g_exc_error;
12773             END IF;
12774            END IF;
12775          END IF;
12776 
12777 
12778       -- End code addition for eam integration
12779 
12780       -- validation for Active Start Date
12781         IF ((p_instance_rec.active_start_date IS NULL) OR
12782             (p_instance_rec.active_start_date <> FND_API.G_MISS_DATE)) THEN
12783             IF ((p_instance_rec.active_start_date IS NULL) OR
12784                 (p_instance_rec.active_start_date <> l_curr_instance_rec.active_start_date)) THEN
12785                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
12786                     FND_MESSAGE.Set_Token('COLUMN', 'ACTIVE_START_DATE');
12787                     FND_MSG_PUB.ADD;
12788                     RAISE FND_API.G_EXC_ERROR;
12789             END IF;
12790         END IF;
12791 
12792       -- validating the effective active end date for an End-dated Instance
12793         IF l_curr_instance_rec.active_end_date <= SYSDATE THEN
12794             IF (p_instance_rec.active_end_date = FND_API.G_MISS_DATE) OR
12795                (p_instance_rec.active_end_date < SYSDATE) THEN
12796               IF (p_instance_rec.check_for_instance_expiry = fnd_api.g_true) THEN
12797                   IF NOT (p_called_from_rel = fnd_api.g_true OR p_txn_rec.transaction_type_id = 401)
12798                   THEN
12799                          FND_MESSAGE.SET_NAME('CSI','CSI_API_CANT_UPD_EXP_ITEM');
12800                          FND_MSG_PUB.ADD;
12801                          RAISE FND_API.G_EXC_ERROR;
12802                   END IF;
12803               END IF;
12804             END IF;
12805         END IF;
12806 
12807       -- validating the effective active end date
12808         IF  ( p_instance_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE) THEN
12809              IF NOT(CSI_Item_Instance_vld_pvt.EndDate_Valid
12810                                  (l_curr_instance_rec.ACTIVE_START_DATE,
12811                                   p_instance_rec.ACTIVE_END_DATE ,
12812                                   p_instance_rec.INSTANCE_ID,
12813 				  p_txn_rec.transaction_id))  THEN -- Bug 9081875
12814                 RAISE FND_API.G_EXC_ERROR;
12815              END IF;
12816         END IF;
12817 
12818        -- Validate if the instance status is being changed to
12819        -- a new status with a termination_flag set to 'Y'
12820        -- If so, then the end_date should be checked
12821        -- srramakr. Bug # 2180425. If the status is changed to a Terminated Status, then the
12822        -- active_end_date should be validated. We do not allow future date in this case.
12823        -- For past dates, there should not be any Transactions between the active_end_date and sysdate.
12824         IF  ( (p_instance_rec.instance_status_id <> FND_API.G_MISS_NUM)
12825             AND (p_instance_rec.instance_status_id IS NOT NULL)
12826             AND (p_instance_rec.instance_status_id <>
12827                       l_curr_instance_rec.instance_status_id)
12828             AND (CSI_Item_Instance_vld_pvt.val_inst_ter_flag
12829                     (p_instance_rec.instance_status_id)))
12830             THEN
12831               IF  ((p_instance_rec.ACTIVE_END_DATE IS NULL) OR
12832                    (p_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE)) THEN
12833                    FND_MESSAGE.Set_Name('CSI', 'CSI_API_TER_DATE');
12834                    FND_MSG_PUB.ADD;
12835                    RAISE FND_API.G_EXC_ERROR;
12836               ELSIF p_instance_rec.ACTIVE_END_DATE < sysdate THEN
12837                  IF NOT(CSI_Item_Instance_vld_pvt.EndDate_Valid
12838                                  (l_curr_instance_rec.ACTIVE_START_DATE,
12839                                   p_instance_rec.ACTIVE_END_DATE ,
12840                                   p_instance_rec.INSTANCE_ID,
12841 				  p_txn_rec.transaction_id))  THEN -- Bug 9081875
12842                     RAISE FND_API.G_EXC_ERROR;
12843                  END IF;
12844               ELSIF ((p_instance_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE) AND
12845                      (p_instance_rec.ACTIVE_END_DATE > sysdate)) THEN
12846                    FND_MESSAGE.Set_Name('CSI', 'CSI_API_FUTURE_DATE');
12847                    FND_MSG_PUB.ADD;
12848                    RAISE FND_API.G_EXC_ERROR;
12849               END IF;
12850         END IF;
12851 
12852         --
12853         -- Get the Required Inventory Attributes
12854         l_exists_flag := 'N';
12855         l_valid_flag := 'Y';
12856         IF p_item_attribute_tbl.count > 0 THEN
12857            FOR item_count in p_item_attribute_tbl.FIRST .. p_item_attribute_tbl.LAST
12858            LOOP
12859               IF p_item_attribute_tbl(item_count).inventory_item_id = l_get_instance_rec.inventory_item_id AND
12860                  p_item_attribute_tbl(item_count).organization_id = p_instance_rec.vld_organization_id AND
12861                  p_item_attribute_tbl(item_count).master_organization_id = l_get_instance_rec.inv_master_organization_id
12862               THEN
12863                  l_trackable_flag := p_item_attribute_tbl(item_count).trackable_flag;
12864                  l_rev_control := p_item_attribute_tbl(item_count).revision_control_code;
12865                  l_serial_control := p_item_attribute_tbl(item_count).serial_number_control_code;
12866                  l_lot_control := p_item_attribute_tbl(item_count).lot_control_code;
12867                  l_shelf_life_code := p_item_attribute_tbl(item_count).shelf_life_code;
12868                  l_uom_code := p_item_attribute_tbl(item_count).uom_code;
12869                  l_eam_item_type := p_item_attribute_tbl(item_count).eam_item_type;
12870                  l_equipment_type := p_item_attribute_tbl(item_count).equipment_type;
12871                  l_valid_flag := p_item_attribute_tbl(item_count).valid_flag;
12872                  l_exists_flag := 'Y';
12873                  EXIT;
12874               END IF;
12875            END LOOP;
12876            IF l_valid_flag = 'N' then
12877               FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
12878               FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',p_instance_rec.inventory_item_id);
12879               FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12880               FND_MSG_PUB.Add;
12881 	      RAISE fnd_api.g_exc_error;
12882            END IF;
12883         END IF;
12884         --
12885         -- if item does not exist in cache then get from database.
12886         IF l_exists_flag = 'N' THEN
12887            p_ins_count_rec.inv_count := p_ins_count_rec.inv_count + 1;
12888            p_item_attribute_tbl(p_ins_count_rec.inv_count).inventory_item_id := l_get_instance_rec.inventory_item_id;
12889            p_item_attribute_tbl(p_ins_count_rec.inv_count).organization_id := p_instance_rec.vld_organization_id;
12890            p_item_attribute_tbl(p_ins_count_rec.inv_count).master_organization_id := l_get_instance_rec.inv_master_organization_id;
12891            BEGIN
12892               SELECT comms_nl_trackable_flag
12893                     ,primary_uom_code
12894               INTO   l_trackable_flag
12895                     ,l_uom_code
12896               FROM   MTL_SYSTEM_ITEMS_B
12897               WHERE  inventory_item_id = l_get_instance_rec.inventory_item_id
12898               AND    organization_id = l_get_instance_rec.inv_master_organization_id
12899 	          AND    enabled_flag = 'Y'
12900 	          AND    nvl (start_date_active, sysdate) <= sysdate
12901 	          AND    nvl (end_date_active, sysdate+1) > sysdate;
12902               --
12903 	      p_item_attribute_tbl(p_ins_count_rec.inv_count).trackable_flag := l_trackable_flag;
12904 	      p_item_attribute_tbl(p_ins_count_rec.inv_count).uom_code := l_uom_code;
12905               p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'Y';
12906 	   EXCEPTION
12907 	      WHEN OTHERS THEN
12908                  p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'N';
12909 		 FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
12910                  FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',l_get_instance_rec.inventory_item_id);
12911                  FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12912                  FND_MSG_PUB.Add;
12913 		 RAISE fnd_api.g_exc_error;
12914            END;
12915 
12916            --
12917      	   BEGIN
12918              SELECT revision_qty_control_code
12919                    ,serial_number_control_code
12920                   -- ,lot_control_code
12921 			   ,nvl(csi_utl_pkg.get_lot_ctrl_code(p_txn_rec.inv_material_transaction_id),lot_control_code) lot_control_code-- Added for bug#14835893
12922                    ,shelf_life_code
12923                    ,eam_item_type
12924                    ,equipment_type
12925                INTO l_rev_control
12926                    ,l_serial_control
12927                    ,l_lot_control
12928                    ,l_shelf_life_code
12929                    ,l_eam_item_type
12930                    ,l_equipment_type
12931                FROM MTL_SYSTEM_ITEMS_B
12932               WHERE inventory_item_id = l_get_instance_rec.inventory_item_id
12933                 AND organization_id = p_instance_rec.vld_organization_id
12934                 AND enabled_flag = 'Y'
12935                 AND nvl (start_date_active, sysdate) <= sysdate
12936                 AND nvl (end_date_active, sysdate+1) > sysdate;
12937               --
12938               p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'Y';
12939               p_item_attribute_tbl(p_ins_count_rec.inv_count).revision_control_code := l_rev_control;
12940               p_item_attribute_tbl(p_ins_count_rec.inv_count).serial_number_control_code := l_serial_control;
12941               p_item_attribute_tbl(p_ins_count_rec.inv_count).lot_control_code := l_lot_control;
12942               p_item_attribute_tbl(p_ins_count_rec.inv_count).shelf_life_code := l_shelf_life_code;
12943               p_item_attribute_tbl(p_ins_count_rec.inv_count).eam_item_type := l_eam_item_type;
12944               p_item_attribute_tbl(p_ins_count_rec.inv_count).equipment_type := l_equipment_type;
12945  	   EXCEPTION
12946 	      WHEN OTHERS THEN
12947               p_item_attribute_tbl(p_ins_count_rec.inv_count).valid_flag := 'N';
12948               FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM');
12949               FND_MESSAGE.SET_TOKEN('INVENTORY_ITEM_ID',l_get_instance_rec.inventory_item_id);
12950               FND_MESSAGE.SET_TOKEN('INVENTORY_ORGANIZATION_ID',p_instance_rec.vld_organization_id);
12951               FND_MSG_PUB.Add;
12952               RAISE fnd_api.g_exc_error;
12953            END;
12954         END IF;
12955 
12956       -- Added following code for eam integration
12957       -- Check if the item is a rebuildable or an asset group
12958 
12959         IF csi_item_instance_vld_pvt.Check_for_eam_item
12960            (p_inventory_item_id  => p_instance_rec.inventory_item_id,
12961             p_organization_id    => p_instance_rec.vld_organization_id,
12962             p_eam_item_type      => l_eam_item_type)
12963         THEN
12964           l_eam_item := TRUE;
12965         END IF;
12966 
12967          IF (
12968              ((p_instance_rec.network_asset_flag IS NULL AND
12969                l_curr_instance_rec.network_asset_flag IS NOT NULL) OR
12970               (p_instance_rec.network_asset_flag <> fnd_api.g_miss_char AND
12971                NVL(p_instance_rec.network_asset_flag,fnd_api.g_miss_char) <>
12972                NVL(l_curr_instance_rec.network_asset_flag,fnd_api.g_miss_char)))
12973               OR
12974              ((p_instance_rec.maintainable_flag IS NULL AND
12975                l_curr_instance_rec.maintainable_flag IS NOT NULL) OR
12976               (p_instance_rec.maintainable_flag <> fnd_api.g_miss_char AND
12977                NVL(p_instance_rec.maintainable_flag,fnd_api.g_miss_char) <>
12978                NVL(l_curr_instance_rec.maintainable_flag,fnd_api.g_miss_char)))
12979               OR
12980              ((p_instance_rec.pn_location_id IS NULL AND
12981                l_curr_instance_rec.pn_location_id IS NOT NULL) OR
12982               (p_instance_rec.pn_location_id <> fnd_api.g_miss_num AND
12983                NVL(p_instance_rec.pn_location_id,fnd_api.g_miss_num) <>
12984                NVL(l_curr_instance_rec.pn_location_id,fnd_api.g_miss_num)))
12985               OR
12986              ((p_instance_rec.asset_criticality_code IS NULL AND
12987                l_curr_instance_rec.asset_criticality_code IS NOT NULL) OR
12988               (p_instance_rec.asset_criticality_code <> fnd_api.g_miss_char AND
12989                NVL(p_instance_rec.asset_criticality_code,fnd_api.g_miss_char) <>
12990                NVL(l_curr_instance_rec.asset_criticality_code,fnd_api.g_miss_char)))
12991               OR
12992              ((p_instance_rec.category_id IS NULL AND
12993                l_curr_instance_rec.category_id IS NOT NULL) OR
12994               (p_instance_rec.category_id <> fnd_api.g_miss_num AND
12995                NVL(p_instance_rec.category_id,fnd_api.g_miss_num) <>
12996                NVL(l_curr_instance_rec.category_id,fnd_api.g_miss_num)))
12997               OR
12998              ((p_instance_rec.equipment_gen_object_id IS NULL AND
12999                l_curr_instance_rec.equipment_gen_object_id IS NOT NULL) OR
13000               (p_instance_rec.equipment_gen_object_id <> fnd_api.g_miss_num AND
13001                NVL(p_instance_rec.equipment_gen_object_id,fnd_api.g_miss_num) <>
13002                NVL(l_curr_instance_rec.equipment_gen_object_id,fnd_api.g_miss_num)))
13003               OR
13004              ((p_instance_rec.linear_location_id IS NULL AND
13005                l_curr_instance_rec.linear_location_id IS NOT NULL) OR
13006               (p_instance_rec.linear_location_id <> fnd_api.g_miss_num AND
13007                NVL(p_instance_rec.linear_location_id,fnd_api.g_miss_num) <>
13008                NVL(l_curr_instance_rec.linear_location_id,fnd_api.g_miss_num)))
13009               OR
13010              ((p_instance_rec.operational_log_flag IS NULL AND
13011                l_curr_instance_rec.operational_log_flag IS NOT NULL) OR
13012               (p_instance_rec.operational_log_flag <> fnd_api.g_miss_char AND
13013                NVL(p_instance_rec.operational_log_flag,fnd_api.g_miss_char) <>
13014                NVL(l_curr_instance_rec.operational_log_flag,fnd_api.g_miss_char)))
13015               OR
13016              ((p_instance_rec.checkin_status IS NULL AND
13017                l_curr_instance_rec.checkin_status IS NOT NULL) OR
13018               (p_instance_rec.checkin_status <> fnd_api.g_miss_num AND
13019                NVL(p_instance_rec.checkin_status,fnd_api.g_miss_num) <>
13020                NVL(l_curr_instance_rec.checkin_status,fnd_api.g_miss_num)))
13021               OR
13022              ((p_instance_rec.supplier_warranty_exp_date IS NULL AND
13023                l_curr_instance_rec.supplier_warranty_exp_date IS NOT NULL) OR
13024               (p_instance_rec.supplier_warranty_exp_date <> fnd_api.g_miss_date AND
13025                NVL(p_instance_rec.supplier_warranty_exp_date,fnd_api.g_miss_date) <>
13026                NVL(l_curr_instance_rec.supplier_warranty_exp_date,fnd_api.g_miss_date)))
13027             )
13028          THEN
13029           IF l_eam_item
13030           THEN
13031            IF NOT eam_assetnumber_pub.validate_fields
13032             (p_current_organization_id    => p_instance_rec.vld_organization_id
13033             ,p_inventory_item_id          => l_get_instance_rec.inventory_item_id
13034             ,p_serial_number              => l_get_instance_rec.serial_number
13035             ,p_network_asset_flag         => p_instance_rec.network_asset_flag
13036             ,p_maintainable_flag          => p_instance_rec.maintainable_flag
13037             ,p_pn_location_id             => p_instance_rec.pn_location_id
13038             ,p_asset_criticality_code     => p_instance_rec.asset_criticality_code
13039             ,p_category_id                => p_instance_rec.category_id
13040             ,p_equipment_object_id        => p_instance_rec.equipment_gen_object_id
13041             ,p_eam_linear_id              => p_instance_rec.linear_location_id
13042             ,p_operational_log_flag       => p_instance_rec.operational_log_flag
13043             ,p_checkin_status             => p_instance_rec.checkin_status
13044             ,p_supplier_warranty_exp_date => p_instance_rec.supplier_warranty_exp_date
13045             ,p_owning_department_id       => NULL
13046             ,x_reason_failed              => l_reason_failed
13047             ,x_token                      => l_token
13048             )
13049            THEN
13050            -- FND_MESSAGE.SET_NAME('CSI', l_reason_failed); -- commented for bug 5351886
13051            -- FND_MSG_PUB.Add;                              -- commented for bug 5351886
13052             csi_gen_utility_pvt.put_line('Call to eam_assetnumber_pub.validate_fields failed with following reason');
13053             csi_gen_utility_pvt.put_line(l_reason_failed);
13054             RAISE FND_API.G_EXC_ERROR;
13055            END IF;
13056           ELSE
13057             FND_MESSAGE.SET_NAME('CSI', 'CSI_NON_EAM_ITEM');
13058             FND_MSG_PUB.Add;
13059             RAISE FND_API.G_EXC_ERROR;
13060           END IF;
13061     END IF;
13062 
13063     -- Validate System
13064     IF l_get_instance_rec.system_id IS NOT NULL AND
13065        l_get_instance_rec.system_id <> FND_API.G_MISS_NUM THEN
13066        IF NOT csi_Item_Instance_Vld_pvt.Is_Valid_System_id(
13067                         l_get_instance_rec.system_id) THEN
13068           FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_SYSTEM_ID');
13069           FND_MESSAGE.SET_TOKEN('SYSTEM_ID',l_get_instance_rec.system_id);
13070           FND_MSG_PUB.Add;
13071           RAISE FND_API.G_EXC_ERROR;
13072        END IF;
13073     END IF;
13074     --
13075     -- Lot Number Validation
13076     -- srramakr Mandated Lot Number validation irrespective of the update.
13077     -- Irrespective whether the item instance is standalone or component, lot number create/validation
13078     -- will be performed. This is because unlike serial control, lot control does not depend on
13079     -- instance location.
13080     IF l_get_instance_rec.lot_number IS NOT NULL AND
13081        l_get_instance_rec.lot_number <> FND_API.G_MISS_CHAR
13082     THEN
13083        csi_gen_utility_pvt.put_line('Calling Validate_Lot_Number..');
13084        -- Added for Bug# 4011408
13085        csi_Item_Instance_Vld_pvt.Validate_Lot_Number
13086                (
13087                  p_inv_org_id               => p_instance_rec.vld_organization_id,
13088                  p_inv_item_id              => l_get_instance_rec.inventory_item_id ,
13089                  p_lot_number               => l_get_instance_rec.lot_number,
13090                  p_mfg_serial_number_flag   => l_get_instance_rec.mfg_serial_number_flag,
13091                  p_txn_rec                  => p_txn_rec,
13092                  p_creation_complete_flag   => l_get_instance_rec.creation_complete_flag,
13093                  l_return_value             => l_return_value,
13094                  p_lot_control_code         => l_lot_control
13095                );
13096        IF l_return_value = FALSE THEN
13097           RAISE fnd_api.g_exc_error;
13098        END IF;
13099        -- Commented for Bug# 4011408 since Validate_Lot_Number will do the basic validation
13100        --
13101        -- Validates the lot uniqueness and creates lot numbers in MLNs for manually created Instances
13102        -- Bug# 4011408
13103        csi_gen_utility_pvt.put_line('Calling Create_Lot routine in Update_Item_Instance API...');
13104        csi_item_instance_vld_pvt.Create_Lot
13105 	  (
13106 	    p_inv_org_id                 =>  p_instance_rec.vld_organization_id,
13107 	    p_inv_item_id                =>  l_get_instance_rec.inventory_item_id,
13108 	    p_lot_number                 =>  l_get_instance_rec.lot_number,
13109             p_shelf_life_code            =>  l_shelf_life_code,
13110 	    p_instance_id                =>  l_get_instance_rec.instance_id,
13111 	    l_return_value               =>  l_return_value
13112 	  );
13113        IF l_return_value = FALSE THEN
13114 	  RAISE fnd_api.g_exc_error;
13115        END IF;
13116     END IF;
13117     --
13118 
13119 --start code fix for 6176621
13120 
13121     IF l_serial_control not in (2, 5) and l_part_or_serial_change THEN
13122  	       FND_MESSAGE.SET_NAME('CSI','CSI_API_CANNOT_UPD_SRL');
13123  	       FND_MSG_PUB.Add;
13124  	       RAISE FND_API.g_exc_error;
13125  	     END IF;
13126 
13127 		--end code fix for 6176621
13128 
13129     -- Updating a Serial Number to NULL is not allowed.
13130     IF l_curr_instance_rec.serial_number IS NOT NULL AND
13131        p_instance_rec.serial_number IS NULL THEN
13132        FND_MESSAGE.SET_NAME('CSI','CSI_API_CANNOT_UPD_SRL_NULL');
13133        FND_MSG_PUB.Add;
13134        RAISE FND_API.G_EXC_ERROR;
13135     END IF;
13136     --
13137     -- Serial number changes for CMRO
13138     -- Need to handle NULL to NOT NULL Serial Number
13139     IF p_instance_rec.serial_number IS NOT NULL AND
13140        p_instance_rec.serial_number <> fnd_api.g_miss_char AND
13141        p_instance_rec.serial_number <> nvl(l_curr_instance_rec.serial_number,fnd_api.g_miss_char)
13142     THEN
13143        csi_gen_utility_pvt.put_line('before csi_item_instance_vld_pvt.validate_serial_for_upd');
13144        csi_item_instance_vld_pvt.validate_serial_for_upd(
13145           p_instance_rec       => l_get_instance_rec,
13146           p_txn_rec            => p_txn_rec,
13147           p_old_serial_number  => l_curr_instance_rec.serial_number,
13148           x_return_status      => l_return_status);
13149 
13150        IF l_return_status = fnd_api.g_ret_sts_error THEN
13151           RAISE fnd_api.g_exc_error;
13152        END IF;
13153     END IF;
13154     --
13155     -- Since serial_number can't be updated to NULL the OR condition has been changed.
13156     -- With this, if p_instance_rec has a valid value then we call the serial validation routines.
13157     --
13158     -- Earlier, we were by-passing Create_Serial routine for components. This reason being Create_serial
13159     -- routine was inserting the serial number into MSN with current status as 3 (In Stores) if the
13160     -- location type is INVENTORY. For components, location type could become INVENTORY if the parent
13161     -- is received into INV. Under these cases if the serial number is inserted with status 3 then
13162     -- it would become un-usable when transacted standalone.
13163     -- Since Create_Serial routine has been fixed and we always create the serial# with status 4, we can
13164     -- call this routine for components.
13165     -- Moreover serial number could get updated for components. Under these cases, create_serial should be
13166     -- called. Otherwise, INV and IB will go out of synch.
13167     --
13168     l_ins_flag := FND_API.G_FALSE;
13169 
13170     IF l_get_instance_rec.serial_number IS NOT NULL AND
13171        l_get_instance_rec.serial_number <> FND_API.G_MISS_CHAR
13172     THEN
13173        csi_gen_utility_pvt.put_line('Calling Create_Serial...');
13174        csi_item_instance_vld_pvt.Create_Serial (
13175                          p_inv_org_id         =>  p_instance_rec.vld_organization_id,
13176                          p_inv_item_id        =>  l_get_instance_rec.inventory_item_id,
13177                          p_serial_number      =>  l_get_instance_rec.serial_number,
13178                          p_mfg_srl_num_flag   =>  l_get_instance_rec.mfg_serial_number_flag,
13179                          p_location_type_code =>  l_get_instance_rec.location_type_code,
13180                          p_ins_flag           =>  l_ins_flag,
13181                          p_lot_number         =>  l_get_instance_rec.lot_number,
13182                          p_gen_object_id      =>  l_gen_object_id,
13183                          l_return_value       =>  l_return_value);
13184 
13185            IF l_eam_item AND
13186               l_equipment_type = 1
13187            THEN
13188               p_instance_rec.equipment_gen_object_id := l_gen_object_id;
13189            END IF;
13190 
13191            IF l_return_value = FALSE
13192            THEN
13193               RAISE fnd_api.g_exc_error;
13194            ELSE
13195               p_instance_rec.mfg_serial_number_flag := 'Y';
13196            END IF;
13197 
13198            IF l_eam_item
13199            THEN
13200                IF p_instance_rec.network_asset_flag IS NULL OR
13201                   p_instance_rec.network_asset_flag = fnd_api.g_miss_char
13202                THEN
13203                   l_network_asset_flag := l_curr_instance_rec.network_asset_flag;
13204                ELSE
13205                   l_network_asset_flag := p_instance_rec.network_asset_flag;
13206                END IF;
13207 
13208                IF p_instance_rec.pn_location_id IS NULL OR
13209                   p_instance_rec.pn_location_id = fnd_api.g_miss_num
13210                THEN
13211                   l_pn_location_id := l_curr_instance_rec.pn_location_id;
13212                ELSE
13213                   l_pn_location_id := p_instance_rec.pn_location_id;
13214                END IF;
13215 
13216             csi_gen_utility_pvt.put_line( 'Calling eam_common_utilities_pvt.update_logical_asset...');
13217             csi_gen_utility_pvt.put_line( 'Inventory_item_id is       :'||l_get_instance_rec.inventory_item_id);
13218             csi_gen_utility_pvt.put_line( 'Serial_number is           :'||l_get_instance_rec.serial_number);
13219             csi_gen_utility_pvt.put_line( 'Network_asset_flag is      :'||l_network_asset_flag);
13220             csi_gen_utility_pvt.put_line( 'Pn_location_id is          :'||l_pn_location_id);
13221 			csi_gen_utility_pvt.put_line( 'Equipment_gen_object_id is :'||p_instance_rec.equipment_gen_object_id);
13222              eam_common_utilities_pvt.update_logical_asset
13223                ( p_inventory_item_id       => l_get_instance_rec.inventory_item_id
13224                 ,p_serial_number           => l_get_instance_rec.serial_number
13225                 ,p_network_asset_flag      => l_network_asset_flag
13226                 ,p_pn_location_id          => l_pn_location_id
13227                 ,p_equipment_gen_object_id => p_instance_rec.equipment_gen_object_id
13228                 ,x_return_status           => x_return_status
13229                 );
13230 
13231 	         IF NOT (x_return_status = FND_API.G_RET_STS_SUCCESS)
13232 			 THEN
13233 			    csi_gen_utility_pvt.put_line( 'Error from eam_common_utilities_pvt.update_logical_asset...');
13234 	            RAISE fnd_api.g_exc_error;
13235 	         END IF;
13236            END IF;
13237 
13238     END IF;
13239     --
13240     -- Mandated serial# uniqueness check irrespective of any change made to Item Instance.
13241     -- Because of Serial Update requrement, Update_serial_number has been moved out the IF condition
13242     -- catering to Create_Serial.
13243     -- If this is a component item instance then we just validate the serial uniqueness
13244     --
13245     IF l_get_instance_rec.serial_number IS NOT NULL AND
13246        l_get_instance_rec.serial_number <> FND_API.G_MISS_CHAR
13247     THEN
13248        IF nvl(l_get_instance_rec.instance_usage_code,'$#$') <> 'IN_RELATIONSHIP' THEN
13249 	  csi_gen_utility_pvt.put_line('Calling Validate_Srl_Num_for_Inst_Upd');
13250 	  csi_Item_Instance_Vld_pvt.Validate_Srl_Num_for_Inst_Upd(
13251 	     p_inv_org_id               => p_instance_rec.vld_organization_id,
13252 	     p_inv_item_id              => l_get_instance_rec.inventory_item_id , -- l_get
13253 	     p_serial_number            => l_get_instance_rec.serial_number,
13254 	     p_mfg_serial_number_flag   => l_get_instance_rec.mfg_serial_number_flag, -- l_get
13255 	     p_txn_rec                  => p_txn_rec,
13256 	     p_location_type_code       => l_get_instance_rec.location_type_code,
13257 	     p_srl_control_code         => l_serial_control,
13258 	     p_instance_usage_code      => l_get_instance_rec.instance_usage_code,
13259 	     p_instance_id              => p_instance_rec.instance_id,
13260 	     l_return_value             => l_return_value);
13261 	  IF l_return_value = FALSE THEN
13262  	     RAISE fnd_api.g_exc_error;
13263 	  END IF;
13264        ELSE -- If this is a component then just validate serial uniqueness
13265 	  csi_Item_Instance_Vld_pvt.Validate_ser_uniqueness
13266 	    ( p_inv_org_id      => p_instance_rec.vld_organization_id
13267 	     ,p_inv_item_id     => l_get_instance_rec.inventory_item_id
13268 	     ,p_serial_number   => l_get_instance_rec.serial_number
13269 	     ,p_instance_id     => p_instance_rec.instance_id
13270 	     ,l_return_value    => l_return_value
13271 	    );
13272 	  IF l_return_value = FALSE THEN
13273 	     --Commented out code for bug 7657438, no need to raise more than one error message
13274 	     --fnd_message.set_name('CSI','CSI_FAIL_UNIQUENESS');
13275 	     --fnd_msg_pub.add;
13276 	     RAISE fnd_api.g_exc_error;
13277 	  END IF;
13278        END IF;
13279     END IF;
13280     --
13281      -- Transaction sequencing check
13282      IF l_get_instance_rec.serial_number IS NOT NULL AND
13283         l_get_instance_rec.serial_number <> FND_API.G_MISS_CHAR AND
13284         l_ins_flag = FND_API.G_FALSE THEN
13285         l_check_instance_rec.instance_id := p_instance_rec.instance_id;
13286         l_check_instance_rec.inventory_item_id := l_get_instance_rec.inventory_item_id;
13287         l_check_instance_rec.serial_number := l_get_instance_rec.serial_number;
13288         l_check_instance_rec.lot_number := l_get_instance_rec.lot_number;
13289         l_check_instance_rec.last_txn_line_detail_id := p_instance_rec.last_txn_line_detail_id;
13290         csi_gen_utility_pvt.put_line('Calling Check_Prior_Txn');
13291         csi_Item_Instance_Vld_pvt.Check_Prior_Txn
13292                   (
13293                     p_instance_rec              => l_check_instance_rec
13294                    ,p_txn_rec                   => p_txn_rec
13295                    ,p_prior_txn_id              => l_prior_txn_id
13296                    ,p_mode                      => 'UPDATE'
13297                    ,x_return_status             => x_return_status
13298                   );
13299         IF NOT (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
13300            RAISE fnd_api.g_exc_error;
13301         END IF;
13302      END IF;
13303      --
13304       -- Revision Number Validation
13305       IF nvl(l_get_instance_rec.instance_usage_code,'$#$') <> 'IN_RELATIONSHIP' THEN
13306          IF l_get_instance_rec.inventory_revision IS NOT NULL AND
13307             l_get_instance_rec.inventory_revision <> FND_API.G_MISS_CHAR
13308          THEN
13309             csi_gen_utility_pvt.put_line('Calling Update_Revision');
13310             csi_item_instance_vld_pvt.Update_Revision
13311                (
13312                  p_inv_item_id              => l_get_instance_rec.inventory_item_id ,
13313                  p_inv_org_id               => p_instance_rec.vld_organization_id,
13314                  p_revision                 => l_get_instance_rec.inventory_revision,
13315                  l_return_value             => l_return_value,
13316                  p_rev_control_code         => l_rev_control
13317                );
13318 
13319             IF l_return_value = FALSE THEN
13320                RAISE fnd_api.g_exc_error;
13321             END IF;
13322          END IF;
13323       END IF;
13324       --quantity validation
13325         IF ((p_instance_rec.quantity <> FND_API.G_MISS_NUM ) AND
13326             (p_instance_rec.quantity IS NOT NULL ))THEN
13327            IF p_instance_rec.quantity <> l_curr_instance_rec.quantity THEN
13328              IF NOT csi_Item_Instance_Vld_pvt.Is_Quantity_Valid(
13329                          p_instance_id         => p_instance_rec.instance_id,
13330                          p_inv_organization_id => p_instance_rec.vld_organization_id,
13331                          p_quantity            => l_get_instance_rec.quantity ,
13332                          p_serial_control_code => l_serial_control,
13333                          p_location_type_code  => l_get_instance_rec.location_type_code,
13334                          p_csi_txn_type_id     => p_txn_rec.transaction_type_id,
13335                          p_current_qty         => l_curr_instance_rec.quantity,
13336                          p_flag                => 'UPDATE'
13337                          )
13338              THEN
13339                     RAISE fnd_api.g_exc_error;
13340              END IF;
13341            END IF;
13342         END IF;
13343         IF nvl(l_get_instance_rec.instance_usage_code,'$#$') <> 'IN_RELATIONSHIP' THEN
13344            IF p_instance_rec.vld_organization_id <> l_cur_instance_rec.last_vld_organization_id
13345            THEN
13346               csi_item_instance_vld_pvt.validate_org_dependent_params
13347               ( p_instance_rec   => l_get_instance_rec,
13348                 p_txn_rec        => p_txn_rec,
13349                 l_return_value   => l_return_value
13350               );
13351 
13352               IF l_return_value = FALSE
13353               THEN
13354                  FND_MESSAGE.Set_Name('CSI', 'CSI_CHANGE_VLD_ORG');
13355                  FND_MSG_PUB.ADD;
13356                  RAISE FND_API.G_EXC_ERROR;
13357               END IF;
13358            END IF;
13359         END IF;
13360 
13361       --Unit of measure validation
13362         IF ((p_instance_rec.unit_of_measure <> FND_API.G_MISS_CHAR) AND
13363             (p_instance_rec.unit_of_measure IS NOT NULL)) THEN
13364             IF ((p_instance_rec.unit_of_measure <> l_curr_instance_rec.unit_of_measure)
13365              AND (p_instance_rec.unit_of_measure <> l_uom_code)) THEN
13366               csi_item_instance_vld_pvt.Is_Valid_Uom
13367                  (
13368                    p_inv_org_id               => l_get_instance_rec.inv_master_organization_id, -- srramakr
13369                    p_inv_item_id              => l_get_instance_rec.inventory_item_id , --l_get
13370                    p_uom_code                 => p_instance_rec.unit_of_measure,
13371                    p_quantity                 => l_get_instance_rec.quantity, --l_get
13372                    p_creation_complete_flag   => l_get_instance_rec.creation_complete_flag, --l_get
13373                    l_return_value             => l_return_value
13374                  );
13375                IF l_return_value = FALSE THEN
13376                    RAISE FND_API.G_EXC_ERROR;
13377                END IF;
13378              END IF;
13379          END IF;
13380 
13381        --validation for accounting classification_code if
13382        --p_instance_rec.accounting_class_code is NULL OR <> FND_API.G_MISS_CHAR
13383        IF  ((p_instance_rec.accounting_class_code IS NULL) OR
13384             (p_instance_rec.accounting_class_code <> FND_API.G_MISS_CHAR)) THEN
13385             csi_item_instance_vld_pvt.get_valid_acct_class
13386                                ( p_instance_id            => p_instance_rec.instance_id
13387                                 ,p_curr_acct_class_code   => l_get_instance_rec.accounting_class_code
13388                                 ,p_loc_type_code          => l_get_instance_rec.location_type_code
13389                                 ,x_acct_class_code        => l_acct_class_code
13390                                );
13391           IF   (p_instance_rec.accounting_class_code IS NULL)
13392           THEN
13393           -- The following code has been commented for bug 4906588
13394           /*
13395              IF l_eam_item
13396              THEN
13397                 p_instance_rec.accounting_class_code := 'ASSET';
13398              ELSE
13399             */
13400                 p_instance_rec.accounting_class_code  := l_acct_class_code;
13401           --   END IF;
13402           ELSE
13403             IF (p_instance_rec.accounting_class_code <> l_acct_class_code) THEN
13404                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ACCOUNT_CLASS');
13405                   FND_MSG_PUB.Add;
13406                   RAISE FND_API.G_EXC_ERROR;
13407             END IF;
13408           END IF; -- not null
13409 
13410        END IF; -- not G_MISS
13411 
13412        --if the quantity is changing from something to '0' then
13413        --we change end_date to sysdate and status to 'expired'
13414          IF (p_instance_rec.quantity = 0 AND l_curr_instance_rec.quantity <> 0) THEN
13415              -- Bug 3804960 Need to honor the passed active_end_date
13416              IF p_instance_rec.active_end_date IS NULL OR
13417                 p_instance_rec.active_end_date = FND_API.G_MISS_DATE OR
13418                 p_instance_rec.active_end_date > SYSDATE THEN
13419                 p_instance_rec.active_end_date := SYSDATE;
13420               END IF;
13421               -- End of 3804960
13422               -- p_instance_rec.instance_status_id := 1; -- Commented for bug 3179587
13423               -- The following changes were made for bug 3179587.
13424               -- When update_item_instance is called with a status that has terminated_flag set to 'Y'
13425               -- then the API should assign passed status. If the passed status doesn't have
13426               -- terminated_flag set to 'Y', then by default the status will be updated with an expired status.
13427                IF p_instance_rec.instance_status_id IS NOT NULL AND
13428                   p_instance_rec.instance_status_id <> fnd_api.g_miss_num AND
13429                   (CSI_Item_Instance_vld_pvt.val_inst_ter_flag
13430                    (p_instance_rec.instance_status_id))
13431                THEN
13432                   NULL;
13433                ELSE
13434                  p_instance_rec.instance_status_id := 1;
13435                END IF;
13436          END IF;
13437 
13438        -- if the quantity is changing from '0' to '0' or fnd_api.g_miss_num, and at the same time
13439        -- if also the end_date is changing to 'NULL' or ' > SYSDATE', then the instance cannot be un-expired
13440        -- Bug 13371469
13441          IF (l_curr_instance_rec.quantity = 0)
13442           AND ((p_instance_rec.quantity = 0) OR (p_instance_rec.quantity = FND_API.G_MISS_NUM))
13443           --AND ((p_instance_rec.active_end_date IS NULL) OR (p_instance_rec.active_end_date > SYSDATE))
13444 	  AND ((p_instance_rec.active_end_date IS NULL) OR (p_instance_rec.active_end_date > l_curr_instance_rec.active_end_date))
13445          THEN
13446               FND_MESSAGE.Set_Name('CSI', 'CSI_API_CANNOT_UNEXPIRE');
13447               FND_MSG_PUB.ADD;
13448               RAISE FND_API.G_EXC_ERROR;
13449          END IF;
13450 
13451        -- added by rtalluri for Bugfix 2318211 on 04/16/02
13452        --if the end_date is changing from sysdate or a past date to 'null' or a future date,
13453        -- and if instance status is expired then change the status to null
13454          IF ((l_curr_instance_rec.active_end_date IS NOT NULL) AND
13455              (l_curr_instance_rec.active_end_date <= SYSDATE)) THEN
13456             IF ((p_instance_rec.active_end_date IS NULL ) OR
13457                ((p_instance_rec.active_end_date > SYSDATE) AND
13458                 (p_instance_rec.active_end_date <> FND_API.G_MISS_DATE))) THEN
13459                IF (p_instance_rec.instance_status_id = NULL OR
13460                    p_instance_rec.instance_status_id = FND_API.G_MISS_NUM) THEN
13461                    p_instance_rec.instance_status_id := 510;
13462                ELSIF
13463                   (p_instance_rec.instance_status_id IS NOT NULL AND
13464                    p_instance_rec.instance_status_id <> FND_API.G_MISS_NUM)
13465                THEN
13466                     IF (CSI_Item_Instance_vld_pvt.val_inst_ter_flag   --added first change
13467                                 (l_get_instance_rec.instance_status_id))
13468                     THEN
13469                         FND_MESSAGE.Set_Name('CSI', 'CSI_API_INVALID_STATUS');
13470                         FND_MSG_PUB.ADD;
13471                         RAISE FND_API.G_EXC_ERROR;
13472                     END IF;
13473                END IF;
13474             END IF;
13475          END IF;
13476        -- end of addition by rtalluri for Bugfix 2318211 on 04/16/02
13477 
13478 --validation for the instance condition id
13479          l_valid_flag := 'Y';
13480          l_exists_flag := 'N';
13481          If ((p_instance_rec.instance_condition_id is not null) AND
13482              (p_instance_rec.instance_condition_id <> FND_API.G_MISS_NUM) AND
13483              (p_instance_rec.instance_condition_id <> l_curr_instance_rec.instance_condition_id))
13484          THEN
13485             if p_generic_id_tbl.count > 0 then
13486                For gen_count in p_generic_id_tbl.FIRST .. p_generic_id_tbl.LAST
13487                Loop
13488                   if p_generic_id_tbl(gen_count).generic_id = p_instance_rec.instance_condition_id AND
13489                      p_generic_id_tbl(gen_count).id_type = 'INS_CONDITION' then
13490                      l_valid_flag := p_generic_id_tbl(gen_count).valid_flag;
13491                      l_exists_flag := 'Y';
13492                      exit;
13493                   end if;
13494                End Loop;
13495                --
13496                if l_valid_flag <> 'Y' then
13497                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ITEM_CONDITION');
13498                   FND_MESSAGE.SET_TOKEN('INSTANCE_CONDITION_ID',p_instance_rec.instance_condition_id);
13499                   FND_MSG_PUB.Add;
13500                   RAISE fnd_api.g_exc_error;
13501                end if;
13502             end if;
13503             --
13504 	       if l_exists_flag = 'N' then
13505                p_ins_count_rec.generic_count := p_ins_count_rec.generic_count + 1;
13506                p_generic_id_tbl(p_ins_count_rec.generic_count).generic_id := p_instance_rec.instance_condition_id;
13507                p_generic_id_tbl(p_ins_count_rec.generic_count).id_type := 'INS_CONDITION';
13508                         csi_item_instance_vld_pvt.Is_Valid_Condition
13509                              (
13510                                p_instance_condition_id  => p_instance_rec.instance_condition_id,
13511                                p_creation_complete_flag => l_get_instance_rec.creation_complete_flag, -- l_get
13512                                l_return_value           => l_return_value
13513                               );
13514  	                  IF l_return_value = FALSE THEN
13515                          p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'N';
13516 		                 RAISE fnd_api.g_exc_error;
13517                        ELSE
13518                          p_generic_id_tbl(p_ins_count_rec.generic_count).valid_flag := 'Y';
13519 	                END IF;
13520            end if;
13521          end if;
13522          --
13523         OPEN party_owner_rec(p_instance_rec.instance_id);
13524         FETCH party_owner_rec INTO l_party_owner_rec;
13525 
13526 		--Changes for bug 10114652
13527 		IF(nvl(p_txn_rec.inv_material_transaction_id, fnd_api.g_miss_num) <> fnd_api.g_miss_num) THEN
13528 			BEGIN
13529 				SELECT transaction_type_id INTO l_transaction_type_id
13530 				FROM mtl_material_transactions
13531 				WHERE transaction_id = p_txn_rec.inv_material_transaction_id;
13532 			EXCEPTION
13533 				WHEN NO_DATA_FOUND THEN
13534 					csi_gen_utility_pvt.put_line('No data Found while fetching txn type id, from Inv Mtl txn id');
13535 					RAISE FND_API.G_EXC_ERROR;
13536 				WHEN OTHERS THEN
13537 					csi_gen_utility_pvt.put_line('Other Exception while fetching txn type id, from Inv Mtl txn id');
13538 					RAISE FND_API.G_EXC_ERROR;
13539 			END;
13540 		-- Get serial tagging control
13541 			csi_gen_utility_pvt.put_line('Serial Tagging Control before API call 2 - '||													l_serial_tagged);
13542 			l_serial_tagged := inv_cache.get_serial_tagged (
13543 			p_inventory_item_id   => p_instance_rec.inventory_item_id,
13544 			p_organization_id     => p_instance_rec.inv_organization_id,
13545 			p_transaction_type_id => l_transaction_type_id);
13546 		END IF;
13547 
13548 		csi_gen_utility_pvt.put_line('Serial Tagging Control - '||l_serial_tagged);
13549 		IF l_serial_tagged <> 2 THEN
13550 		csi_gen_utility_pvt.put_line('l_serial_tagged is not 2');
13551 		  IF NOT (csi_item_instance_vld_pvt.Validate_Uniqueness
13552 										 (p_instance_rec     => l_get_instance_rec,
13553 										  p_party_rec        => l_party_owner_rec,
13554 										  p_srl_control_code => l_serial_control,
13555 										  p_csi_txn_type_id  => p_txn_rec.transaction_type_id))
13556 		  THEN
13557 			  RAISE FND_API.G_EXC_ERROR;
13558 		  END IF;
13559 		END IF;
13560         CLOSE party_owner_rec;
13561 
13562 --validation for the instance type
13563          l_valid_flag := 'Y';
13564          l_exists_flag := 'N';
13565          IF ((p_instance_rec.instance_type_code <> FND_API.G_MISS_CHAR) AND
13566              (p_instance_rec.instance_type_code IS NOT NULL) AND
13567              (p_instance_rec.instance_type_code <> l_curr_instance_rec.instance_type_code)) THEN
13568             If p_lookup_tbl.count > 0 then
13569                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
13570                Loop
13571                   if p_lookup_tbl(lookup_count).lookup_type = 'INSTANCE_TYPE' AND
13572                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.instance_type_code then
13573                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
13574                      l_exists_flag := 'Y';
13575                      exit;
13576                   end if;
13577                End Loop;
13578                --
13579                if l_valid_flag <> 'Y' then
13580                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_TYPE');
13581                   FND_MESSAGE.SET_TOKEN('INSTANCE_TYPE_CODE',p_instance_rec.instance_type_code);
13582                   FND_MSG_PUB.Add;
13583                   RAISE fnd_api.g_exc_error;
13584                end if;
13585             End if;
13586             --
13587             If l_exists_flag <> 'Y' then
13588                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
13589                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'INSTANCE_TYPE';
13590                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.instance_type_code;
13591                        IF NOT csi_Item_Instance_Vld_pvt.Is_Valid_Instance_Type(
13592                                          p_instance_rec.instance_type_code) THEN
13593 
13594                           p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
13595                           RAISE fnd_api.g_exc_error;
13596                        ELSE
13597                           p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
13598                        END IF;
13599              End if;
13600           END IF;
13601 
13602 --validation for the instance usage code
13603          l_valid_flag := 'Y';
13604          l_exists_flag := 'N';
13605          IF ((p_instance_rec.instance_usage_code <> FND_API.G_MISS_CHAR) AND
13606              (p_instance_rec.instance_usage_code IS NOT NULL) AND
13607              (p_instance_rec.instance_usage_code <> l_curr_instance_rec.instance_usage_code)) THEN
13608             If p_lookup_tbl.count > 0 then
13609                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
13610                Loop
13611                   if p_lookup_tbl(lookup_count).lookup_type = 'INSTANCE_USAGE' AND
13612                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.instance_usage_code then
13613                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
13614                      l_exists_flag := 'Y';
13615                      exit;
13616                   end if;
13617                End Loop;
13618                --
13619                if l_valid_flag <> 'Y' then
13620                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_USAGE_CODE');
13621                   FND_MESSAGE.SET_TOKEN('INSTANCE_USAGE_CODE',p_instance_rec.instance_usage_code);
13622                   FND_MSG_PUB.Add;
13623                   RAISE fnd_api.g_exc_error;
13624                end if;
13625             End if;
13626             --
13627             If l_exists_flag <> 'Y' then
13628                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
13629                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'INSTANCE_USAGE';
13630                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.instance_usage_code;
13631                      IF NOT csi_Item_Instance_Vld_pvt.Valid_Inst_Usage_Code(
13632                                          p_instance_rec.instance_usage_code) THEN
13633                         p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
13634                         RAISE fnd_api.g_exc_error;
13635                      ELSE
13636                         p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
13637                      END IF;
13638             END IF;
13639          END IF;
13640 
13641    -- Addition of columns for FA Integration
13642    --validation for the operational status
13643          l_valid_flag := 'Y';
13644          l_exists_flag := 'N';
13645          IF ((p_instance_rec.operational_status_code IS NOT NULL) AND
13646              (p_instance_rec.operational_status_code <> FND_API.G_MISS_CHAR) AND
13647              (p_instance_rec.operational_status_code <> l_curr_instance_rec.operational_status_code)
13648              )
13649          THEN
13650             IF p_lookup_tbl.count > 0 THEN
13651                For lookup_count in p_lookup_tbl.FIRST .. p_lookup_tbl.LAST
13652                LOOP
13653                   IF p_lookup_tbl(lookup_count).lookup_type = 'OPERATIONAL_STATUS' AND
13654                      p_lookup_tbl(lookup_count).lookup_code = p_instance_rec.operational_status_code
13655                   THEN
13656                      l_valid_flag := p_lookup_tbl(lookup_count).valid_flag;
13657                      l_exists_flag := 'Y';
13658                      exit;
13659                   END IF;
13660                End Loop;
13661                --
13662                if l_valid_flag <> 'Y' then
13663                   FND_MESSAGE.SET_NAME('CSI','CSI_OPERATIONAL_STATUS_CODE');
13664                   FND_MESSAGE.SET_TOKEN('OPERATIONAL_STATUS_CODE',p_instance_rec.operational_status_code);
13665                   FND_MSG_PUB.Add;
13666                   RAISE fnd_api.g_exc_error;
13667                end if;
13668             End if;
13669             --
13670             IF l_exists_flag <> 'Y' THEN
13671                p_ins_count_rec.lookup_count := p_ins_count_rec.lookup_count  + 1;
13672                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_type := 'OPERATIONAL_STATUS';
13673                p_lookup_tbl(p_ins_count_rec.lookup_count).lookup_code := p_instance_rec.operational_status_code;
13674                IF NOT csi_Item_Instance_Vld_pvt.Valid_operational_status(
13675                          p_instance_rec.operational_status_code) THEN
13676                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'N';
13677                   RAISE fnd_api.g_exc_error;
13678                ELSE
13679                   p_lookup_tbl(p_ins_count_rec.lookup_count).valid_flag := 'Y';
13680                END IF;
13681             END IF;
13682          ELSE
13683           IF p_instance_rec.operational_status_code IS NULL
13684           THEN
13685              p_instance_rec.operational_status_code:='NOT_USED';
13686           END IF;
13687          END IF;
13688 
13689  -- Following code has been added for operational_status_code
13690  -- If owner is Internal then
13691       l_int_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
13692       --
13693       IF l_int_party_id IS NULL THEN
13694         select internal_party_id
13695         into l_int_party_id
13696         from csi_install_parameters;
13697 
13698         IF l_int_party_id IS NULL THEN
13699          FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
13700          FND_MSG_PUB.ADD;
13701          RAISE FND_API.G_EXC_ERROR;
13702         END IF;
13703       END IF;
13704 
13705          IF p_instance_rec.owner_party_id IS NULL OR
13706             p_instance_rec.owner_party_id = fnd_api.g_miss_num
13707          THEN
13708              SELECT owner_party_id
13709                INTO p_instance_rec.owner_party_id
13710                FROM csi_item_instances
13711               WHERE instance_id=p_instance_rec.instance_id;
13712          END IF;
13713 
13714          IF p_instance_rec.owner_party_id = l_int_party_id
13715          THEN
13716 
13717 	 --Bug 15997079 : Start -- transfer to internal should clear install location
13718 		IF p_txn_rec.source_group_ref = 'TransferToInternal' THEN
13719 			p_instance_rec.install_location_type_code := null;
13720 			p_instance_rec.install_location_id        := null;
13721 		END IF;
13722 	 --Bug 15997079 : End
13723 
13724             IF    l_get_instance_rec.location_type_code='INVENTORY'
13725             THEN
13726               IF  (p_instance_rec.operational_status_code IS NOT NULL AND
13727                    p_instance_rec.operational_status_code <> fnd_api.g_miss_char AND
13728                    p_instance_rec.operational_status_code <> l_curr_instance_rec.operational_status_code) --Added for bug 9275973
13729               AND l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','IN_SERVICE')
13730               AND p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13731               THEN
13732                   p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13733               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13734                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13735               AND l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13736               AND p_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE')
13737               THEN
13738                   p_instance_rec.operational_status_code := 'NOT_USED';
13739               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13740                    (l_curr_instance_rec.operational_status_code NOT IN
13741                     ('NOT_USED','OUT_OF_SERVICE','INSTALLED','IN_SERVICE'))
13742               THEN
13743                     p_instance_rec.operational_status_code := 'NOT_USED';
13744               END IF;
13745             ELSIF l_get_instance_rec.location_type_code IN ('WIP','IN_TRANSIT')
13746             THEN
13747               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13748                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13749               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13750               AND   l_curr_instance_rec.operational_status_code = 'NOT_USED'
13751               THEN
13752                     p_instance_rec.operational_status_code := 'NOT_USED';
13753               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13754                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13755               AND   p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13756               AND   l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13757               THEN
13758                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13759               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13760                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13761               THEN
13762                     p_instance_rec.operational_status_code := 'NOT_USED';
13763               END IF;
13764             ELSIF l_get_instance_rec.location_type_code ='VENDOR_SITE'
13765             THEN
13766               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13767                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13768               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13769               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','OUT_OF_SERVICE')
13770               THEN
13771                     p_instance_rec.operational_status_code := 'NOT_USED';
13772               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13773                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13774               THEN
13775                     p_instance_rec.operational_status_code := 'NOT_USED';
13776               END IF;
13777             ELSIF l_get_instance_rec.location_type_code ='HZ_LOCATIONS'
13778             THEN
13779               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13780                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13781               AND   p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13782               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13783               THEN
13784                     p_instance_rec.operational_status_code := 'NOT_USED';
13785               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13786                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE'))
13787               THEN
13788                     p_instance_rec.operational_status_code := 'NOT_USED';
13789               END IF;  --HZ_PARTY_SITES
13790             ELSIF l_get_instance_rec.location_type_code ='HZ_PARTY_SITES'
13791             THEN
13792               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13793                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13794               AND   p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13795               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE')
13796               THEN
13797                     p_instance_rec.operational_status_code := 'NOT_USED';
13798               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13799                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE'))
13800               THEN
13801                     p_instance_rec.operational_status_code := 'NOT_USED';
13802               END IF;
13803             ELSIF l_get_instance_rec.location_type_code = 'PROJECT'
13804             THEN
13805               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13806                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13807               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13808               AND   l_curr_instance_rec.operational_status_code = 'NOT_USED'
13809               THEN
13810                     p_instance_rec.operational_status_code := 'NOT_USED';
13811               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13812                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13813               AND   p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13814               AND   l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13815               THEN
13816                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13817               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13818                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13819               AND   p_instance_rec.operational_status_code NOT IN ('OUT_OF_SERVICE','NOT_USED')
13820               AND   l_curr_instance_rec.operational_status_code = 'INSTALLED'
13821               THEN
13822                     p_instance_rec.operational_status_code := 'NOT_USED';
13823               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13824                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE','INSTALLED'))
13825               THEN
13826                     p_instance_rec.operational_status_code := 'NOT_USED';
13827               END IF;
13828             END IF;
13829          ELSE -- External party
13830             IF    l_get_instance_rec.location_type_code='INVENTORY'
13831             THEN
13832               IF  (p_instance_rec.operational_status_code IS NOT NULL AND
13833                    p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13834               AND l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','IN_SERVICE','OUT_OF_SERVICE')
13835               AND p_instance_rec.operational_status_code NOT IN ('OUT_OF_SERVICE','NOT_USED')
13836               THEN
13837                   p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13838               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13839                    (l_curr_instance_rec.operational_status_code NOT IN
13840                     ('NOT_USED','OUT_OF_SERVICE','INSTALLED','IN_SERVICE'))
13841               THEN
13842                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13843               END IF;
13844             ELSIF l_get_instance_rec.location_type_code IN ('WIP','IN_TRANSIT')
13845             THEN
13846               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13847                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13848               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13849               AND   l_curr_instance_rec.operational_status_code = 'NOT_USED'
13850               THEN
13851                     p_instance_rec.operational_status_code := 'NOT_USED';
13852               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13853                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13854               AND   p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13855               AND   l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13856               THEN
13857                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13858               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13859                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13860               THEN
13861                     p_instance_rec.operational_status_code := 'NOT_USED';
13862               END IF;
13863             ELSIF l_get_instance_rec.location_type_code ='VENDOR_SITE'
13864             THEN
13865               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13866                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13867               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13868               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','OUT_OF_SERVICE')
13869               THEN
13870                     p_instance_rec.operational_status_code := 'NOT_USED';
13871               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13872                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13873               THEN
13874                     p_instance_rec.operational_status_code := 'NOT_USED';
13875               END IF;
13876             ELSIF l_get_instance_rec.location_type_code = 'PROJECT'
13877             THEN
13878               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13879                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13880               AND   p_instance_rec.operational_status_code <> 'NOT_USED'
13881               AND   l_curr_instance_rec.operational_status_code = 'NOT_USED'
13882               THEN
13883                     p_instance_rec.operational_status_code := 'NOT_USED';
13884               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13885                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13886               AND   p_instance_rec.operational_status_code <> 'OUT_OF_SERVICE'
13887               AND   l_curr_instance_rec.operational_status_code = 'OUT_OF_SERVICE'
13888               THEN
13889                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13890               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13891                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13892               AND   p_instance_rec.operational_status_code NOT IN ('OUT_OF_SERVICE','NOT_USED')
13893               AND   l_curr_instance_rec.operational_status_code = 'INSTALLED'
13894               THEN
13895                     p_instance_rec.operational_status_code := 'NOT_USED';
13896               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13897                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE','INSTALLED'))
13898               THEN
13899                     p_instance_rec.operational_status_code := 'NOT_USED';
13900               END IF;
13901             ELSIF l_get_instance_rec.location_type_code ='HZ_PARTY_SITES'
13902             THEN
13903               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13904                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13905               AND   p_instance_rec.operational_status_code NOT IN ('INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13906               AND   l_curr_instance_rec.operational_status_code ='NOT_USED'
13907               THEN
13908                     p_instance_rec.operational_status_code := 'NOT_USED';
13909               ELSIF (p_instance_rec.operational_status_code IS NOT NULL AND
13910                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13911               AND   p_instance_rec.operational_status_code NOT IN ('INSTALLED','IN_SERVICE','NOT_USED')
13912               AND   l_curr_instance_rec.operational_status_code ='OUT_OF_SERVICE'
13913               THEN
13914                     p_instance_rec.operational_status_code := 'OUT_OF_SERVICE';
13915               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13916                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','OUT_OF_SERVICE'))
13917               THEN
13918                     p_instance_rec.operational_status_code := 'NOT_USED';
13919               END IF;
13920             ELSIF l_get_instance_rec.location_type_code ='HZ_LOCATIONS'
13921             THEN
13922               IF    (p_instance_rec.operational_status_code IS NOT NULL AND
13923                      p_instance_rec.operational_status_code <> fnd_api.g_miss_char)
13924               AND   p_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13925               AND   l_curr_instance_rec.operational_status_code IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE')
13926               THEN
13927                     p_instance_rec.operational_status_code := 'NOT_USED';
13928               ELSIF l_curr_instance_rec.operational_status_code IS NULL OR
13929                    (l_curr_instance_rec.operational_status_code NOT IN ('NOT_USED','INSTALLED','OUT_OF_SERVICE','IN_SERVICE'))
13930               THEN
13931                     p_instance_rec.operational_status_code := 'NOT_USED';
13932               END IF;
13933             END IF;
13934          END IF;
13935 
13936 
13937 
13938          IF ((p_instance_rec.purchase_currency_code IS NOT NULL) AND
13939              (p_instance_rec.purchase_currency_code <> FND_API.G_MISS_CHAR) AND
13940              (p_instance_rec.purchase_currency_code <> nvl(l_curr_instance_rec.purchase_currency_code,'$$##$$'))
13941              )
13942          THEN
13943            p_instance_rec.purchase_currency_code := UPPER(p_instance_rec.purchase_currency_code);
13944            IF NOT csi_item_instance_vld_pvt.valid_currency_code
13945                  (p_currency_code => p_instance_rec.purchase_currency_code)
13946            THEN
13947               RAISE fnd_api.g_exc_error;
13948            END IF;
13949          END IF;
13950 
13951          IF ((p_instance_rec.payables_currency_code IS NOT NULL) AND
13952              (p_instance_rec.payables_currency_code <> FND_API.G_MISS_CHAR) AND
13953              (p_instance_rec.payables_currency_code <> nvl(l_curr_instance_rec.payables_currency_code,'$$##$$'))
13954              )
13955          THEN
13956            p_instance_rec.payables_currency_code := UPPER(p_instance_rec.payables_currency_code);
13957            IF NOT csi_item_instance_vld_pvt.valid_currency_code
13958                  (p_currency_code => p_instance_rec.payables_currency_code)
13959            THEN
13960               RAISE fnd_api.g_exc_error;
13961            END IF;
13962          END IF;
13963 
13964          IF ((p_instance_rec.sales_currency_code IS NOT NULL) AND
13965              (p_instance_rec.sales_currency_code <> FND_API.G_MISS_CHAR) AND
13966              (p_instance_rec.sales_currency_code <> nvl(l_curr_instance_rec.sales_currency_code,'$$##$$'))
13967              )
13968          THEN
13969            p_instance_rec.sales_currency_code := UPPER(p_instance_rec.sales_currency_code);
13970            IF NOT csi_item_instance_vld_pvt.valid_currency_code
13971                  (p_currency_code => p_instance_rec.sales_currency_code)
13972            THEN
13973               RAISE fnd_api.g_exc_error;
13974            END IF;
13975          END IF;
13976          IF (
13977              ((l_curr_instance_rec.purchase_currency_code IS NOT NULL AND
13978                l_curr_instance_rec.purchase_unit_price IS NOT NULL) AND
13979               ((p_instance_rec.purchase_currency_code IS NULL AND
13980                 p_instance_rec.purchase_unit_price = FND_API.G_MISS_NUM) OR
13981                (p_instance_rec.purchase_unit_price IS NULL AND
13982                 p_instance_rec.purchase_currency_code = FND_API.G_MISS_CHAR))
13983               )
13984                OR
13985              (
13986               (l_curr_instance_rec.purchase_currency_code IS NULL AND
13987                l_curr_instance_rec.purchase_unit_price IS NULL) AND
13988              (((p_instance_rec.purchase_currency_code IS NOT NULL AND
13989                 p_instance_rec.purchase_currency_code <> FND_API.G_MISS_CHAR) AND
13990                (p_instance_rec.purchase_unit_price IS NULL OR
13991                 p_instance_rec.purchase_unit_price = FND_API.G_MISS_NUM)) OR
13992               ((p_instance_rec.purchase_currency_code IS NULL OR
13993                 p_instance_rec.purchase_currency_code = FND_API.G_MISS_CHAR) AND
13994                (p_instance_rec.purchase_unit_price IS NOT NULL AND
13995                 p_instance_rec.purchase_unit_price <> FND_API.G_MISS_NUM)))
13996                )
13997             )
13998             OR
13999             (
14000              ((l_curr_instance_rec.payables_currency_code IS NOT NULL AND
14001                l_curr_instance_rec.payables_unit_price IS NOT NULL) AND
14002               ((p_instance_rec.payables_currency_code IS NULL AND
14003                 p_instance_rec.payables_unit_price = FND_API.G_MISS_NUM) OR
14004                (p_instance_rec.payables_unit_price IS NULL AND
14005                 p_instance_rec.payables_currency_code = FND_API.G_MISS_CHAR))
14006               )
14007                OR
14008              (
14009               (l_curr_instance_rec.payables_currency_code IS NULL AND
14010                l_curr_instance_rec.payables_unit_price IS NULL) AND
14011              (((p_instance_rec.payables_currency_code IS NOT NULL AND
14012                 p_instance_rec.payables_currency_code <> FND_API.G_MISS_CHAR) AND
14013                (p_instance_rec.payables_unit_price IS NULL OR
14014                 p_instance_rec.payables_unit_price = FND_API.G_MISS_NUM)) OR
14015               ((p_instance_rec.payables_currency_code IS NULL OR
14016                 p_instance_rec.payables_currency_code = FND_API.G_MISS_CHAR) AND
14017                (p_instance_rec.payables_unit_price IS NOT NULL AND
14018                 p_instance_rec.payables_unit_price <> FND_API.G_MISS_NUM)))
14019                )
14020             )
14021             OR
14022             (
14023              ((l_curr_instance_rec.sales_currency_code IS NOT NULL AND
14024                l_curr_instance_rec.sales_unit_price IS NOT NULL) AND
14025               ((p_instance_rec.sales_currency_code IS NULL AND
14026                 p_instance_rec.sales_unit_price = FND_API.G_MISS_NUM) OR
14027                (p_instance_rec.sales_unit_price IS NULL AND
14028                 p_instance_rec.sales_currency_code = FND_API.G_MISS_CHAR))
14029               )
14030                OR
14031              (
14032               (l_curr_instance_rec.sales_currency_code IS NULL AND
14033                l_curr_instance_rec.sales_unit_price IS NULL) AND
14034              (((p_instance_rec.sales_currency_code IS NOT NULL AND
14035                 p_instance_rec.sales_currency_code <> FND_API.G_MISS_CHAR) AND
14036                (p_instance_rec.sales_unit_price IS NULL OR
14037                 p_instance_rec.sales_unit_price = FND_API.G_MISS_NUM)) OR
14038               ((p_instance_rec.sales_currency_code IS NULL OR
14039                 p_instance_rec.sales_currency_code = FND_API.G_MISS_CHAR) AND
14040                (p_instance_rec.sales_unit_price IS NOT NULL AND
14041                 p_instance_rec.sales_unit_price <> FND_API.G_MISS_NUM)))
14042                )
14043             )
14044          THEN
14045              FND_MESSAGE.SET_NAME('CSI','CSI_NO_PRICE_OR_CODE');
14046              FND_MSG_PUB.Add;
14047              RAISE fnd_api.g_exc_error;
14048          END IF;
14049        -- End addition of columns for FA Integration
14050 
14051        -- Start of bug fix 2151750 by sk on 02/04/02
14052 
14053        -- If location_type_code has been changing from something to INVENTORY
14054        -- then check if this record has been existing as a subject in csi_ii_relationships
14055        -- of COMPONENT-OF relationship_type_code and if exists then if
14056        -- l_get_instance_rec.instance_usage_code is not equal to
14057        -- IN_RELATIONSHIP then raise an error.
14058 
14059        IF l_curr_instance_rec.location_type_code <> 'INVENTORY' AND
14060           p_instance_rec.location_type_code = 'INVENTORY'
14061        THEN
14062           l_temp_rec := null;
14063           BEGIN
14064              SELECT 'x'
14065              INTO   l_temp_rec
14066              FROM   csi_ii_relationships
14067              WHERE  relationship_type_code = 'COMPONENT-OF'
14068              AND    subject_id = p_instance_rec.instance_id
14069              AND    (active_end_date IS NULL OR active_end_date > SYSDATE);
14070           EXCEPTION
14071             WHEN OTHERS THEN
14072                    null;
14073           END;
14074 
14075              IF ( l_get_instance_rec.instance_usage_code <> 'IN_RELATIONSHIP' OR
14076                 l_get_instance_rec.instance_usage_code IS NULL OR
14077                 l_get_instance_rec.instance_usage_code = fnd_api.g_miss_char) AND
14078                 l_temp_rec IS NOT NULL
14079              THEN
14080                    FND_MESSAGE.Set_Name('CSI', 'CSI_INVALID_USAGE_CODE');
14081                    FND_MSG_PUB.ADD;
14082                    RAISE fnd_api.g_exc_error;
14083              END IF;
14084 
14085 
14086        END IF;
14087 
14088 
14089         -- The following code has been added to disallow updating instance_usage_code
14090         -- if the instance is in IN-RELATIONSHIP.
14091         IF l_curr_instance_rec.instance_usage_code = 'IN_RELATIONSHIP' AND
14092            ( ( p_instance_rec.instance_usage_code <> 'IN_RELATIONSHIP' AND
14093                p_instance_rec.instance_usage_code IS NOT NULL AND
14094                p_instance_rec.instance_usage_code <> fnd_api.g_miss_char)
14095             OR
14096 		     ( p_instance_rec.instance_usage_code IS NULL)
14097 		    )
14098         THEN
14099                 l_temp_rec1 := NULL;
14100                 BEGIN
14101                    SELECT 'x'
14102                    INTO   l_temp_rec1
14103                    FROM   csi_ii_relationships
14104                    WHERE  relationship_type_code = 'COMPONENT-OF'
14105                    AND    subject_id = p_instance_rec.instance_id
14106                    AND    (active_end_date IS NULL OR active_end_date > SYSDATE);
14107 
14108                    IF l_temp_rec1 IS NOT NULL
14109                    THEN
14110                       FND_MESSAGE.Set_Name('CSI', 'CSI_MODIFY_USAGE_CODE');
14111                       FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_instance_rec.instance_id);
14112                       FND_MSG_PUB.ADD;
14113                       RAISE fnd_api.g_exc_error;
14114                    END IF;
14115                 EXCEPTION
14116                   WHEN NO_DATA_FOUND THEN
14117                     NULL;
14118                 END;
14119         END IF;
14120                -- End of bug fix 2151750 by sk on 02/04/02
14121 
14122      --location validation
14123      IF (
14124          (
14125           ((p_instance_rec.location_type_code IS NULL) AND (l_curr_instance_rec.location_type_code IS NOT NULL))
14126             OR
14127           (p_instance_rec.location_type_code <> FND_API.G_MISS_CHAR
14128             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))
14129          )
14130          OR
14131          (
14132           ((p_instance_rec.location_id IS NULL) AND (l_curr_instance_rec.location_id IS NOT NULL))
14133             OR
14134           (p_instance_rec.location_id <> FND_API.G_MISS_NUM
14135             AND NVL(p_instance_rec.location_id, FND_API.G_MISS_NUM) <> NVL(l_curr_instance_rec.location_id, FND_API.G_MISS_NUM))
14136          )
14137          OR
14138          (
14139           ((p_instance_rec.install_location_type_code IS NULL) AND (l_curr_instance_rec.install_location_type_code IS NOT NULL))
14140             OR
14141           (p_instance_rec.install_location_type_code <> FND_API.G_MISS_CHAR
14142             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))
14143          )
14144          OR
14145          (
14146           ((p_instance_rec.install_location_id IS NULL) AND (l_curr_instance_rec.install_location_id IS NOT NULL))
14147             OR
14148           (p_instance_rec.install_location_id <> FND_API.G_MISS_NUM
14149             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))
14150          )
14151          OR
14152          (
14153           ((p_instance_rec.inv_organization_id IS NULL) AND (l_curr_instance_rec.inv_organization_id IS NOT NULL))
14154             OR
14155           (p_instance_rec.inv_organization_id  <> FND_API.G_MISS_NUM
14156             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))
14157          )
14158          OR
14159          (
14160           ((p_instance_rec.inv_subinventory_name IS NULL) AND (l_curr_instance_rec.inv_subinventory_name IS NOT NULL))
14161             OR
14162           (p_instance_rec.inv_subinventory_name <> FND_API.G_MISS_CHAR
14163             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))
14164          )
14165          OR
14166          (
14167           ((p_instance_rec.inv_locator_id IS NULL) AND (l_curr_instance_rec.inv_locator_id IS NOT NULL))
14168             OR
14169           (p_instance_rec.inv_locator_id <> FND_API.G_MISS_NUM
14170             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))
14171          )
14172          OR
14173          (
14174           ((p_instance_rec.pa_project_id IS NULL) AND (l_curr_instance_rec.pa_project_id IS NOT NULL))
14175             OR
14176           (p_instance_rec.pa_project_id <> FND_API.G_MISS_NUM
14177             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))
14178          )
14179          OR
14180          (
14181           ((p_instance_rec.pa_project_task_id IS NULL) AND (l_curr_instance_rec.pa_project_task_id is not null))
14182             OR
14183           (p_instance_rec.pa_project_task_id <> FND_API.G_MISS_NUM
14184             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))
14185          )
14186          OR
14187          (
14188           ((p_instance_rec.in_transit_order_line_id IS NULL) AND (l_curr_instance_rec.in_transit_order_line_id IS NOT NULL))
14189             OR
14190           (p_instance_rec.in_transit_order_line_id <> FND_API.G_MISS_NUM
14191             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))
14192          )
14193          OR
14194          (
14195           ((p_instance_rec.wip_job_id IS NULL) AND (l_curr_instance_rec.wip_job_id IS NOT NULL))
14196             OR
14197           (p_instance_rec.wip_job_id <> FND_API.G_MISS_NUM
14198             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))
14199          )
14200          OR
14201          (
14202           ((p_instance_rec.po_order_line_id IS NULL) AND (l_curr_instance_rec.po_order_line_id IS NOT NULL))
14203             OR
14204           (p_instance_rec.po_order_line_id <> FND_API.G_MISS_NUM
14205             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))
14206          )
14207         ) THEN
14208 
14209 --bring has parent logic here
14210              IF csi_Item_Instance_Vld_Pvt.Instance_has_Parent(
14211                                             p_instance_id   =>  p_instance_rec.instance_id
14212                                                               ) THEN
14213                    FND_MESSAGE.Set_Name('CSI', 'CSI_API_INSTANCE_HAS_PARENT');
14214                    FND_MSG_PUB.ADD;
14215                    RAISE fnd_api.g_exc_error;
14216              END IF;
14217              -- Validate Location ID
14218              IF l_get_instance_rec.location_type_code IS NULL OR
14219                 l_get_instance_rec.location_type_code = FND_API.G_MISS_CHAR OR
14220                 l_get_instance_rec.location_id IS NULL OR
14221                 l_get_instance_rec.location_id = FND_API.G_MISS_NUM THEN
14222 		FND_MESSAGE.SET_NAME('CSI','CSI_API_LOCATION_NOT_VALID');
14223 		FND_MSG_PUB.ADD;
14224 		RAISE fnd_api.g_exc_error;
14225              END IF;
14226              --
14227 	     l_exists_flag := 'N';
14228 	     l_valid_flag := 'Y';
14229 	     IF p_location_tbl.count > 0 THEN
14230 		For loc_row in p_location_tbl.FIRST .. p_location_tbl.LAST
14231 		Loop
14232 		   IF p_location_tbl(loc_row).location_type_code = l_get_instance_rec.location_type_code AND
14233 		      p_location_tbl(loc_row).location_id = l_get_instance_rec.location_id THEN
14234 		      l_exists_flag := 'Y';
14235 		      l_valid_flag := p_location_tbl(loc_row).valid_flag;
14236 		      EXIT;
14237 		   END IF;
14238 		End Loop;
14239 		--
14240 		IF l_valid_flag <> 'Y' THEN
14241 		   FND_MESSAGE.SET_NAME('CSI','CSI_API_LOCATION_NOT_VALID');
14242 		   FND_MSG_PUB.ADD;
14243 		   RAISE fnd_api.g_exc_error;
14244 		END IF;
14245 	     END IF; -- p_location_tbl count
14246 	     --
14247 	     IF l_exists_flag <> 'Y' THEN
14248 		p_ins_count_rec.location_count := p_ins_count_rec.location_count + 1;
14249 		p_location_tbl(p_ins_count_rec.location_count).location_type_code :=
14250                                                 l_get_instance_rec.location_type_code;
14251 		p_location_tbl(p_ins_count_rec.location_count).location_id := l_get_instance_rec.location_id;
14252 		IF csi_item_instance_vld_pvt.Is_Valid_Location_ID
14253 					    (p_location_source_table => l_get_instance_rec.location_type_code
14254 					    ,p_location_id => l_get_instance_rec.location_id) THEN
14255 		   p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'Y';
14256 		ELSE
14257 		   p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'N';
14258 		   RAISE fnd_api.g_exc_error;
14259 		END IF;
14260 	     END IF;
14261              -- Validate Related Location Parameters
14262        -- Bug 11726570
14263        -- Passing last_wip_job_id when wip job is NULL
14264        -- When WIP Issued item instance is returned the wip job id must be
14265        -- made NULL, so that the same item instance can be issued to different
14266        -- WIP Job. And teh WIP Job for which it was returned must be maintained in
14267        -- last wip job id
14268 	     IF NOT csi_item_instance_vld_pvt.Validate_Related_Loc_Params
14269 			       (
14270 				 p_location_source_table => l_get_instance_rec.location_type_code,
14271 				 p_location_id           => l_get_instance_rec.location_id,
14272 				 p_organization_id       => l_get_instance_rec.inv_organization_id,
14273 				 p_subinventory          => l_get_instance_rec.inv_subinventory_name,
14274 				 p_locator_id            => l_get_instance_rec.inv_locator_id,
14275 				 p_project_id            => l_get_instance_rec.pa_project_id,
14276 				 p_task_id               => l_get_instance_rec.pa_project_task_id,
14277 				 p_sales_ord_line_id     => l_get_instance_rec.in_transit_order_line_id,
14278 				 p_wip_job_id            => l_get_instance_rec.wip_job_id,
14279 				 p_po_line_id            => l_get_instance_rec.po_order_line_id,
14280 				 p_inst_usage_code       => l_get_instance_rec.instance_usage_code
14281 			       ) THEN
14282 		RAISE fnd_api.g_exc_error;
14283 	     END IF;
14284          -- validation for accounting classification_code if
14285          -- p_instance_rec.accounting_class_code = FND_API.G_MISS_CHAR
14286 
14287              IF ( p_instance_rec.accounting_class_code = FND_API.G_MISS_CHAR ) THEN
14288 
14289                       csi_item_instance_vld_pvt.get_valid_acct_class
14290                                ( p_instance_id            => p_instance_rec.instance_id
14291                                 ,p_curr_acct_class_code   => l_get_instance_rec.accounting_class_code
14292                                 ,p_loc_type_code          => l_get_instance_rec.location_type_code
14293                                 ,x_acct_class_code        => l_acct_class_code
14294                                );
14295                -- The following code has been commented for bug 4906588
14296                /*
14297                IF l_eam_item
14298                THEN
14299                 p_instance_rec.accounting_class_code := 'ASSET';
14300                ELSE
14301                */
14302                   p_instance_rec.accounting_class_code  := l_acct_class_code;
14303              --  END IF;
14304              END IF;
14305 
14306              IF l_curr_instance_rec.location_type_code = 'IN_TRANSIT' AND
14307                 (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
14308                  BEGIN
14309                     SELECT decode(return_reason_code, 'RETURN', l_curr_instance_rec.last_oe_order_line_id, line_id),
14310                            decode(return_reason_code, 'RETURN', line_id, l_curr_instance_rec.last_oe_rma_line_id),
14311                            agreement_id
14312                     INTO   p_instance_rec.last_oe_order_line_id,
14313                            p_instance_rec.last_oe_rma_line_id,
14314                            p_instance_rec.last_oe_agreement_id
14315                     FROM   oe_order_lines_all
14316                     WHERE  line_id = l_curr_instance_rec.in_transit_order_line_id;
14317                   EXCEPTION
14318                     WHEN OTHERS THEN
14319                        NULL;
14320                   END ;
14321 
14322              ELSIF  l_curr_instance_rec.location_type_code = 'WIP' AND
14323                     (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
14324                     IF p_instance_rec.last_wip_job_id IS NULL OR
14325                        p_instance_rec.last_wip_job_id = fnd_api.g_miss_num
14326                     THEN
14327                         p_instance_rec.last_wip_job_id := l_curr_instance_rec.wip_job_id;
14328                     END IF;
14329 
14330              ELSIF  l_curr_instance_rec.location_type_code = 'PROJECT' AND
14331                    (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
14332                         p_instance_rec.last_pa_project_id := l_curr_instance_rec.pa_project_id;
14333                         p_instance_rec.last_pa_task_id := l_curr_instance_rec.pa_project_task_id;
14334 
14335              ELSIF  l_curr_instance_rec.location_type_code = 'HZ_LOCATIONS' AND
14336                    (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
14337                    IF ((l_curr_instance_rec.pa_project_id IS NOT NULL) AND
14338                        (l_curr_instance_rec.pa_project_task_id IS NOT NULL)) THEN
14339                         p_instance_rec.last_pa_project_id := l_curr_instance_rec.pa_project_id;
14340                         p_instance_rec.last_pa_task_id := l_curr_instance_rec.pa_project_task_id;
14341                    END IF;
14342 
14343              ELSIF  l_curr_instance_rec.location_type_code = 'PO' AND
14344                     (p_instance_rec.location_type_code <> l_curr_instance_rec.location_type_code) THEN
14345                         p_instance_rec.last_po_po_line_id := l_curr_instance_rec.po_order_line_id;
14346              END IF;
14347 
14348               --validating the owner
14349         OPEN party_owner_rec(p_instance_rec.instance_id);
14350         FETCH party_owner_rec INTO l_party_owner_rec;
14351               IF NOT (csi_item_instance_vld_pvt.Validate_Uniqueness
14352                                              (p_instance_rec     => l_get_instance_rec,
14353                                               p_party_rec        => l_party_owner_rec,
14354                                               p_srl_control_code => l_serial_control,
14355                                               p_csi_txn_type_id  => p_txn_rec.transaction_type_id))
14356               THEN
14357                   RAISE FND_API.G_EXC_ERROR;
14358               END IF;
14359         CLOSE party_owner_rec;
14360 
14361         END IF;
14362 
14363 
14364 
14365         -- Bug 11853931
14366         IF l_get_instance_rec.instance_id IS NOT NULL
14367            AND l_get_instance_rec.inventory_item_id IS NOT NULL
14368            AND l_get_instance_rec.inv_master_organization_id IS NOT NULL
14369         -- AND (((l_serial_control IN (2,5,6))
14370            AND (((csi_Item_Instance_Vld_pvt.Is_treated_serialized
14371                                        ( p_serial_control_code => l_serial_control
14372                                         ,p_location_type_code  => l_get_instance_rec.location_type_code
14373                                         ,p_transaction_type_id => p_txn_rec.transaction_type_id
14374                                         )) -- Added by sk on 13/9/01
14375                    AND ((l_get_instance_rec.serial_number IS NOT NULL) AND (l_get_instance_rec.serial_number <> FND_API.G_MISS_CHAR)))
14376                 -- OR     (l_serial_control NOT IN (2,5,6)))
14377                    OR   (NOT (csi_Item_Instance_Vld_pvt.Is_treated_serialized
14378                                                    ( p_serial_control_code => l_serial_control
14379                                                     ,p_location_type_code  => l_get_instance_rec.location_type_code
14380                                                     ,p_transaction_type_id => p_txn_rec.transaction_type_id
14381                                        )) ) )
14382            AND (((l_lot_control = 2)
14383                    AND ((l_get_instance_rec.lot_number IS NOT NULL) AND (l_get_instance_rec.lot_number <> FND_API.G_MISS_CHAR)))
14384                    OR     (l_lot_control <> 2))
14385            AND l_get_instance_rec.instance_status_id IS NOT NULL
14386            AND (((l_rev_control = 2)
14387                    AND ((l_get_instance_rec.inventory_revision IS NOT NULL)
14388                           AND (l_get_instance_rec.inventory_revision <> FND_API.G_MISS_CHAR)))
14389                    OR     (l_rev_control <> 2))
14390            AND l_get_instance_rec.location_type_code IS NOT NULL THEN
14391 
14392                 IF (p_instance_rec.creation_complete_flag IS NULL) OR
14393                    (p_instance_rec.creation_complete_flag = FND_API.G_MISS_CHAR) OR
14394                    (p_instance_rec.creation_complete_flag = 'N') THEN
14395 
14396                     p_instance_rec.creation_complete_flag := 'Y';
14397                 END IF;
14398 
14399         ELSE
14400                 IF  ((l_curr_instance_rec.creation_complete_flag = 'Y') OR
14401                     (nvl(p_instance_rec.creation_complete_flag, fnd_api.g_miss_char) = 'Y'))
14402                 THEN
14403                     IF ((l_serial_control = 6) and (l_get_instance_rec.serial_number is null)) THEN
14404                         p_instance_rec.creation_complete_flag := 'N';
14405                     ELSE
14406                         FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ATTRIBUTES');
14407                         FND_MSG_PUB.Add;
14408                         RAISE fnd_api.g_exc_error;
14409                     END IF;
14410                 ELSE
14411                     p_instance_rec.creation_complete_flag := 'N';
14412                 END IF;
14413         END IF;
14414 
14415         csi_gen_utility_pvt.put_line('p_instance_rec.creation_complete_flag  = ' || p_instance_rec.creation_complete_flag);
14416         --
14417         -- Check for active_end_date
14418         -- srramakr Instance Status ID should be made EXPIRED when the Active End Date is <= sysdate and
14419         -- the passed instance status not having Terminated Flag as Y.
14420         --
14421         IF (l_get_instance_rec.active_end_date <= l_sys_date) THEN
14422            -- TSO with Equipment changes.
14423            -- Nullifying the config keys
14424            p_instance_rec.config_inst_hdr_id := NULL;
14425            p_instance_rec.config_inst_rev_num := NULL;
14426            p_instance_rec.config_inst_item_id := NULL;
14427            p_instance_rec.config_valid_status := NULL;
14428            --
14429            IF NOT (CSI_Item_Instance_vld_pvt.val_inst_ter_flag(
14430                                             p_instance_rec.instance_status_id)) THEN
14431               -- Added by sguthiva for bug 2520978
14432               p_instance_rec.instance_status_id:=fnd_profile.value('CSI_SYS_TERM_INST_STATUS_ID');
14433               IF  p_instance_rec.instance_status_id IS NULL
14434                OR p_instance_rec.instance_status_id=fnd_api.g_miss_num
14435               THEN
14436                  p_instance_rec.instance_status_id := 1;
14437               END IF;
14438               -- End addition by sguthiva for bug 2520978.
14439            END IF;
14440            -- Start addition by sguthiva for bug 2416193
14441            -- Relaxing this check for RMA Receipt transaction
14442            IF p_txn_rec.transaction_type_id = 1
14443            THEN
14444               BEGIN
14445                  SELECT 'x'
14446                  INTO   l_open_service
14447                  FROM   cs_incidents_all csi,
14448                         cs_incident_statuses_b csb
14449                  WHERE  csi.incident_status_id = csb.incident_status_id
14450                  AND    csi.customer_product_id = p_instance_rec.instance_id
14451                  AND    NVL(close_flag,'N')<>'Y';
14452 
14453                  FND_MESSAGE.SET_NAME('CSI','CSI_IB_HAS_OPEN_SR');
14454                  FND_MSG_PUB.ADD;
14455                  RAISE FND_API.G_EXC_ERROR;
14456 
14457               EXCEPTION
14458                  WHEN TOO_MANY_ROWS THEN
14459                    FND_MESSAGE.SET_NAME('CSI','CSI_IB_HAS_OPEN_SR');
14460                    FND_MSG_PUB.ADD;
14461                    RAISE FND_API.G_EXC_ERROR;
14462 
14463                  WHEN NO_DATA_FOUND THEN -- modfied for bug 3693511
14464                     NULL;
14465               END;
14466            END IF;
14467            -- End addition for bug 2416193
14468 
14469 
14470         END IF;
14471         -- Validation for install location
14472         -- Start addition by sk on 02/06/02 for bug 2213922
14473         IF p_instance_rec.install_location_type_code IS NOT NULL AND
14474            p_instance_rec.install_location_type_code <> fnd_api.g_miss_char
14475         THEN
14476            IF p_instance_rec.install_location_type_code = 'HZ_PARTY_SITES' OR
14477               p_instance_rec.install_location_type_code = 'HZ_LOCATIONS' OR
14478               p_instance_rec.install_location_type_code = 'VENDOR_SITE' OR
14479               p_instance_rec.install_location_type_code = 'INTERNAL_SITE' OR
14480 	      p_instance_rec.install_location_type_code = 'HR_LOCATIONS' --4926773
14481            THEN
14482 	      IF p_instance_rec.install_location_id IS NULL OR
14483 		 p_instance_rec.install_location_id = FND_API.G_MISS_NUM THEN
14484 		 FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
14485 		 FND_MSG_PUB.ADD;
14486 		 RAISE fnd_api.g_exc_error;
14487 	      END IF;
14488 	      --
14489 	      l_exists_flag := 'N';
14490 	      l_valid_flag := 'Y';
14491 	      IF p_location_tbl.count > 0 THEN
14492 		 For loc_row in p_location_tbl.FIRST .. p_location_tbl.LAST
14493 		 Loop
14494 		    IF p_location_tbl(loc_row).location_type_code = p_instance_rec.install_location_type_code
14495 		       AND p_location_tbl(loc_row).location_id = p_instance_rec.install_location_id THEN
14496 		       l_exists_flag := 'Y';
14497 		       l_valid_flag := p_location_tbl(loc_row).valid_flag;
14498 		       EXIT;
14499 		    END IF;
14500 		 End Loop;
14501 		 --
14502 		 IF l_valid_flag <> 'Y' THEN
14503 		    FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
14504 		    FND_MSG_PUB.ADD;
14505 		    RAISE fnd_api.g_exc_error;
14506 		 END IF;
14507 	      END IF;
14508 	      --
14509 	       IF l_exists_flag <> 'Y' THEN
14510 		  p_ins_count_rec.location_count := p_ins_count_rec.location_count + 1;
14511 		  p_location_tbl(p_ins_count_rec.location_count).location_type_code :=
14512 						     p_instance_rec.install_location_type_code;
14513 		  p_location_tbl(p_ins_count_rec.location_count).location_id :=
14514 						     p_instance_rec.install_location_id;
14515 		  IF csi_item_instance_vld_pvt.Is_Valid_Location_ID
14516                                        (
14517 				         p_location_source_table => p_instance_rec.install_location_type_code
14518 					,p_location_id => p_instance_rec.install_location_id
14519                                        ) THEN
14520 		     p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'Y';
14521 		  ELSE
14522 		     p_location_tbl(p_ins_count_rec.location_count).valid_flag := 'N';
14523 		     RAISE fnd_api.g_exc_error;
14524 		  END IF;
14525 	       END IF;
14526            ELSE
14527               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INSTALL_LOC');
14528               FND_MSG_PUB.Add;
14529               RAISE FND_API.G_EXC_ERROR;
14530            END IF;
14531         END IF;
14532 
14533        -- Bug 13887020
14534        -- Validation for Install Date will be done based on value of profile
14535        -- CSI: Allow Install Dates To Be Earlier Than Ship Dates
14536 
14537         l_allow_earlier_installdt_flag := fnd_profile.value('CSI_INSTALLDT_EARLIER_THAN_SHIPDT');
14538 
14539         IF NVL(l_allow_earlier_installdt_flag, 'N') = 'N' THEN
14540 	--Validation of Install date added for Bug 8892299
14541 	IF NVL(p_instance_rec.INSTALL_DATE,fnd_api.g_miss_date) <> fnd_api.g_miss_date THEN
14542 
14543 	    BEGIN 	-- Bug 14163453
14544 		SELECT  nvl(shippable_item_flag,'N')
14545 			INTO    l_shippable_item_flag
14546 			FROM    mtl_system_items
14547 			WHERE   inventory_item_id = p_instance_rec.inventory_item_id
14548 			  AND     organization_id  =  p_instance_rec.vld_organization_id;
14549     	EXCEPTION
14550           WHEN NO_DATA_FOUND THEN
14551 		    l_shippable_item_flag := 'N';
14552         END;
14553 
14554 		csi_gen_utility_pvt.put_line('l_shippable_item_flag - ' || l_shippable_item_flag); -- Bug 14163453
14555 
14556 		BEGIN	 -- Bug 14163453
14557 		SELECT SHIPPED_DATE
14558 			INTO    l_shipped_date
14559 			FROM CSI_INSTANCE_DETAILS_V
14560 			WHERE instance_id = p_instance_rec.instance_id;
14561         EXCEPTION
14562           WHEN NO_DATA_FOUND THEN
14563 		    l_shipped_date := NULL;
14564         END;
14565 
14566 		--IF l_shippable_item_flag = 'Y' AND
14567 		--nvl(l_shipped_date, p_instance_rec.INSTALL_DATE ) > p_instance_rec.INSTALL_DATE THEN
14568                 -- Bug 10223321
14569                  csi_gen_utility_pvt.put_line('l_shippable_item_flag - ' || l_shippable_item_flag);
14570                  csi_gen_utility_pvt.put_line('l_shipped_date - ' || to_char(l_shipped_date,'DD-MON-YYYY HH24:MI:SS'));
14571                  csi_gen_utility_pvt.put_line('l_install_date - ' ||  to_char(p_instance_rec.INSTALL_DATE ,'DD-MON-YYYY HH24:MI:SS'));
14572 
14573 		IF l_shippable_item_flag = 'Y' AND
14574                  NVL(l_shipped_date, fnd_api.g_miss_date) <> fnd_api.g_miss_date AND
14575                  TRUNC(l_shipped_date) > TRUNC(p_instance_rec.INSTALL_DATE) THEN  --Changed for bug#12818015
14576 
14577 			FND_MESSAGE.Set_Name('CSI', 'CSI_INVALID_INSTALL_DATE');
14578 			FND_MSG_PUB.ADD;
14579 			RAISE FND_API.G_EXC_ERROR;
14580 		END IF;
14581 
14582 	END IF;
14583 
14584 	END IF; --bug 13887020
14585 
14586         -- End addition by sk on 02/06/02 for bug 2213922
14587         -- Added the following code for eam integration
14588            IF l_eam_item AND
14589              (p_instance_rec.active_end_date IS NOT NULL AND
14590               p_instance_rec.active_end_date <> fnd_api.g_miss_date)
14591            THEN
14592             IF NOT eam_common_utilities_pvt.check_deactivate
14593               (p_maintenance_object_id   => p_instance_rec.instance_id
14594               ,p_maintenance_object_type => l_maintenance_object_type)
14595             THEN
14596               csi_gen_utility_pvt.put_line('Error from eam_common_utilities_pvt.check_deactivate API ');
14597               RAISE fnd_api.g_exc_error;
14598             END IF;
14599            END IF;
14600         -- End code addition for eam integration
14601     -- validate instance status id
14602        IF NVL(p_instance_rec.INSTANCE_STATUS_ID,fnd_api.g_miss_num) <> fnd_api.g_miss_num
14603        THEN
14604       --debug('Validate instance status id .');
14605          csi_item_instance_vld_pvt.is_valid_status(
14606            p_instance_status_id     => p_instance_rec.INSTANCE_STATUS_ID,
14607            p_creation_complete_flag => l_creation_flag,
14608            l_return_value           => l_valid);
14609           IF NOT(l_valid)
14610           THEN
14611              RAISE fnd_api.g_exc_error;
14612           END IF;
14613         END IF;
14614 
14615         IF p_instance_rec.INSTANCE_STATUS_ID IS NOT NULL AND
14616            p_instance_rec.INSTANCE_STATUS_ID <> FND_API.G_MISS_NUM AND
14617            p_instance_rec.INSTANCE_STATUS_ID <> l_curr_instance_rec.INSTANCE_STATUS_ID
14618         THEN
14619            IF NOT csi_item_instance_vld_pvt.is_status_updateable
14620                   (p_instance_status => p_instance_rec.INSTANCE_STATUS_ID
14621                   ,p_current_status  => l_curr_instance_rec.INSTANCE_STATUS_ID)
14622            THEN
14623              RAISE fnd_api.g_exc_error;
14624            END IF;
14625         END IF;
14626 
14627     END IF;
14628 
14629      IF (p_validation_mode <> 'V')
14630      THEN
14631 
14632         -- FND_File.Put_Line(Fnd_File.LOG,'Validate Mode...!!! I should not be here');
14633         -- txn_status logic
14634         IF (nvl(p_instance_rec.location_id, fnd_api.g_miss_num) <> fnd_api.g_miss_num
14635             AND
14636             p_instance_rec.location_id <> l_curr_instance_rec.location_id)
14637            OR
14638            nvl(p_instance_rec.active_end_date, fnd_api.g_miss_date) <> fnd_api.g_miss_date
14639         THEN
14640           l_txn_status := 'PENDING';
14641         END IF;
14642 
14643        --- Update the instance with the object version number incremented by 1.
14644        p_instance_rec.object_version_number := l_curr_instance_rec.object_version_number + 1;
14645        CSI_ITEM_INSTANCES_PKG.Update_Row
14646        (  p_INSTANCE_ID                 => p_instance_rec.INSTANCE_ID,
14647           p_INSTANCE_NUMBER             => p_instance_rec.INSTANCE_NUMBER,
14648           p_EXTERNAL_REFERENCE          => p_instance_rec.EXTERNAL_REFERENCE,
14649           p_INVENTORY_ITEM_ID           => p_instance_rec.INVENTORY_ITEM_ID,
14650           p_INVENTORY_REVISION          => p_instance_rec.INVENTORY_REVISION,
14651           p_INV_MASTER_ORGANIZATION_ID  => p_instance_rec.INV_MASTER_ORGANIZATION_ID,
14652           p_SERIAL_NUMBER               => p_instance_rec.SERIAL_NUMBER,
14653           p_MFG_SERIAL_NUMBER_FLAG      => p_instance_rec.MFG_SERIAL_NUMBER_FLAG,
14654           p_LOT_NUMBER                  => p_instance_rec.LOT_NUMBER,
14655           p_QUANTITY                    => p_instance_rec.QUANTITY,
14656           p_UNIT_OF_MEASURE             => p_instance_rec.UNIT_OF_MEASURE,
14657           p_ACCOUNTING_CLASS_CODE       => p_instance_rec.ACCOUNTING_CLASS_CODE,
14658           p_INSTANCE_CONDITION_ID       => p_instance_rec.INSTANCE_CONDITION_ID,
14659           p_INSTANCE_STATUS_ID          => p_instance_rec.INSTANCE_STATUS_ID,
14660           p_CUSTOMER_VIEW_FLAG          => p_instance_rec.CUSTOMER_VIEW_FLAG,
14661           p_MERCHANT_VIEW_FLAG          => p_instance_rec.MERCHANT_VIEW_FLAG,
14662           p_SELLABLE_FLAG               => p_instance_rec.SELLABLE_FLAG,
14663           p_SYSTEM_ID                   => p_instance_rec.SYSTEM_ID,
14664           p_INSTANCE_TYPE_CODE          => p_instance_rec.INSTANCE_TYPE_CODE,
14665           p_ACTIVE_START_DATE           => FND_API.G_MISS_DATE, --p_instance_rec.ACTIVE_START_DATE,
14666           p_ACTIVE_END_DATE             => p_instance_rec.ACTIVE_END_DATE,
14667           p_LOCATION_TYPE_CODE          => p_instance_rec.LOCATION_TYPE_CODE,
14668           p_LOCATION_ID                 => p_instance_rec.LOCATION_ID,
14669           p_INV_ORGANIZATION_ID         => p_instance_rec.INV_ORGANIZATION_ID,
14670           p_INV_SUBINVENTORY_NAME       => p_instance_rec.INV_SUBINVENTORY_NAME,
14671           p_INV_LOCATOR_ID              => p_instance_rec.INV_LOCATOR_ID,
14672           p_PA_PROJECT_ID               => p_instance_rec.PA_PROJECT_ID,
14673           p_PA_PROJECT_TASK_ID          => p_instance_rec.PA_PROJECT_TASK_ID,
14674           p_IN_TRANSIT_ORDER_LINE_ID    => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID,
14675           p_WIP_JOB_ID                  => p_instance_rec.WIP_JOB_ID,
14676           p_PO_ORDER_LINE_ID            => p_instance_rec.PO_ORDER_LINE_ID,
14677           p_LAST_OE_ORDER_LINE_ID       => p_instance_rec.LAST_OE_ORDER_LINE_ID,
14678           p_LAST_OE_RMA_LINE_ID         => p_instance_rec.LAST_OE_RMA_LINE_ID,
14679           p_LAST_PO_PO_LINE_ID          => p_instance_rec.LAST_PO_PO_LINE_ID,
14680           p_LAST_OE_PO_NUMBER           => p_instance_rec.LAST_OE_PO_NUMBER,
14681           p_LAST_WIP_JOB_ID             => p_instance_rec.LAST_WIP_JOB_ID,
14682           p_LAST_PA_PROJECT_ID          => p_instance_rec.LAST_PA_PROJECT_ID,
14683           p_LAST_PA_TASK_ID             => p_instance_rec.LAST_PA_TASK_ID,
14684           p_LAST_OE_AGREEMENT_ID        => p_instance_rec.LAST_OE_AGREEMENT_ID,
14685           p_INSTALL_DATE                => p_instance_rec.INSTALL_DATE,
14686           p_MANUALLY_CREATED_FLAG       => p_instance_rec.MANUALLY_CREATED_FLAG,
14687           p_RETURN_BY_DATE              => p_instance_rec.RETURN_BY_DATE,
14688           p_ACTUAL_RETURN_DATE          => p_instance_rec.ACTUAL_RETURN_DATE,
14689           p_CREATION_COMPLETE_FLAG      => p_instance_rec.CREATION_COMPLETE_FLAG,
14690           p_COMPLETENESS_FLAG           => p_instance_rec.COMPLETENESS_FLAG,
14691           p_CONTEXT                     => p_instance_rec.CONTEXT,
14692           p_ATTRIBUTE1                  => p_instance_rec.ATTRIBUTE1,
14693           p_ATTRIBUTE2                  => p_instance_rec.ATTRIBUTE2,
14694           p_ATTRIBUTE3                  => p_instance_rec.ATTRIBUTE3,
14695           p_ATTRIBUTE4                  => p_instance_rec.ATTRIBUTE4,
14696           p_ATTRIBUTE5                  => p_instance_rec.ATTRIBUTE5,
14697           p_ATTRIBUTE6                  => p_instance_rec.ATTRIBUTE6,
14698           p_ATTRIBUTE7                  => p_instance_rec.ATTRIBUTE7,
14699           p_ATTRIBUTE8                  => p_instance_rec.ATTRIBUTE8,
14700           p_ATTRIBUTE9                  => p_instance_rec.ATTRIBUTE9,
14701           p_ATTRIBUTE10                 => p_instance_rec.ATTRIBUTE10,
14702           p_ATTRIBUTE11                 => p_instance_rec.ATTRIBUTE11,
14703           p_ATTRIBUTE12                 => p_instance_rec.ATTRIBUTE12,
14704           p_ATTRIBUTE13                 => p_instance_rec.ATTRIBUTE13,
14705           p_ATTRIBUTE14                 => p_instance_rec.ATTRIBUTE14,
14706           p_ATTRIBUTE15                 => p_instance_rec.ATTRIBUTE15,
14707           p_CREATED_BY                  => fnd_api.g_miss_num,
14708           p_CREATION_DATE               => fnd_api.g_miss_date,
14709           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID,
14710           p_LAST_UPDATE_DATE            => SYSDATE,
14711           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.CONC_LOGIN_ID,
14712           p_OBJECT_VERSION_NUMBER       => p_instance_rec.OBJECT_VERSION_NUMBER,
14713           p_LAST_TXN_LINE_DETAIL_ID     => p_instance_rec.LAST_TXN_LINE_DETAIL_ID,
14714           p_INSTALL_LOCATION_TYPE_CODE  => p_instance_rec.INSTALL_LOCATION_TYPE_CODE,
14715           p_INSTALL_LOCATION_ID         => p_instance_rec.INSTALL_LOCATION_ID,
14716           p_INSTANCE_USAGE_CODE         => p_instance_rec.INSTANCE_USAGE_CODE,
14717           p_last_vld_organization_id    => l_last_vld_organization_id,
14718           p_CONFIG_INST_HDR_ID          => p_instance_rec.CONFIG_INST_HDR_ID,
14719           p_CONFIG_INST_REV_NUM         => p_instance_rec.CONFIG_INST_REV_NUM,
14720           p_CONFIG_INST_ITEM_ID         => p_instance_rec.CONFIG_INST_ITEM_ID,
14721           p_CONFIG_VALID_STATUS         => p_instance_rec.CONFIG_VALID_STATUS,
14722           p_INSTANCE_DESCRIPTION        => p_instance_rec.INSTANCE_DESCRIPTION,
14723           p_REQUEST_ID                  => p_instance_rec.REQUEST_ID,
14724           p_PROGRAM_APPLICATION_ID      => p_instance_rec.PROGRAM_APPLICATION_ID,
14725           p_PROGRAM_ID                  => p_instance_rec.PROGRAM_ID,
14726           p_PROGRAM_UPDATE_DATE         => p_instance_rec.PROGRAM_UPDATE_DATE,
14727 	  --start of parameters addition for eam integration--
14728           p_NETWORK_ASSET_FLAG          => p_instance_rec.NETWORK_ASSET_FLAG,
14729           p_MAINTAINABLE_FLAG           => p_instance_rec.MAINTAINABLE_FLAG,
14730           p_PN_LOCATION_ID              => p_instance_rec.PN_LOCATION_ID,
14731           p_ASSET_CRITICALITY_CODE      => p_instance_rec.ASSET_CRITICALITY_CODE,
14732           p_CATEGORY_ID                 => p_instance_rec.CATEGORY_ID,
14733           p_EQUIPMENT_GEN_OBJECT_ID     => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID,
14734           p_INSTANTIATION_FLAG          => p_instance_rec.INSTANTIATION_FLAG,
14735           p_LINEAR_LOCATION_ID          => p_instance_rec.LINEAR_LOCATION_ID,
14736           p_OPERATIONAL_LOG_FLAG        => p_instance_rec.OPERATIONAL_LOG_FLAG,
14737           p_CHECKIN_STATUS              => p_instance_rec.CHECKIN_STATUS,
14738           p_SUPPLIER_WARRANTY_EXP_DATE  => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE,
14739           p_ATTRIBUTE16                 => p_instance_rec.ATTRIBUTE16,
14740           p_ATTRIBUTE17                 => p_instance_rec.ATTRIBUTE17,
14741           p_ATTRIBUTE18                 => p_instance_rec.ATTRIBUTE18,
14742           p_ATTRIBUTE19                 => p_instance_rec.ATTRIBUTE19,
14743           p_ATTRIBUTE20                 => p_instance_rec.ATTRIBUTE20,
14744           p_ATTRIBUTE21                 => p_instance_rec.ATTRIBUTE21,
14745           p_ATTRIBUTE22                 => p_instance_rec.ATTRIBUTE22,
14746           p_ATTRIBUTE23                 => p_instance_rec.ATTRIBUTE23,
14747           p_ATTRIBUTE24                 => p_instance_rec.ATTRIBUTE24,
14748           p_ATTRIBUTE25                 => p_instance_rec.ATTRIBUTE25,
14749           p_ATTRIBUTE26                 => p_instance_rec.ATTRIBUTE26,
14750           p_ATTRIBUTE27                 => p_instance_rec.ATTRIBUTE27,
14751           p_ATTRIBUTE28                 => p_instance_rec.ATTRIBUTE28,
14752           p_ATTRIBUTE29                 => p_instance_rec.ATTRIBUTE29,
14753           p_ATTRIBUTE30                 => p_instance_rec.ATTRIBUTE30,
14754 	  --end of parameters addition for eam integration--
14755    -- Addition of columns for FA Integration
14756           p_PURCHASE_UNIT_PRICE         => p_instance_rec.PURCHASE_UNIT_PRICE,
14757           p_PURCHASE_CURRENCY_CODE      => p_instance_rec.PURCHASE_CURRENCY_CODE,
14758           p_PAYABLES_UNIT_PRICE         => p_instance_rec.PAYABLES_UNIT_PRICE,
14759           p_PAYABLES_CURRENCY_CODE      => p_instance_rec.PAYABLES_CURRENCY_CODE,
14760           p_SALES_UNIT_PRICE            => p_instance_rec.SALES_UNIT_PRICE,
14761           p_SALES_CURRENCY_CODE         => p_instance_rec.SALES_CURRENCY_CODE,
14762           p_OPERATIONAL_STATUS_CODE     => p_instance_rec.OPERATIONAL_STATUS_CODE,
14763     -- End addition of columns for FA Integration
14764           p_SOURCE_CODE                 => p_instance_rec.SOURCE_CODE -- Added Code for Siebel Genesis Project
14765           );
14766 
14767     IF l_eam_item
14768     THEN
14769       IF p_instance_rec.department_id IS NOT NULL OR
14770          p_instance_rec.wip_accounting_class IS NOT NULL OR
14771          p_instance_rec.area_id IS NOT NULL
14772       THEN
14773            eam_maint_attributes_pub.update_maint_attributes
14774                 ( p_api_version           => 1.0
14775                  ,p_init_msg_list         => FND_API.G_FALSE
14776                  ,p_commit                => FND_API.G_FALSE
14777                  ,p_validation_level      => fnd_api.g_valid_level_full
14778                  ,p_instance_id           => p_instance_rec.instance_id
14779                  ,p_owning_department_id  => p_instance_rec.department_id
14780                  ,p_accounting_class_code => p_instance_rec.wip_accounting_class
14781                  ,p_area_id               => p_instance_rec.area_id
14782                  ,x_return_status         => x_return_status
14783                  ,x_msg_count             => x_msg_count
14784                  ,x_msg_data              => x_msg_data);
14785 
14786            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
14787            THEN
14788               csi_gen_utility_pvt.put_line('Error from eam_maint_attributes_pub.update_maint_attributes..');
14789            RAISE FND_API.G_EXC_ERROR;
14790            END IF;
14791       END IF;
14792     END IF;
14793 -- calling the Counters API to associate counters to an instance
14794 -- Added to restrict the counter instantiation for an item in 'INVENTORY', by rtalluri for the enh. 2308703.
14795 -- Start of Fix for Bug: 2411622 by rtalluri - 06/25/02
14796    csi_gen_utility_pvt.put_line('p_instance_rec.quantity is '||to_char(p_instance_rec.quantity));
14797    csi_gen_utility_pvt.put_line('l_curr_instance_rec.quantity is '||to_char(l_curr_instance_rec.quantity));
14798    csi_gen_utility_pvt.put_line('p_instance_rec.location_type_code is '||p_instance_rec.location_type_code);
14799    csi_gen_utility_pvt.put_line('l_get_instance_rec.location_type_code is '||l_get_instance_rec.location_type_code);
14800    csi_gen_utility_pvt.put_line('p_instance_rec.accounting_class_code is '||p_instance_rec.accounting_class_code);
14801    csi_gen_utility_pvt.put_line('l_curr_instance_rec.accounting_class_code is '||l_curr_instance_rec.accounting_class_code);
14802    csi_gen_utility_pvt.put_line('l_serial_control is '||l_serial_control);
14803    --
14804    -- srramakr Bug # 2484611. Eliminated counter instantiation for serialized items since it is already
14805    -- instantiated when the instance is in INV. Also used Accounting_class_code in the check for the case
14806    -- where shipping finds exact match in staging. (It just updates in this case).
14807    --l_curr_instance_rec.network_asset_flag
14808 IF ( (p_instance_rec.quantity <> FND_API.G_MISS_NUM) AND
14809      (p_instance_rec.quantity IS NOT NULL) AND
14810      (l_serial_control not in (2,5)) AND
14811      (NVL(l_curr_instance_rec.network_asset_flag,'N')<>'Y' AND
14812       NVL(p_instance_rec.network_asset_flag,'N')<>'Y')
14813     )
14814 THEN -- Since for Serial control the counter gets instantiated in INV
14815   IF p_instance_rec.quantity = 1 THEN
14816     IF ( (p_instance_rec.quantity <> l_curr_instance_rec.quantity) OR
14817 	    (p_instance_rec.accounting_class_code = 'CUST_PROD' AND
14818 	     p_instance_rec.accounting_class_code <> l_curr_instance_rec.accounting_class_code) ) THEN
14819      IF NOT((l_serial_control IN (1,6)) AND
14820             (l_get_instance_rec.location_type_code = 'INVENTORY')) THEN
14821       -- Since the replacement API CSI_COUNTER_TEMPLATE_PUB
14822       -- for  CS_Counters_PUB.Ctr_Grp_Template_Exists
14823       -- does not provide a function Ctr_Grp_Template_Exists,
14824       -- Hence writing the following code...
14825         --l_counter_group_id := NULL;
14826         BEGIN
14827           SELECT COUNT(*)
14828             INTO l_counter_group_id
14829             FROM csi_ctr_item_associations
14830            WHERE inventory_item_id = l_get_instance_rec.inventory_item_id
14831              AND ROWNUM=1;
14832         EXCEPTION
14833           WHEN NO_DATA_FOUND THEN
14834            NULL;
14835         END;
14836 --       IF CS_Counters_PUB.Ctr_Grp_Template_Exists(l_get_instance_rec.inventory_item_id) THEN
14837 	   IF l_counter_group_id <>0
14838        THEN
14839 	 l_exists := 'N';
14840 	 BEGIN
14841 
14842         SELECT  'Y'
14843           INTO  l_exists
14844           FROM  csi_counter_associations
14845          WHERE  source_object_id = p_instance_rec.instance_id
14846            AND  source_object_code = 'CP';
14847 
14848 	 EXCEPTION
14849 	    WHEN NO_DATA_FOUND THEN
14850 	       l_exists := 'N';
14851 	    WHEN OTHERS THEN
14852 	       l_exists := 'Y';
14853 	 END;
14854          IF l_exists = 'N' THEN
14855 
14856           FND_File.Put_Line(Fnd_File.LOG,'Calling counter instantiate');
14857 
14858           csi_gen_utility_pvt.put_line('Calling Autoinstantiate counters');
14859 
14860            csi_counter_template_pub.autoinstantiate_counters
14861            ( p_api_version                => 1.0
14862             ,p_init_msg_list              => FND_API.G_FALSE
14863             ,p_commit                     => FND_API.G_FALSE
14864             ,x_return_status              => x_return_status
14865             ,x_msg_count                  => x_msg_count
14866             ,x_msg_data                   => x_msg_data
14867             ,p_source_object_id_template  => l_get_instance_rec.inventory_item_id
14868             ,p_source_object_id_instance  => p_instance_rec.instance_id
14869             ,x_ctr_id_template            => l_ctr_id_template
14870             ,x_ctr_id_instance            => l_ctr_id_instance
14871             ,x_ctr_grp_id_template        => l_ctr_grp_id_template
14872             ,x_ctr_grp_id_instance        => l_ctr_grp_id_instance
14873             ,p_organization_id            => l_last_vld_organization_id -- srramakr. should pass the organization_id
14874             );
14875 
14876            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
14877            THEN
14878              FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_COUNTER_ASSOCIATION');
14879              FND_MESSAGE.SET_TOKEN('COUNTER','CSI_COUNTER_TEMPLATE_PUB.AUTOINSTANTIATE_COUNTERS');
14880              FND_MSG_PUB.Add;
14881              RAISE FND_API.G_EXC_ERROR;
14882            END IF;
14883           END IF;
14884 
14885       -- srramakr Bug # 2255391. In CTO, since the configured item is created as a part of Sales Order
14886       -- processing, there is no way a counter gets attached to this new item. In order to attach the counter,
14887       -- we look at the base model and use its counter group for the configured item. After attaching it,
14888       -- we call the Autoinstantiate API.
14889       ELSE  -- Check for the Base Model
14890         l_base_item_id := null;
14891         Begin
14892            select base_item_id
14893            into l_base_item_id
14894            from MTL_SYSTEM_ITEMS_B
14895            where inventory_item_id = l_get_instance_rec.inventory_item_id
14896            and   organization_id = l_last_vld_organization_id;
14897         Exception
14898            when no_data_found then
14899              null;
14900            when others then
14901              null;
14902         End;
14903 	    --
14904         IF l_base_item_id is not null THEN
14905           -- call the Counter Grp association API for the Configured Item
14906           For ctr_rec in CTR_GROUP(l_base_item_id)
14907           Loop
14908              Begin
14909                IF(ctr_rec.group_id is not null) then
14910                 l_ctr_item_associations_rec.group_id          := ctr_rec.group_id;
14911 	       END IF;
14912 	       IF(ctr_rec.counter_id is not null) then
14913                 l_ctr_item_associations_rec.counter_id          := ctr_rec.counter_id;
14914 	       END IF;
14915                l_ctr_item_associations_rec.inventory_item_id := p_instance_rec.inventory_item_id;
14916 	       IF(ctr_rec.associated_to_group = 'Y') THEN
14917                 l_ctr_item_associations_rec.associated_to_group := ctr_rec.associated_to_group;-- Added for bug 9142776
14918 	       END IF;
14919 
14920              csi_counter_template_pub.create_item_association
14921                (p_api_version               => 1.0
14922                ,p_commit                    => fnd_api.g_false
14923                ,p_init_msg_list             => fnd_api.g_false
14924                ,p_validation_level          => p_validation_level
14925                ,p_ctr_item_associations_rec => l_ctr_item_associations_rec
14926                ,x_return_status             => x_return_status
14927                ,x_msg_count                 => x_msg_count
14928                ,x_msg_data                  => x_msg_data
14929                );
14930 	     l_counter_group_id    := 1; -- Added for bug 9142776
14931          END;
14932           End Loop;
14933 	    -- Call Autoinstantiate Counters
14934 --         IF CS_Counters_PUB.Ctr_Grp_Template_Exists(l_get_instance_rec.inventory_item_id) THEN
14935 	   IF l_counter_group_id <> 0
14936        THEN
14937 
14938          csi_counter_template_pub.autoinstantiate_counters
14939          ( p_api_version                => 1.0
14940           ,p_init_msg_list              => FND_API.G_FALSE
14941           ,p_commit                     => FND_API.G_FALSE
14942           ,x_return_status              => x_return_status
14943           ,x_msg_count                  => x_msg_count
14944           ,x_msg_data                   => x_msg_data
14945           ,p_source_object_id_template  => l_get_instance_rec.inventory_item_id
14946           ,p_source_object_id_instance  => p_instance_rec.instance_id
14947           ,x_ctr_id_template            => l_ctr_id_template
14948           ,x_ctr_id_instance            => l_ctr_id_instance
14949           ,x_ctr_grp_id_template        => l_ctr_grp_id_template
14950           ,x_ctr_grp_id_instance        => l_ctr_grp_id_instance
14951           ,p_organization_id            => l_last_vld_organization_id -- srramakr. should pass the organization_id
14952           );
14953 	         IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
14954 		       FND_MESSAGE.SET_NAME('CSI','CSI_API_NO_COUNTER_ASSOCIATION');
14955                FND_MESSAGE.SET_TOKEN('COUNTER','CSI_COUNTER_TEMPLATE_PUB.AUTOINSTANTIATE_COUNTERS');
14956 		       FND_MSG_PUB.Add;
14957 		       RAISE FND_API.G_EXC_ERROR;
14958 	         END IF;
14959 	       END IF; -- COunter template existance check for the new item
14960 	     END IF; -- Base Item ID check
14961        END IF;  -- Ctr Group check
14962      END IF; -- serial chk.
14963    END IF; --check for db qty and passed qty
14964  ELSE -- for qty > 1
14965    NULL;
14966    -- Delete counters is commented for Bug # 2978942.
14967  END IF; -- qty check
14968 END IF; -- g_miss check
14969 -- End of Fix for Bug: 2411622 by rtalluri - 06/25/02
14970 
14971 -- Moving counter update code from above
14972 	 l_exists := 'N';
14973        BEGIN
14974         SELECT  'Y'
14975           INTO  l_exists
14976           FROM  csi_counter_associations
14977          WHERE  source_object_id = p_instance_rec.instance_id
14978            AND  source_object_code = 'CP';
14979        EXCEPTION
14980         WHEN NO_DATA_FOUND THEN
14981            l_exists := 'N';
14982         WHEN OTHERS THEN
14983            l_exists := 'Y';
14984        END;
14985       csi_gen_utility_pvt.put_line('Value of l_exists '||l_exists);
14986 
14987          IF l_exists='Y' AND
14988             l_eam_item AND
14989             (NVL(l_curr_instance_rec.network_asset_flag,'N')<>'Y' AND
14990              NVL(p_instance_rec.network_asset_flag,'N')<>'Y')
14991          THEN
14992           IF l_cur_instance_rec.last_vld_organization_id <> l_get_instance_rec.vld_organization_id
14993           THEN
14994              SELECT maint_organization_id
14995                INTO l_curr_maint_org_id
14996                FROM mtl_parameters
14997               WHERE organization_id = l_cur_instance_rec.last_vld_organization_id;
14998 
14999              SELECT maint_organization_id
15000                INTO l_latest_maint_org_id
15001                FROM mtl_parameters
15002               WHERE organization_id = l_get_instance_rec.vld_organization_id;
15003               l_ctr:=1;
15004               csi_gen_utility_pvt.put_line('There is a change in vld organization...');
15005               csi_gen_utility_pvt.put_line('Value of current maint org is :'||l_curr_maint_org_id);
15006               csi_gen_utility_pvt.put_line('Value of new maint org is     :'||l_latest_maint_org_id);
15007              IF NVL(l_curr_maint_org_id,fnd_api.g_miss_num) <>
15008                 NVL(l_latest_maint_org_id,fnd_api.g_miss_num)
15009              THEN
15010                FOR l_upd_ctr_assn_csr IN upd_ctr_assn_csr(p_instance_rec.instance_id)
15011                LOOP
15012                 l_ctr_associations_tbl(l_ctr).instance_association_id :=
15013                 l_upd_ctr_assn_csr.instance_association_id;
15014 
15015                 l_ctr_associations_tbl(l_ctr).source_object_id :=
15016                 l_upd_ctr_assn_csr.source_object_id;
15017 
15018                 l_ctr_associations_tbl(l_ctr).counter_id :=
15019                 l_upd_ctr_assn_csr.counter_id;
15020 
15021                 l_ctr_associations_tbl(l_ctr).object_version_number :=
15022                 l_upd_ctr_assn_csr.object_version_number;
15023 
15024                 l_ctr_associations_tbl(l_ctr).maint_organization_id :=
15025                 l_latest_maint_org_id;
15026 
15027                 --Added for bug 6963602, during migration to R12, the start_date_active for entries in
15028                 --csi_counter_associations table are not properly populated, in that case, use the
15029                 --active_start_date for the associated item instance
15030                 IF l_upd_ctr_assn_csr.start_date_active IS NULL THEN
15031                   BEGIN
15032                     SELECT active_start_date
15033                     INTO   l_ctr_associations_tbl(l_ctr).start_date_active
15034                     FROM   csi_item_instances
15035                     WHERE  instance_id=p_instance_rec.instance_id;
15036                   EXCEPTION
15037                     WHEN NO_DATA_FOUND THEN
15038                       l_ctr_associations_tbl(l_ctr).start_date_active := p_instance_rec.active_start_date;
15039                     WHEN OTHERS THEN
15040                       l_ctr_associations_tbl(l_ctr).start_date_active := NULL;
15041                   END;
15042                 ELSE
15043                   l_ctr_associations_tbl(l_ctr).start_date_active := l_upd_ctr_assn_csr.start_date_active;
15044                 END IF;
15045 
15046                 l_ctr:=l_ctr+1;
15047                END LOOP;
15048 
15049                IF l_ctr_associations_tbl.COUNT >0
15050                THEN
15051                  csi_gen_utility_pvt.put_line('Calling update counter associations.');
15052                  CSI_COUNTER_PUB.update_ctr_associations
15053                   (p_api_version               => 1.0
15054                   ,p_commit                    => FND_API.G_FALSE
15055                   ,p_init_msg_list             => FND_API.G_FALSE
15056                   ,p_validation_level          => p_validation_level
15057                   ,p_counter_associations_tbl  => l_ctr_associations_tbl
15058                   ,x_return_status             => x_return_status
15059                   ,x_msg_count                 => x_msg_count
15060                   ,x_msg_data                  => x_msg_data
15061                   );
15062                  IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
15063                  THEN
15064                   csi_gen_utility_pvt.put_line('Error from csi_counter_pub.update_ctr_associations..');
15065                   RAISE FND_API.G_EXC_ERROR;
15066                  END IF;
15067                END IF;
15068              END IF;
15069           END IF;
15070          END IF;
15071 -- Ends here
15072 
15073 
15074 -- calling the transaction api
15075         CSI_TRANSACTIONS_PVT.Create_transaction
15076           (
15077              p_api_version            => p_api_version
15078             ,p_commit                 => p_commit
15079             ,p_init_msg_list          => p_init_msg_list
15080             ,p_validation_level       => p_validation_level
15081             ,p_Success_IF_Exists_Flag => 'Y'
15082             ,p_transaction_rec        => p_txn_rec
15083             ,x_return_status          => x_return_status
15084             ,x_msg_count              => x_msg_count
15085             ,x_msg_data               => x_msg_data
15086           );
15087 
15088          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
15089               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
15090               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
15091               FND_MSG_PUB.Add;
15092               RAISE FND_API.G_EXC_ERROR;
15093          END IF;
15094 
15095 -- Get the full_dump_frequency from csi_install_parameter
15096        --
15097       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
15098           csi_gen_utility_pvt.populate_install_param_rec;
15099        END IF;
15100        --
15101        l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
15102        --
15103        IF l_full_dump_frequency IS NULL THEN
15104           FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
15105           FND_MSG_PUB.ADD;
15106           RAISE FND_API.G_EXC_ERROR;
15107        END IF;
15108        --
15109 -- Get a unique history item instance id from the sequence
15110 -- l_csi_item_instance_h_id :=  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
15111 
15112 
15113        select mod(p_instance_rec.object_version_number,l_full_dump_frequency)
15114        into   l_mod_value
15115        from   dual;
15116 
15117      -- Start of modification for Bug#2547034 on 09/20/02 - rtalluri
15118       BEGIN
15119         SELECT  instance_history_id
15120         INTO    l_ins_hist_id
15121         FROM    csi_item_instances_h h
15122         WHERE   h.transaction_id = p_txn_rec.transaction_id
15123         AND     h.instance_id = p_instance_rec.instance_id;
15124 
15125         OPEN   ins_hist_csr(l_ins_hist_id);
15126         FETCH  ins_hist_csr INTO l_ins_hist_csr ;
15127         CLOSE  ins_hist_csr;
15128 
15129         IF l_ins_hist_csr.full_dump_flag = 'Y'
15130         THEN
15131           CSI_ITEM_INSTANCES_H_PKG.Update_Row
15132            ( p_INSTANCE_HISTORY_ID              => l_ins_hist_id
15133             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
15134             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
15135             ,p_OLD_INSTANCE_NUMBER               => fnd_api.g_miss_char
15136             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
15137             ,p_OLD_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
15138             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
15139             ,p_OLD_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
15140             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
15141             ,p_OLD_INVENTORY_REVISION            => fnd_api.g_miss_char
15142             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
15143             ,p_OLD_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
15144             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
15145             ,p_OLD_SERIAL_NUMBER                 => fnd_api.g_miss_char
15146             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
15147             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
15148             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
15149             ,p_OLD_LOT_NUMBER                    => fnd_api.g_miss_char
15150             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
15151             ,p_OLD_QUANTITY                      => fnd_api.g_miss_num
15152             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
15153             ,p_OLD_UNIT_OF_MEASURE               => fnd_api.g_miss_char
15154             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
15155             ,p_OLD_ACCOUNTING_CLASS_CODE         => fnd_api.g_miss_char
15156             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
15157             ,p_OLD_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
15158             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
15159             ,p_OLD_INSTANCE_STATUS_ID            => fnd_api.g_miss_num
15160             ,p_NEW_INSTANCE_STATUS_ID            => p_instance_rec.INSTANCE_STATUS_ID
15161             ,p_OLD_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
15162             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
15163             ,p_OLD_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
15164             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
15165             ,p_OLD_SELLABLE_FLAG                 => fnd_api.g_miss_char
15166             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
15167             ,p_OLD_SYSTEM_ID                     => fnd_api.g_miss_num
15168             ,p_NEW_SYSTEM_ID                     => p_instance_rec.SYSTEM_ID
15169             ,p_OLD_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
15170             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
15171             ,p_OLD_ACTIVE_START_DATE             => fnd_api.g_miss_date
15172             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
15173             ,p_OLD_ACTIVE_END_DATE               => fnd_api.g_miss_date
15174             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
15175             ,p_OLD_LOCATION_TYPE_CODE            => fnd_api.g_miss_char
15176             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
15177             ,p_OLD_LOCATION_ID                   => fnd_api.g_miss_num
15178             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
15179             ,p_OLD_INV_ORGANIZATION_ID           => fnd_api.g_miss_num
15180             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
15181             ,p_OLD_INV_SUBINVENTORY_NAME         => fnd_api.g_miss_char
15182             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
15183             ,p_OLD_INV_LOCATOR_ID                => fnd_api.g_miss_num
15184             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
15185             ,p_OLD_PA_PROJECT_ID                 => fnd_api.g_miss_num
15186             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
15187             ,p_OLD_PA_PROJECT_TASK_ID            => fnd_api.g_miss_num
15188             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
15189             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => fnd_api.g_miss_num
15190             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
15191             ,p_OLD_WIP_JOB_ID                    => fnd_api.g_miss_num
15192             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
15193             ,p_OLD_PO_ORDER_LINE_ID              => fnd_api.g_miss_num
15194             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
15195             ,p_OLD_COMPLETENESS_FLAG             => fnd_api.g_miss_char
15196             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
15197             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
15198             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
15199             ,P_OLD_CONTEXT                       => fnd_api.g_miss_char
15200             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
15201             ,p_OLD_ATTRIBUTE1                    => fnd_api.g_miss_char
15202             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
15203             ,p_OLD_ATTRIBUTE2                    => fnd_api.g_miss_char
15204             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
15205             ,p_OLD_ATTRIBUTE3                    => fnd_api.g_miss_char
15206             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
15207             ,p_OLD_ATTRIBUTE4                    => fnd_api.g_miss_char
15208             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
15209             ,p_OLD_ATTRIBUTE5                    => fnd_api.g_miss_char
15210             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
15211             ,p_OLD_ATTRIBUTE6                    => fnd_api.g_miss_char
15212             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
15213             ,p_OLD_ATTRIBUTE7                    => fnd_api.g_miss_char
15214             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
15215             ,p_OLD_ATTRIBUTE8                    => fnd_api.g_miss_char
15216             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
15217             ,p_OLD_ATTRIBUTE9                    => fnd_api.g_miss_char
15218             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
15219             ,p_OLD_ATTRIBUTE10                   => fnd_api.g_miss_char
15220             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
15221             ,p_OLD_ATTRIBUTE11                   => fnd_api.g_miss_char
15222             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
15223             ,p_OLD_ATTRIBUTE12                   => fnd_api.g_miss_char
15224             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
15225             ,p_OLD_ATTRIBUTE13                   => fnd_api.g_miss_char
15226             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
15227             ,p_OLD_ATTRIBUTE14                   => fnd_api.g_miss_char
15228             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
15229             ,p_OLD_ATTRIBUTE15                   => fnd_api.g_miss_char
15230             ,p_CREATED_BY                        => fnd_api.g_miss_num
15231             ,p_CREATION_DATE                     => fnd_api.g_miss_date
15232             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
15233             ,p_LAST_UPDATE_DATE                  => SYSDATE
15234             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
15235             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
15236             ,p_OLD_INST_LOC_TYPE_CODE            => fnd_api.g_miss_char
15237             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
15238             ,p_OLD_INST_LOC_ID                   => fnd_api.g_miss_num
15239             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
15240             ,p_OLD_INST_USAGE_CODE               => fnd_api.g_miss_char
15241             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
15242             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
15243             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => l_last_vld_organization_id
15244             ,p_OLD_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
15245             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
15246             ,p_OLD_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
15247             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
15248             ,p_OLD_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
15249             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
15250             ,p_OLD_INSTALL_DATE                  => fnd_api.g_miss_date
15251             ,p_NEW_INSTALL_DATE                  => p_instance_rec.INSTALL_DATE
15252             ,p_OLD_RETURN_BY_DATE                => fnd_api.g_miss_date
15253             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
15254             ,p_OLD_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
15255             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
15256             ,p_OLD_LAST_OE_AGREEMENT_ID          => fnd_api.g_miss_num
15257             ,p_NEW_LAST_OE_AGREEMENT_ID          => p_instance_rec.LAST_OE_AGREEMENT_ID
15258 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => fnd_api.g_miss_num
15259 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
15260 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => fnd_api.g_miss_num
15261 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => p_instance_rec.LAST_OE_RMA_LINE_ID
15262 	    ,p_OLD_LAST_WIP_JOB_ID               => fnd_api.g_miss_num
15263 	    ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
15264 	    ,p_OLD_LAST_PO_PO_LINE_ID            => fnd_api.g_miss_num
15265 	    ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
15266 	    ,p_OLD_LAST_PA_PROJECT_ID            => fnd_api.g_miss_num
15267 	    ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
15268 	    ,p_OLD_LAST_PA_TASK_ID          => fnd_api.g_miss_num
15269 	    ,p_NEW_LAST_PA_TASK_ID          => p_instance_rec.LAST_PA_TASK_ID
15270 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => fnd_api.g_miss_num
15271 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
15272 	    ,p_OLD_LAST_OE_PO_NUMBER             => fnd_api.g_miss_char
15273 	    ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
15274  	    --start of parameters addition for eam integration--
15275 	    ,p_OLD_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
15276 	    ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
15277 	    ,p_OLD_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
15278 	    ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
15279 	    ,p_OLD_PN_LOCATION_ID                 => fnd_api.g_miss_num
15280 	    ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
15281 	    ,p_OLD_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
15282 	    ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
15283 	    ,p_OLD_CATEGORY_ID                    => fnd_api.g_miss_num
15284 	    ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
15285 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
15286 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
15287 	    ,p_OLD_INSTANTIATION_FLAG             => fnd_api.g_miss_char
15288 	    ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
15289 	    ,p_OLD_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
15290 	    ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
15291 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
15292 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
15293 	    ,p_OLD_CHECKIN_STATUS                 => fnd_api.g_miss_num
15294 	    ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
15295 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
15296 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
15297             ,p_OLD_ATTRIBUTE16                    => fnd_api.g_miss_char
15298             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
15299             ,p_OLD_ATTRIBUTE17                    => fnd_api.g_miss_char
15300             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
15301             ,p_OLD_ATTRIBUTE18                    => fnd_api.g_miss_char
15302             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
15303             ,p_OLD_ATTRIBUTE19                    => fnd_api.g_miss_char
15304             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
15305             ,p_OLD_ATTRIBUTE20                    => fnd_api.g_miss_char
15306             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
15307             ,p_OLD_ATTRIBUTE21                    => fnd_api.g_miss_char
15308             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
15309             ,p_OLD_ATTRIBUTE22                    => fnd_api.g_miss_char
15310             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
15311             ,p_OLD_ATTRIBUTE23                    => fnd_api.g_miss_char
15312             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
15313             ,p_OLD_ATTRIBUTE24                    => fnd_api.g_miss_char
15314             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
15315             ,p_OLD_ATTRIBUTE25                    => fnd_api.g_miss_char
15316             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
15317             ,p_OLD_ATTRIBUTE26                    => fnd_api.g_miss_char
15318             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
15319             ,p_OLD_ATTRIBUTE27                    => fnd_api.g_miss_char
15320             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
15321             ,p_OLD_ATTRIBUTE28                    => fnd_api.g_miss_char
15322             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
15323             ,p_OLD_ATTRIBUTE29                    => fnd_api.g_miss_char
15324             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
15325             ,p_OLD_ATTRIBUTE30                    => fnd_api.g_miss_char
15326             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
15327   	    --end of parameters addition for eam integration--
15328         -- Addition of columns for FA Integration
15329             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
15330             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
15331             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
15332             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
15333             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
15334             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
15335             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
15336             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
15337             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
15338             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
15339             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
15340             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
15341             ,p_OLD_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
15342             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
15343         -- End addition of columns for FA Integration
15344             -- Begin Add Code for Siebel Genesis Project
15345             ,p_OLD_SOURCE_CODE                   => fnd_api.g_miss_char
15346             ,p_NEW_SOURCE_CODE                   => p_instance_rec.SOURCE_CODE
15347             -- End Add Code for Siebel Genesis Project
15348             );
15349 
15350         ELSE
15351 
15352              IF    ( l_ins_hist_csr.old_instance_number IS NULL
15353                 AND  l_ins_hist_csr.new_instance_number IS NULL ) THEN
15354                      IF  ( p_instance_rec.instance_number = l_curr_instance_rec.instance_number )
15355                       OR ( p_instance_rec.instance_number = fnd_api.g_miss_char ) THEN
15356                            l_ins_hist_csr.old_instance_number := NULL;
15357                            l_ins_hist_csr.new_instance_number := NULL;
15358                      ELSE
15359                            l_ins_hist_csr.old_instance_number := fnd_api.g_miss_char;
15360                            l_ins_hist_csr.new_instance_number := p_instance_rec.instance_number;
15361                      END IF;
15362              ELSE
15363                      l_ins_hist_csr.old_instance_number := fnd_api.g_miss_char;
15364                      l_ins_hist_csr.new_instance_number := p_instance_rec.instance_number;
15365              END IF;
15366              --
15367              IF    ( l_ins_hist_csr.old_external_reference IS NULL
15368                 AND  l_ins_hist_csr.new_external_reference IS NULL ) THEN
15369                      IF  ( p_instance_rec.external_reference = l_curr_instance_rec.external_reference )
15370                       OR ( p_instance_rec.external_reference = fnd_api.g_miss_char ) THEN
15371                            l_ins_hist_csr.old_external_reference := NULL;
15372                            l_ins_hist_csr.new_external_reference := NULL;
15373                      ELSE
15374                            l_ins_hist_csr.old_external_reference := fnd_api.g_miss_char;
15375                            l_ins_hist_csr.new_external_reference := p_instance_rec.external_reference;
15376                      END IF;
15377              ELSE
15378                      l_ins_hist_csr.old_external_reference := fnd_api.g_miss_char;
15379                      l_ins_hist_csr.new_external_reference := p_instance_rec.external_reference;
15380              END IF;
15381              --
15382              IF    ( l_ins_hist_csr.old_inventory_item_id IS NULL
15383                 AND  l_ins_hist_csr.new_inventory_item_id IS NULL ) THEN
15384                      IF  ( p_instance_rec.inventory_item_id = l_curr_instance_rec.inventory_item_id )
15385                       OR ( p_instance_rec.inventory_item_id = fnd_api.g_miss_num ) THEN
15386                            l_ins_hist_csr.old_inventory_item_id := NULL;
15387                            l_ins_hist_csr.new_inventory_item_id := NULL;
15388                      ELSE
15389                            l_ins_hist_csr.old_inventory_item_id := fnd_api.g_miss_num;
15390                            l_ins_hist_csr.new_inventory_item_id := p_instance_rec.inventory_item_id;
15391                      END IF;
15392              ELSE
15393                      l_ins_hist_csr.old_inventory_item_id := fnd_api.g_miss_num;
15394                      l_ins_hist_csr.new_inventory_item_id := p_instance_rec.inventory_item_id;
15395              END IF;
15396              --
15397              IF    ( l_ins_hist_csr.old_inventory_revision IS NULL
15398                 AND  l_ins_hist_csr.new_inventory_revision IS NULL ) THEN
15399                      IF  ( p_instance_rec.inventory_revision = l_curr_instance_rec.inventory_revision )
15400                       OR ( p_instance_rec.inventory_revision = fnd_api.g_miss_char ) THEN
15401                            l_ins_hist_csr.old_inventory_revision := NULL;
15402                            l_ins_hist_csr.new_inventory_revision := NULL;
15403                      ELSE
15404                            l_ins_hist_csr.old_inventory_revision := fnd_api.g_miss_char;
15405                            l_ins_hist_csr.new_inventory_revision := p_instance_rec.inventory_revision;
15406                      END IF;
15407              ELSE
15408                      l_ins_hist_csr.old_inventory_revision := fnd_api.g_miss_char;
15409                      l_ins_hist_csr.new_inventory_revision := p_instance_rec.inventory_revision;
15410              END IF;
15411              --
15412              IF    ( l_ins_hist_csr.old_inv_master_organization_id IS NULL
15413                 AND  l_ins_hist_csr.new_inv_master_organization_id IS NULL ) THEN
15414                      IF  ( p_instance_rec.inv_master_organization_id = l_curr_instance_rec.inv_master_organization_id )
15415                       OR ( p_instance_rec.inv_master_organization_id = fnd_api.g_miss_num ) THEN
15416                            l_ins_hist_csr.old_inv_master_organization_id := NULL;
15417                            l_ins_hist_csr.new_inv_master_organization_id := NULL;
15418                      ELSE
15419                            l_ins_hist_csr.old_inv_master_organization_id := fnd_api.g_miss_num;
15420                            l_ins_hist_csr.new_inv_master_organization_id := p_instance_rec.inv_master_organization_id;
15421                      END IF;
15422              ELSE
15423                      l_ins_hist_csr.old_inv_master_organization_id := fnd_api.g_miss_num;
15424                      l_ins_hist_csr.new_inv_master_organization_id := p_instance_rec.inv_master_organization_id;
15425              END IF;
15426              --
15427              IF    ( l_ins_hist_csr.old_serial_number IS NULL
15428                 AND  l_ins_hist_csr.new_serial_number IS NULL ) THEN
15429                      IF  ( p_instance_rec.serial_number = l_curr_instance_rec.serial_number )
15430                       OR ( p_instance_rec.serial_number = fnd_api.g_miss_char ) THEN
15431                            l_ins_hist_csr.old_serial_number := NULL;
15432                            l_ins_hist_csr.new_serial_number := NULL;
15433                      ELSE
15434                            l_ins_hist_csr.old_serial_number := fnd_api.g_miss_char;
15435                            l_ins_hist_csr.new_serial_number := p_instance_rec.serial_number;
15436                      END IF;
15437              ELSE
15438                      l_ins_hist_csr.old_serial_number := fnd_api.g_miss_char;
15439                      l_ins_hist_csr.new_serial_number := p_instance_rec.serial_number;
15440              END IF;
15441              --
15442              IF    ( l_ins_hist_csr.old_mfg_serial_number_flag IS NULL
15443                 AND  l_ins_hist_csr.new_mfg_serial_number_flag IS NULL ) THEN
15444                      IF  ( p_instance_rec.mfg_serial_number_flag = l_curr_instance_rec.mfg_serial_number_flag )
15445                       OR ( p_instance_rec.mfg_serial_number_flag = fnd_api.g_miss_char ) THEN
15446                            l_ins_hist_csr.old_mfg_serial_number_flag := NULL;
15447                            l_ins_hist_csr.new_mfg_serial_number_flag := NULL;
15448                      ELSE
15449                            l_ins_hist_csr.old_mfg_serial_number_flag := fnd_api.g_miss_char;
15450                            l_ins_hist_csr.new_mfg_serial_number_flag := p_instance_rec.mfg_serial_number_flag;
15451                      END IF;
15452              ELSE
15453                      l_ins_hist_csr.old_mfg_serial_number_flag := fnd_api.g_miss_char;
15454                      l_ins_hist_csr.new_mfg_serial_number_flag := p_instance_rec.mfg_serial_number_flag;
15455              END IF;
15456              --
15457              IF    ( l_ins_hist_csr.old_lot_number IS NULL
15458                 AND  l_ins_hist_csr.new_lot_number IS NULL ) THEN
15459                      IF  ( p_instance_rec.lot_number = l_curr_instance_rec.lot_number )
15460                       OR ( p_instance_rec.lot_number = fnd_api.g_miss_char ) THEN
15461                            l_ins_hist_csr.old_lot_number := NULL;
15462                            l_ins_hist_csr.new_lot_number := NULL;
15463                      ELSE
15464                            l_ins_hist_csr.old_lot_number := fnd_api.g_miss_char;
15465                            l_ins_hist_csr.new_lot_number := p_instance_rec.lot_number;
15466                      END IF;
15467              ELSE
15468                      l_ins_hist_csr.old_lot_number := fnd_api.g_miss_char;
15469                      l_ins_hist_csr.new_lot_number := p_instance_rec.lot_number;
15470              END IF;
15471              --
15472              IF    ( l_ins_hist_csr.old_quantity IS NULL
15473                 AND  l_ins_hist_csr.new_quantity IS NULL ) THEN
15474                      IF  ( p_instance_rec.quantity = l_curr_instance_rec.quantity )
15475                       OR ( p_instance_rec.quantity = fnd_api.g_miss_num ) THEN
15476                            l_ins_hist_csr.old_quantity := NULL;
15477                            l_ins_hist_csr.new_quantity := NULL;
15478                      ELSE
15479                            l_ins_hist_csr.old_quantity := l_curr_instance_rec.quantity; --fnd_api.g_miss_num;
15480                            l_ins_hist_csr.new_quantity := p_instance_rec.quantity;
15481                      END IF;
15482              ELSE
15483                      l_ins_hist_csr.old_quantity := fnd_api.g_miss_num;
15484                      l_ins_hist_csr.new_quantity := p_instance_rec.quantity;
15485              END IF;
15486              --
15487              IF    ( l_ins_hist_csr.old_unit_of_measure IS NULL
15488                 AND  l_ins_hist_csr.new_unit_of_measure IS NULL ) THEN
15489                      IF  ( p_instance_rec.unit_of_measure = l_curr_instance_rec.unit_of_measure )
15490                       OR ( p_instance_rec.unit_of_measure = fnd_api.g_miss_char ) THEN
15491                            l_ins_hist_csr.old_unit_of_measure := NULL;
15492                            l_ins_hist_csr.new_unit_of_measure := NULL;
15493                      ELSE
15494                            l_ins_hist_csr.old_unit_of_measure := fnd_api.g_miss_char;
15495                            l_ins_hist_csr.new_unit_of_measure := p_instance_rec.unit_of_measure;
15496                      END IF;
15497              ELSE
15498                      l_ins_hist_csr.old_unit_of_measure := fnd_api.g_miss_char;
15499                      l_ins_hist_csr.new_unit_of_measure := p_instance_rec.unit_of_measure;
15500              END IF;
15501              --
15502              IF    ( l_ins_hist_csr.old_accounting_class_code IS NULL
15503                 AND  l_ins_hist_csr.new_accounting_class_code IS NULL ) THEN
15504                      IF  ( p_instance_rec.accounting_class_code = l_curr_instance_rec.accounting_class_code )
15505                       OR ( p_instance_rec.accounting_class_code = fnd_api.g_miss_char ) THEN
15506                            l_ins_hist_csr.old_accounting_class_code := NULL;
15507                            l_ins_hist_csr.new_accounting_class_code := NULL;
15508                      ELSE
15509                            l_ins_hist_csr.old_accounting_class_code := fnd_api.g_miss_char;
15510                            l_ins_hist_csr.new_accounting_class_code := p_instance_rec.accounting_class_code;
15511                      END IF;
15512              ELSE
15513                      l_ins_hist_csr.old_accounting_class_code := fnd_api.g_miss_char;
15514                      l_ins_hist_csr.new_accounting_class_code := p_instance_rec.accounting_class_code;
15515              END IF;
15516              --
15517              IF    ( l_ins_hist_csr.old_instance_condition_id IS NULL
15518                 AND  l_ins_hist_csr.new_instance_condition_id IS NULL ) THEN
15519                      IF  ( p_instance_rec.instance_condition_id = l_curr_instance_rec.instance_condition_id )
15520                       OR ( p_instance_rec.instance_condition_id = fnd_api.g_miss_num ) THEN
15521                            l_ins_hist_csr.old_instance_condition_id := NULL;
15522                            l_ins_hist_csr.new_instance_condition_id := NULL;
15523                      ELSE
15524                            l_ins_hist_csr.old_instance_condition_id := fnd_api.g_miss_num;
15525                            l_ins_hist_csr.new_instance_condition_id := p_instance_rec.instance_condition_id;
15526                      END IF;
15527              ELSE
15528                      l_ins_hist_csr.old_instance_condition_id := fnd_api.g_miss_num;
15529                      l_ins_hist_csr.new_instance_condition_id := p_instance_rec.instance_condition_id;
15530              END IF;
15531              --
15532              IF    ( l_ins_hist_csr.old_instance_status_id IS NULL
15533                 AND  l_ins_hist_csr.new_instance_status_id IS NULL ) THEN
15534                      IF  ( p_instance_rec.instance_status_id = l_curr_instance_rec.instance_status_id )
15535                       OR ( p_instance_rec.instance_status_id = fnd_api.g_miss_num ) THEN
15536                            l_ins_hist_csr.old_instance_status_id := NULL;
15537                            l_ins_hist_csr.new_instance_status_id := NULL;
15538                      ELSE
15539                       /* Following has been added for bug 2935513 */
15540                         IF nvl(l_curr_instance_rec.instance_status_id,fnd_api.g_miss_num)<>
15541                            nvl(p_instance_rec.instance_status_id,fnd_api.g_miss_num)
15542                         THEN
15543                            l_ins_hist_csr.old_instance_status_id := l_curr_instance_rec.instance_status_id;
15544                            l_ins_hist_csr.new_instance_status_id := p_instance_rec.instance_status_id;
15545                         ELSE
15546                      /* End addition for bug 2935513 */
15547                            l_ins_hist_csr.old_instance_status_id := fnd_api.g_miss_num;
15548                            l_ins_hist_csr.new_instance_status_id := p_instance_rec.instance_status_id;
15549                         END IF;
15550 
15551                      END IF;
15552              ELSE
15553                      l_ins_hist_csr.old_instance_status_id := fnd_api.g_miss_num;
15554                      l_ins_hist_csr.new_instance_status_id := p_instance_rec.instance_status_id;
15555              END IF;
15556              --
15557              IF    ( l_ins_hist_csr.old_customer_view_flag IS NULL
15558                 AND  l_ins_hist_csr.new_customer_view_flag IS NULL ) THEN
15559                      IF  ( p_instance_rec.customer_view_flag = l_curr_instance_rec.customer_view_flag )
15560                       OR ( p_instance_rec.customer_view_flag = fnd_api.g_miss_char ) THEN
15561                            l_ins_hist_csr.old_customer_view_flag := NULL;
15562                            l_ins_hist_csr.new_customer_view_flag := NULL;
15563                      ELSE
15564                            l_ins_hist_csr.old_customer_view_flag := fnd_api.g_miss_char;
15565                            l_ins_hist_csr.new_customer_view_flag := p_instance_rec.customer_view_flag;
15566                      END IF;
15567              ELSE
15568                      l_ins_hist_csr.old_customer_view_flag := fnd_api.g_miss_char;
15569                      l_ins_hist_csr.new_customer_view_flag := p_instance_rec.customer_view_flag;
15570              END IF;
15571              --
15572              IF    ( l_ins_hist_csr.old_merchant_view_flag IS NULL
15573                 AND  l_ins_hist_csr.new_merchant_view_flag IS NULL ) THEN
15574                      IF  ( p_instance_rec.merchant_view_flag = l_curr_instance_rec.merchant_view_flag )
15575                       OR ( p_instance_rec.merchant_view_flag = fnd_api.g_miss_char ) THEN
15576                            l_ins_hist_csr.old_merchant_view_flag := NULL;
15577                            l_ins_hist_csr.new_merchant_view_flag := NULL;
15578                      ELSE
15579                            l_ins_hist_csr.old_merchant_view_flag := fnd_api.g_miss_char;
15580                            l_ins_hist_csr.new_merchant_view_flag := p_instance_rec.merchant_view_flag;
15581                      END IF;
15582              ELSE
15583                      l_ins_hist_csr.old_merchant_view_flag := fnd_api.g_miss_char;
15584                      l_ins_hist_csr.new_merchant_view_flag := p_instance_rec.merchant_view_flag;
15585              END IF;
15586              --
15587              IF    ( l_ins_hist_csr.old_sellable_flag IS NULL
15588                 AND  l_ins_hist_csr.new_sellable_flag IS NULL ) THEN
15589                      IF  ( p_instance_rec.sellable_flag = l_curr_instance_rec.sellable_flag )
15590                       OR ( p_instance_rec.sellable_flag = fnd_api.g_miss_char ) THEN
15591                            l_ins_hist_csr.old_sellable_flag := NULL;
15592                            l_ins_hist_csr.new_sellable_flag := NULL;
15593                      ELSE
15594                            l_ins_hist_csr.old_sellable_flag := fnd_api.g_miss_char;
15595                            l_ins_hist_csr.new_sellable_flag := p_instance_rec.sellable_flag;
15596                      END IF;
15597              ELSE
15598                      l_ins_hist_csr.old_sellable_flag := fnd_api.g_miss_char;
15599                      l_ins_hist_csr.new_sellable_flag := p_instance_rec.sellable_flag;
15600              END IF;
15601              --
15602              IF    ( l_ins_hist_csr.old_system_id IS NULL
15603                 AND  l_ins_hist_csr.new_system_id IS NULL ) THEN
15604                      IF  ( p_instance_rec.system_id = l_curr_instance_rec.system_id )
15605                       OR ( p_instance_rec.system_id = fnd_api.g_miss_num ) THEN
15606                            l_ins_hist_csr.old_system_id := NULL;
15607                            l_ins_hist_csr.new_system_id := NULL;
15608                      ELSE
15609                            l_ins_hist_csr.old_system_id := fnd_api.g_miss_num;
15610                            l_ins_hist_csr.new_system_id := p_instance_rec.system_id;
15611                      END IF;
15612              ELSE
15613                      l_ins_hist_csr.old_system_id := fnd_api.g_miss_num;
15614                      l_ins_hist_csr.new_system_id := p_instance_rec.system_id;
15615              END IF;
15616              --
15617              IF    ( l_ins_hist_csr.old_instance_type_code IS NULL
15618                 AND  l_ins_hist_csr.new_instance_type_code IS NULL ) THEN
15619                      IF  ( p_instance_rec.instance_type_code = l_curr_instance_rec.instance_type_code )
15620                       OR ( p_instance_rec.instance_type_code = fnd_api.g_miss_char ) THEN
15621                            l_ins_hist_csr.old_instance_type_code := NULL;
15622                            l_ins_hist_csr.new_instance_type_code := NULL;
15623                      ELSE
15624                            l_ins_hist_csr.old_instance_type_code := fnd_api.g_miss_char;
15625                            l_ins_hist_csr.new_instance_type_code := p_instance_rec.instance_type_code;
15626                      END IF;
15627              ELSE
15628                      l_ins_hist_csr.old_instance_type_code := fnd_api.g_miss_char;
15629                      l_ins_hist_csr.new_instance_type_code := p_instance_rec.instance_type_code;
15630              END IF;
15631              --
15632              IF    ( l_ins_hist_csr.old_active_start_date IS NULL
15633                 AND  l_ins_hist_csr.new_active_start_date IS NULL ) THEN
15634                      IF  ( p_instance_rec.active_start_date = l_curr_instance_rec.active_start_date )
15635                       OR ( p_instance_rec.active_start_date = fnd_api.g_miss_date ) THEN
15636                            l_ins_hist_csr.old_active_start_date := NULL;
15637                            l_ins_hist_csr.new_active_start_date := NULL;
15638                      ELSE
15639                            l_ins_hist_csr.old_active_start_date := fnd_api.g_miss_date;
15640                            l_ins_hist_csr.new_active_start_date := p_instance_rec.active_start_date;
15641                      END IF;
15642              ELSE
15643                      l_ins_hist_csr.old_active_start_date := fnd_api.g_miss_date;
15644                      l_ins_hist_csr.new_active_start_date := p_instance_rec.active_start_date;
15645              END IF;
15646              --
15647              IF    ( l_ins_hist_csr.old_active_end_date IS NULL
15648                 AND  l_ins_hist_csr.new_active_end_date IS NULL ) THEN
15649                      IF  ( p_instance_rec.active_end_date = l_curr_instance_rec.active_end_date )
15650                       OR ( p_instance_rec.active_end_date = fnd_api.g_miss_date ) THEN
15651                            l_ins_hist_csr.old_active_end_date := NULL;
15652                            l_ins_hist_csr.new_active_end_date := NULL;
15653                      ELSE
15654                            l_ins_hist_csr.old_active_end_date := fnd_api.g_miss_date;
15655                            l_ins_hist_csr.new_active_end_date := p_instance_rec.active_end_date;
15656                      END IF;
15657              ELSE
15658                      l_ins_hist_csr.old_active_end_date := fnd_api.g_miss_date;
15659                      l_ins_hist_csr.new_active_end_date := p_instance_rec.active_end_date;
15660              END IF;
15661              --
15662              IF    ( l_ins_hist_csr.old_location_type_code IS NULL
15663                 AND  l_ins_hist_csr.new_location_type_code IS NULL ) THEN
15664                      IF  ( p_instance_rec.location_type_code = l_curr_instance_rec.location_type_code )
15665                       OR ( p_instance_rec.location_type_code = fnd_api.g_miss_char ) THEN
15666                            l_ins_hist_csr.old_location_type_code := NULL;
15667                            l_ins_hist_csr.new_location_type_code := NULL;
15668                      ELSE
15669                            l_ins_hist_csr.old_location_type_code := l_curr_instance_rec.location_type_code; --fnd_api.g_miss_char;
15670                            l_ins_hist_csr.new_location_type_code := p_instance_rec.location_type_code;
15671                      END IF;
15672              ELSE
15673                      l_ins_hist_csr.old_location_type_code := fnd_api.g_miss_char;
15674                      l_ins_hist_csr.new_location_type_code := p_instance_rec.location_type_code;
15675              END IF;
15676              --
15677              IF    ( l_ins_hist_csr.old_location_id IS NULL
15678                 AND  l_ins_hist_csr.new_location_id IS NULL ) THEN
15679                      IF  ( p_instance_rec.location_id = l_curr_instance_rec.location_id )
15680                       OR ( p_instance_rec.location_id = fnd_api.g_miss_num ) THEN
15681                            l_ins_hist_csr.old_location_id := NULL;
15682                            l_ins_hist_csr.new_location_id := NULL;
15683                      ELSE
15684                            l_ins_hist_csr.old_location_id := l_curr_instance_rec.location_id; --fnd_api.g_miss_num;
15685                            l_ins_hist_csr.new_location_id := p_instance_rec.location_id;
15686                      END IF;
15687              ELSE
15688                      l_ins_hist_csr.old_location_id := fnd_api.g_miss_num;
15689                      l_ins_hist_csr.new_location_id := p_instance_rec.location_id;
15690              END IF;
15691              --
15692              IF    ( l_ins_hist_csr.old_inv_organization_id IS NULL
15693                 AND  l_ins_hist_csr.new_inv_organization_id IS NULL ) THEN
15694                      IF  ( p_instance_rec.inv_organization_id = l_curr_instance_rec.inv_organization_id )
15695                       OR ( p_instance_rec.inv_organization_id = fnd_api.g_miss_num ) THEN
15696                            l_ins_hist_csr.old_inv_organization_id := NULL;
15697                            l_ins_hist_csr.new_inv_organization_id := NULL;
15698                      ELSE
15699                            l_ins_hist_csr.old_inv_organization_id := fnd_api.g_miss_num;
15700                            l_ins_hist_csr.new_inv_organization_id := p_instance_rec.inv_organization_id;
15701                      END IF;
15702              ELSE
15703                      l_ins_hist_csr.old_inv_organization_id := fnd_api.g_miss_num;
15704                      l_ins_hist_csr.new_inv_organization_id := p_instance_rec.inv_organization_id;
15705              END IF;
15706              --
15707              IF    ( l_ins_hist_csr.old_inv_subinventory_name IS NULL
15708                 AND  l_ins_hist_csr.new_inv_subinventory_name IS NULL ) THEN
15709                      IF  ( p_instance_rec.inv_subinventory_name = l_curr_instance_rec.inv_subinventory_name )
15710                       OR ( p_instance_rec.inv_subinventory_name = fnd_api.g_miss_char ) THEN
15711                            l_ins_hist_csr.old_inv_subinventory_name := NULL;
15712                            l_ins_hist_csr.new_inv_subinventory_name := NULL;
15713                      ELSE
15714                            l_ins_hist_csr.old_inv_subinventory_name := fnd_api.g_miss_char;
15715                            l_ins_hist_csr.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name;
15716                      END IF;
15717              ELSE
15718                      l_ins_hist_csr.old_inv_subinventory_name := fnd_api.g_miss_char;
15719                      l_ins_hist_csr.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name;
15720              END IF;
15721              --
15722              IF    ( l_ins_hist_csr.old_inv_locator_id IS NULL
15723                 AND  l_ins_hist_csr.new_inv_locator_id IS NULL ) THEN
15724                      IF  ( p_instance_rec.inv_locator_id = l_curr_instance_rec.inv_locator_id )
15725                       OR ( p_instance_rec.inv_locator_id = fnd_api.g_miss_num ) THEN
15726                            l_ins_hist_csr.old_inv_locator_id := NULL;
15727                            l_ins_hist_csr.new_inv_locator_id := NULL;
15728                      ELSE
15729                            l_ins_hist_csr.old_inv_locator_id := fnd_api.g_miss_num;
15730                            l_ins_hist_csr.new_inv_locator_id := p_instance_rec.inv_locator_id;
15731                      END IF;
15732              ELSE
15733                      l_ins_hist_csr.old_inv_locator_id := fnd_api.g_miss_num;
15734                      l_ins_hist_csr.new_inv_locator_id := p_instance_rec.inv_locator_id;
15735              END IF;
15736              --
15737              IF    ( l_ins_hist_csr.old_pa_project_id IS NULL
15738                 AND  l_ins_hist_csr.new_pa_project_id IS NULL ) THEN
15739                      IF  ( p_instance_rec.pa_project_id = l_curr_instance_rec.pa_project_id )
15740                       OR ( p_instance_rec.pa_project_id = fnd_api.g_miss_num ) THEN
15741                            l_ins_hist_csr.old_pa_project_id := NULL;
15742                            l_ins_hist_csr.new_pa_project_id := NULL;
15743                      ELSE
15744                            l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
15745                            l_ins_hist_csr.new_pa_project_id := p_instance_rec.pa_project_id;
15746                      END IF;
15747              ELSE
15748                      l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
15749                      l_ins_hist_csr.new_pa_project_id := p_instance_rec.pa_project_id;
15750              END IF;
15751              --
15752              IF    ( l_ins_hist_csr.old_pa_project_task_id IS NULL
15753                 AND  l_ins_hist_csr.new_pa_project_task_id IS NULL ) THEN
15754                      IF  ( p_instance_rec.pa_project_task_id = l_curr_instance_rec.pa_project_task_id )
15755                       OR ( p_instance_rec.pa_project_task_id = fnd_api.g_miss_num ) THEN
15756                            l_ins_hist_csr.old_pa_project_task_id := NULL;
15757                            l_ins_hist_csr.new_pa_project_task_id := NULL;
15758                      ELSE
15759                            l_ins_hist_csr.old_pa_project_task_id := fnd_api.g_miss_num;
15760                            l_ins_hist_csr.new_pa_project_task_id := p_instance_rec.pa_project_task_id;
15761                      END IF;
15762              ELSE
15763                      l_ins_hist_csr.old_pa_project_id := fnd_api.g_miss_num;
15764                      l_ins_hist_csr.new_pa_project_task_id := p_instance_rec.pa_project_task_id;
15765              END IF;
15766              --
15767              IF    ( l_ins_hist_csr.old_in_transit_order_line_id IS NULL
15768                 AND  l_ins_hist_csr.new_in_transit_order_line_id IS NULL ) THEN
15769                      IF  ( p_instance_rec.in_transit_order_line_id = l_curr_instance_rec.in_transit_order_line_id )
15770                       OR ( p_instance_rec.in_transit_order_line_id = fnd_api.g_miss_num ) THEN
15771                            l_ins_hist_csr.old_in_transit_order_line_id := NULL;
15772                            l_ins_hist_csr.new_in_transit_order_line_id := NULL;
15773                      ELSE
15774                            l_ins_hist_csr.old_in_transit_order_line_id := fnd_api.g_miss_num;
15775                            l_ins_hist_csr.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id;
15776                      END IF;
15777              ELSE
15778                      l_ins_hist_csr.old_in_transit_order_line_id := fnd_api.g_miss_num;
15779                      l_ins_hist_csr.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id;
15780              END IF;
15781              --
15782              IF    ( l_ins_hist_csr.old_oe_agreement_id IS NULL
15783                 AND  l_ins_hist_csr.new_oe_agreement_id IS NULL ) THEN
15784                      IF  ( p_instance_rec.last_oe_agreement_id = l_curr_instance_rec.last_oe_agreement_id )
15785                       OR ( p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num ) THEN
15786                            l_ins_hist_csr.old_oe_agreement_id := NULL;
15787                            l_ins_hist_csr.new_oe_agreement_id := NULL;
15788                      ELSE
15789                            l_ins_hist_csr.old_oe_agreement_id := fnd_api.g_miss_num;
15790                            l_ins_hist_csr.new_oe_agreement_id := p_instance_rec.last_oe_agreement_id;
15791                      END IF;
15792              ELSE
15793                      l_ins_hist_csr.old_oe_agreement_id := fnd_api.g_miss_num;
15794                      l_ins_hist_csr.new_oe_agreement_id := p_instance_rec.last_oe_agreement_id;
15795              END IF;
15796              --
15797              IF    ( l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID IS NULL
15798                 AND  l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID IS NULL ) THEN
15799                      IF  ( p_instance_rec.LAST_OE_ORDER_LINE_ID = l_curr_instance_rec.LAST_OE_ORDER_LINE_ID )
15800                       OR ( p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num ) THEN
15801                            l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := NULL;
15802                            l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := NULL;
15803                      ELSE
15804                            l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := fnd_api.g_miss_num;
15805                            l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID;
15806                      END IF;
15807              ELSE
15808                      l_ins_hist_csr.old_LAST_OE_ORDER_LINE_ID := fnd_api.g_miss_num;
15809                      l_ins_hist_csr.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID;
15810              END IF;
15811              --
15812              IF    ( l_ins_hist_csr.old_LAST_OE_RMA_LINE_ID IS NULL
15813                 AND  l_ins_hist_csr.new_LAST_OE_RMA_LINE_ID IS NULL ) THEN
15814                      IF  ( p_instance_rec.LAST_OE_RMA_LINE_ID = l_curr_instance_rec.LAST_OE_RMA_LINE_ID )
15815                       OR ( p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num ) THEN
15816                            l_ins_hist_csr.old_LAST_OE_RMA_LINE_ID := NULL;
15817                            l_ins_hist_csr.new_LAST_OE_RMA_LINE_ID := NULL;
15818                      ELSE
15819                            l_ins_hist_csr.old_LAST_OE_RMA_LINE_ID := fnd_api.g_miss_num;
15820                            l_ins_hist_csr.new_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID;
15821                      END IF;
15822              ELSE
15823                      l_ins_hist_csr.old_LAST_OE_RMA_LINE_ID := fnd_api.g_miss_num;
15824                      l_ins_hist_csr.new_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID;
15825              END IF;
15826              --
15827              IF    ( l_ins_hist_csr.old_LAST_WIP_JOB_ID IS NULL
15828                 AND  l_ins_hist_csr.new_LAST_WIP_JOB_ID IS NULL ) THEN
15829                      IF  ( p_instance_rec.LAST_WIP_JOB_ID = l_curr_instance_rec.LAST_WIP_JOB_ID )
15830                       OR ( p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num ) THEN
15831                            l_ins_hist_csr.old_LAST_WIP_JOB_ID := NULL;
15832                            l_ins_hist_csr.new_LAST_WIP_JOB_ID := NULL;
15833                      ELSE
15834                            l_ins_hist_csr.old_LAST_WIP_JOB_ID := fnd_api.g_miss_num;
15835                            l_ins_hist_csr.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID;
15836                      END IF;
15837              ELSE
15838                      l_ins_hist_csr.old_LAST_WIP_JOB_ID := fnd_api.g_miss_num;
15839                      l_ins_hist_csr.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID;
15840              END IF;
15841              --
15842              IF    ( l_ins_hist_csr.old_LAST_PO_PO_LINE_ID IS NULL
15843                 AND  l_ins_hist_csr.new_LAST_PO_PO_LINE_ID IS NULL ) THEN
15844                      IF  ( p_instance_rec.LAST_PO_PO_LINE_ID = l_curr_instance_rec.LAST_PO_PO_LINE_ID )
15845                       OR ( p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num ) THEN
15846                            l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := NULL;
15847                            l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := NULL;
15848                      ELSE
15849                            l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := fnd_api.g_miss_num;
15850                            l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID;
15851                      END IF;
15852              ELSE
15853                      l_ins_hist_csr.old_LAST_PO_PO_LINE_ID := fnd_api.g_miss_num;
15854                      l_ins_hist_csr.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID;
15855              END IF;
15856              --
15857              IF    ( l_ins_hist_csr.old_LAST_PA_PROJECT_ID IS NULL
15858                 AND  l_ins_hist_csr.new_LAST_PA_PROJECT_ID IS NULL ) THEN
15859                      IF  ( p_instance_rec.LAST_PA_PROJECT_ID = l_curr_instance_rec.LAST_PA_PROJECT_ID )
15860                       OR ( p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num ) THEN
15861                            l_ins_hist_csr.old_LAST_PA_PROJECT_ID := NULL;
15862                            l_ins_hist_csr.new_LAST_PA_PROJECT_ID := NULL;
15863                      ELSE
15864                            l_ins_hist_csr.old_LAST_PA_PROJECT_ID := fnd_api.g_miss_num;
15865                            l_ins_hist_csr.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID;
15866                      END IF;
15867              ELSE
15868                      l_ins_hist_csr.old_LAST_PA_PROJECT_ID := fnd_api.g_miss_num;
15869                      l_ins_hist_csr.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID;
15870              END IF;
15871              --
15872              IF    ( l_ins_hist_csr.old_LAST_PA_TASK_ID IS NULL
15873                 AND  l_ins_hist_csr.new_LAST_PA_TASK_ID IS NULL ) THEN
15874                      IF  ( p_instance_rec.LAST_PA_TASK_ID = l_curr_instance_rec.LAST_PA_TASK_ID )
15875                       OR ( p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num ) THEN
15876                            l_ins_hist_csr.old_LAST_PA_TASK_ID := NULL;
15877                            l_ins_hist_csr.new_LAST_PA_TASK_ID := NULL;
15878                      ELSE
15879                            l_ins_hist_csr.old_LAST_PA_TASK_ID := fnd_api.g_miss_num;
15880                            l_ins_hist_csr.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID;
15881                      END IF;
15882              ELSE
15883                      l_ins_hist_csr.old_LAST_PA_TASK_ID := fnd_api.g_miss_num;
15884                      l_ins_hist_csr.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID;
15885              END IF;
15886              --
15887              IF    ( l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID IS NULL
15888                 AND  l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID IS NULL ) THEN
15889                      IF  ( p_instance_rec.LAST_TXN_LINE_DETAIL_ID = l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID )
15890                       OR ( p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num ) THEN
15891                            l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := NULL;
15892                            l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := NULL;
15893                      ELSE
15894                            l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := fnd_api.g_miss_num;
15895                            l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
15896                      END IF;
15897              ELSE
15898                      l_ins_hist_csr.old_LAST_TXN_LINE_DETAIL_ID := fnd_api.g_miss_num;
15899                      l_ins_hist_csr.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
15900              END IF;
15901              --
15902              IF    ( l_ins_hist_csr.old_LAST_OE_PO_NUMBER IS NULL
15903                 AND  l_ins_hist_csr.new_LAST_OE_PO_NUMBER IS NULL ) THEN
15904                      IF  ( p_instance_rec.LAST_OE_PO_NUMBER = l_curr_instance_rec.LAST_OE_PO_NUMBER )
15905                       OR ( p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char ) THEN
15906                            l_ins_hist_csr.old_LAST_OE_PO_NUMBER := NULL;
15907                            l_ins_hist_csr.new_LAST_OE_PO_NUMBER := NULL;
15908                      ELSE
15909                            l_ins_hist_csr.old_LAST_OE_PO_NUMBER := fnd_api.g_miss_char;
15910                            l_ins_hist_csr.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER;
15911                      END IF;
15912              ELSE
15913                      l_ins_hist_csr.old_LAST_OE_PO_NUMBER := fnd_api.g_miss_char;
15914                      l_ins_hist_csr.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER;
15915              END IF;
15916              --
15917              IF    ( l_ins_hist_csr.old_wip_job_id IS NULL
15918                 AND  l_ins_hist_csr.new_wip_job_id IS NULL ) THEN
15919                      IF  ( p_instance_rec.wip_job_id = l_curr_instance_rec.wip_job_id )
15920                       OR ( p_instance_rec.wip_job_id = fnd_api.g_miss_num ) THEN
15921                            l_ins_hist_csr.old_wip_job_id := NULL;
15922                            l_ins_hist_csr.new_wip_job_id := NULL;
15923                      ELSE
15924                            l_ins_hist_csr.old_wip_job_id := fnd_api.g_miss_num;
15925                            l_ins_hist_csr.new_wip_job_id := p_instance_rec.wip_job_id;
15926                      END IF;
15927              ELSE
15928                      l_ins_hist_csr.old_wip_job_id := fnd_api.g_miss_num;
15929                      l_ins_hist_csr.new_wip_job_id := p_instance_rec.wip_job_id;
15930              END IF;
15931              --
15932              IF    ( l_ins_hist_csr.old_po_order_line_id IS NULL
15933                 AND  l_ins_hist_csr.new_po_order_line_id IS NULL ) THEN
15934                      IF  ( p_instance_rec.po_order_line_id = l_curr_instance_rec.po_order_line_id )
15935                       OR ( p_instance_rec.po_order_line_id = fnd_api.g_miss_num ) THEN
15936                            l_ins_hist_csr.old_po_order_line_id := NULL;
15937                            l_ins_hist_csr.new_po_order_line_id := NULL;
15938                      ELSE
15939                            l_ins_hist_csr.old_po_order_line_id := fnd_api.g_miss_num;
15940                            l_ins_hist_csr.new_po_order_line_id := p_instance_rec.po_order_line_id;
15941                      END IF;
15942              ELSE
15943                      l_ins_hist_csr.old_po_order_line_id := fnd_api.g_miss_num;
15944                      l_ins_hist_csr.new_po_order_line_id := p_instance_rec.po_order_line_id;
15945              END IF;
15946              --
15947              IF    ( l_ins_hist_csr.old_completeness_flag IS NULL
15948                 AND  l_ins_hist_csr.new_completeness_flag IS NULL ) THEN
15949                      IF  ( p_instance_rec.completeness_flag = l_curr_instance_rec.completeness_flag )
15950                       OR ( p_instance_rec.completeness_flag = fnd_api.g_miss_char ) THEN
15951                            l_ins_hist_csr.old_completeness_flag := NULL;
15952                            l_ins_hist_csr.new_completeness_flag := NULL;
15953                      ELSE
15954                            l_ins_hist_csr.old_completeness_flag := fnd_api.g_miss_char;
15955                            l_ins_hist_csr.new_completeness_flag := p_instance_rec.completeness_flag;
15956                      END IF;
15957              ELSE
15958                      l_ins_hist_csr.old_completeness_flag := fnd_api.g_miss_char;
15959                      l_ins_hist_csr.new_completeness_flag := p_instance_rec.completeness_flag;
15960              END IF;
15961              --
15962              IF    ( l_ins_hist_csr.old_context IS NULL
15963                 AND  l_ins_hist_csr.new_context IS NULL ) THEN
15964                      IF  ( p_instance_rec.context = l_curr_instance_rec.context )
15965                       OR ( p_instance_rec.context = fnd_api.g_miss_char ) THEN
15966                            l_ins_hist_csr.old_context := NULL;
15967                            l_ins_hist_csr.new_context := NULL;
15968                      ELSE
15969                            l_ins_hist_csr.old_context := fnd_api.g_miss_char;
15970                            l_ins_hist_csr.new_context := p_instance_rec.context;
15971                      END IF;
15972              ELSE
15973                      l_ins_hist_csr.old_context := fnd_api.g_miss_char;
15974                      l_ins_hist_csr.new_context := p_instance_rec.context;
15975              END IF;
15976              --
15977              IF    ( l_ins_hist_csr.old_attribute1 IS NULL
15978                 AND  l_ins_hist_csr.new_attribute1 IS NULL ) THEN
15979                      IF  ( p_instance_rec.attribute1 = l_curr_instance_rec.attribute1 )
15980                       OR ( p_instance_rec.attribute1 = fnd_api.g_miss_char ) THEN
15981                            l_ins_hist_csr.old_attribute1 := NULL;
15982                            l_ins_hist_csr.new_attribute1 := NULL;
15983                      ELSE
15984                            l_ins_hist_csr.old_attribute1 := fnd_api.g_miss_char;
15985                            l_ins_hist_csr.new_attribute1 := p_instance_rec.attribute1;
15986                      END IF;
15987              ELSE
15988                      l_ins_hist_csr.old_attribute1 := fnd_api.g_miss_char;
15989                      l_ins_hist_csr.new_attribute1 := p_instance_rec.attribute1;
15990              END IF;
15991              --
15992              IF    ( l_ins_hist_csr.old_attribute2 IS NULL
15993                 AND  l_ins_hist_csr.new_attribute2 IS NULL ) THEN
15994                      IF  ( p_instance_rec.attribute2 = l_curr_instance_rec.attribute2 )
15995                       OR ( p_instance_rec.attribute2 = fnd_api.g_miss_char ) THEN
15996                            l_ins_hist_csr.old_attribute2 := NULL;
15997                            l_ins_hist_csr.new_attribute2 := NULL;
15998                      ELSE
15999                            l_ins_hist_csr.old_attribute2 := fnd_api.g_miss_char;
16000                            l_ins_hist_csr.new_attribute2 := p_instance_rec.attribute2;
16001                      END IF;
16002              ELSE
16003                      l_ins_hist_csr.old_attribute2 := fnd_api.g_miss_char;
16004                      l_ins_hist_csr.new_attribute2 := p_instance_rec.attribute2;
16005              END IF;
16006              --
16007              IF    ( l_ins_hist_csr.old_attribute3 IS NULL
16008                 AND  l_ins_hist_csr.new_attribute3 IS NULL ) THEN
16009                      IF  ( p_instance_rec.attribute3 = l_curr_instance_rec.attribute3 )
16010                       OR ( p_instance_rec.attribute3 = fnd_api.g_miss_char ) THEN
16011                            l_ins_hist_csr.old_attribute3 := NULL;
16012                            l_ins_hist_csr.new_attribute3 := NULL;
16013                      ELSE
16014                            l_ins_hist_csr.old_attribute3 := fnd_api.g_miss_char;
16015                            l_ins_hist_csr.new_attribute3 := p_instance_rec.attribute3;
16016                      END IF;
16017              ELSE
16018                      l_ins_hist_csr.old_attribute3 := fnd_api.g_miss_char;
16019                      l_ins_hist_csr.new_attribute3 := p_instance_rec.attribute3;
16020              END IF;
16021              --
16022              IF    ( l_ins_hist_csr.old_attribute4 IS NULL
16023                 AND  l_ins_hist_csr.new_attribute4 IS NULL ) THEN
16024                      IF  ( p_instance_rec.attribute4 = l_curr_instance_rec.attribute4 )
16025                       OR ( p_instance_rec.attribute4 = fnd_api.g_miss_char ) THEN
16026                            l_ins_hist_csr.old_attribute4 := NULL;
16027                            l_ins_hist_csr.new_attribute4 := NULL;
16028                      ELSE
16029                            l_ins_hist_csr.old_attribute4 := fnd_api.g_miss_char;
16030                            l_ins_hist_csr.new_attribute4 := p_instance_rec.attribute4;
16031                      END IF;
16032              ELSE
16033                      l_ins_hist_csr.old_attribute4 := fnd_api.g_miss_char;
16034                      l_ins_hist_csr.new_attribute4 := p_instance_rec.attribute4;
16035              END IF;
16036              --
16037              IF    ( l_ins_hist_csr.old_attribute5 IS NULL
16038                 AND  l_ins_hist_csr.new_attribute5 IS NULL ) THEN
16039                      IF  ( p_instance_rec.attribute5 = l_curr_instance_rec.attribute5 )
16040                       OR ( p_instance_rec.attribute5 = fnd_api.g_miss_char ) THEN
16041                            l_ins_hist_csr.old_attribute5 := NULL;
16042                            l_ins_hist_csr.new_attribute5 := NULL;
16043                      ELSE
16044                            l_ins_hist_csr.old_attribute5 := fnd_api.g_miss_char;
16045                            l_ins_hist_csr.new_attribute5 := p_instance_rec.attribute5;
16046                      END IF;
16047              ELSE
16048                      l_ins_hist_csr.old_attribute5 := fnd_api.g_miss_char;
16049                      l_ins_hist_csr.new_attribute5 := p_instance_rec.attribute5;
16050              END IF;
16051              --
16052              IF    ( l_ins_hist_csr.old_attribute6 IS NULL
16053                 AND  l_ins_hist_csr.new_attribute6 IS NULL ) THEN
16054                      IF  ( p_instance_rec.attribute6 = l_curr_instance_rec.attribute6 )
16055                       OR ( p_instance_rec.attribute6 = fnd_api.g_miss_char ) THEN
16056                            l_ins_hist_csr.old_attribute6 := NULL;
16057                            l_ins_hist_csr.new_attribute6 := NULL;
16058                      ELSE
16059                            l_ins_hist_csr.old_attribute6 := fnd_api.g_miss_char;
16060                            l_ins_hist_csr.new_attribute6 := p_instance_rec.attribute6;
16061                      END IF;
16062              ELSE
16063                      l_ins_hist_csr.old_attribute6 := fnd_api.g_miss_char;
16064                      l_ins_hist_csr.new_attribute6 := p_instance_rec.attribute6;
16065              END IF;
16066              --
16067              IF    ( l_ins_hist_csr.old_attribute7 IS NULL
16068                 AND  l_ins_hist_csr.new_attribute7 IS NULL ) THEN
16069                      IF  ( p_instance_rec.attribute7 = l_curr_instance_rec.attribute7 )
16070                       OR ( p_instance_rec.attribute7 = fnd_api.g_miss_char ) THEN
16071                            l_ins_hist_csr.old_attribute7 := NULL;
16072                            l_ins_hist_csr.new_attribute7 := NULL;
16073                      ELSE
16074                            l_ins_hist_csr.old_attribute7 := fnd_api.g_miss_char;
16075                            l_ins_hist_csr.new_attribute7 := p_instance_rec.attribute7;
16076                      END IF;
16077              ELSE
16078                      l_ins_hist_csr.old_attribute7 := fnd_api.g_miss_char;
16079                      l_ins_hist_csr.new_attribute7 := p_instance_rec.attribute7;
16080              END IF;
16081              --
16082              IF    ( l_ins_hist_csr.old_attribute8 IS NULL
16083                 AND  l_ins_hist_csr.new_attribute8 IS NULL ) THEN
16084                      IF  ( p_instance_rec.attribute8 = l_curr_instance_rec.attribute8 )
16085                       OR ( p_instance_rec.attribute8 = fnd_api.g_miss_char ) THEN
16086                            l_ins_hist_csr.old_attribute8 := NULL;
16087                            l_ins_hist_csr.new_attribute8 := NULL;
16088                      ELSE
16089                            l_ins_hist_csr.old_attribute8 := fnd_api.g_miss_char;
16090                            l_ins_hist_csr.new_attribute8 := p_instance_rec.attribute8;
16091                      END IF;
16092              ELSE
16093                      l_ins_hist_csr.old_attribute8 := fnd_api.g_miss_char;
16094                      l_ins_hist_csr.new_attribute8 := p_instance_rec.attribute8;
16095              END IF;
16096              --
16097              IF    ( l_ins_hist_csr.old_attribute9 IS NULL
16098                 AND  l_ins_hist_csr.new_attribute9 IS NULL ) THEN
16099                      IF  ( p_instance_rec.attribute9 = l_curr_instance_rec.attribute9 )
16100                       OR ( p_instance_rec.attribute9 = fnd_api.g_miss_char ) THEN
16101                            l_ins_hist_csr.old_attribute9 := NULL;
16102                            l_ins_hist_csr.new_attribute9 := NULL;
16103                      ELSE
16104                            l_ins_hist_csr.old_attribute9 := fnd_api.g_miss_char;
16105                            l_ins_hist_csr.new_attribute9 := p_instance_rec.attribute9;
16106                      END IF;
16107              ELSE
16108                      l_ins_hist_csr.old_attribute9 := fnd_api.g_miss_char;
16109                      l_ins_hist_csr.new_attribute9 := p_instance_rec.attribute9;
16110              END IF;
16111              --
16112              IF    ( l_ins_hist_csr.old_attribute10 IS NULL
16113                 AND  l_ins_hist_csr.new_attribute10 IS NULL ) THEN
16114                      IF  ( p_instance_rec.attribute10 = l_curr_instance_rec.attribute10 )
16115                       OR ( p_instance_rec.attribute10 = fnd_api.g_miss_char ) THEN
16116                            l_ins_hist_csr.old_attribute10 := NULL;
16117                            l_ins_hist_csr.new_attribute10 := NULL;
16118                      ELSE
16119                            l_ins_hist_csr.old_attribute10 := fnd_api.g_miss_char;
16120                            l_ins_hist_csr.new_attribute10 := p_instance_rec.attribute10;
16121                      END IF;
16122              ELSE
16123                      l_ins_hist_csr.old_attribute10 := fnd_api.g_miss_char;
16124                      l_ins_hist_csr.new_attribute10 := p_instance_rec.attribute10;
16125              END IF;
16126              --
16127              IF    ( l_ins_hist_csr.old_attribute11 IS NULL
16128                 AND  l_ins_hist_csr.new_attribute11 IS NULL ) THEN
16129                      IF  ( p_instance_rec.attribute11 = l_curr_instance_rec.attribute11 )
16130                       OR ( p_instance_rec.attribute11 = fnd_api.g_miss_char ) THEN
16131                            l_ins_hist_csr.old_attribute11 := NULL;
16132                            l_ins_hist_csr.new_attribute11 := NULL;
16133                      ELSE
16134                            l_ins_hist_csr.old_attribute11 := fnd_api.g_miss_char;
16135                            l_ins_hist_csr.new_attribute11 := p_instance_rec.attribute11;
16136                      END IF;
16137              ELSE
16138                      l_ins_hist_csr.old_attribute11 := fnd_api.g_miss_char;
16139                      l_ins_hist_csr.new_attribute11 := p_instance_rec.attribute11;
16140              END IF;
16141              --
16142              IF    ( l_ins_hist_csr.old_attribute12 IS NULL
16143                 AND  l_ins_hist_csr.new_attribute12 IS NULL ) THEN
16144                      IF  ( p_instance_rec.attribute12 = l_curr_instance_rec.attribute12 )
16145                       OR ( p_instance_rec.attribute12 = fnd_api.g_miss_char ) THEN
16146                            l_ins_hist_csr.old_attribute12 := NULL;
16147                            l_ins_hist_csr.new_attribute12 := NULL;
16148                      ELSE
16149                            l_ins_hist_csr.old_attribute12 := fnd_api.g_miss_char;
16150                            l_ins_hist_csr.new_attribute12 := p_instance_rec.attribute12;
16151                      END IF;
16152              ELSE
16153                      l_ins_hist_csr.old_attribute12 := fnd_api.g_miss_char;
16154                      l_ins_hist_csr.new_attribute12 := p_instance_rec.attribute12;
16155              END IF;
16156              --
16157              IF    ( l_ins_hist_csr.old_attribute13 IS NULL
16158                 AND  l_ins_hist_csr.new_attribute13 IS NULL ) THEN
16159                      IF  ( p_instance_rec.attribute13 = l_curr_instance_rec.attribute13 )
16160                       OR ( p_instance_rec.attribute13 = fnd_api.g_miss_char ) THEN
16161                            l_ins_hist_csr.old_attribute13 := NULL;
16162                            l_ins_hist_csr.new_attribute13 := NULL;
16163                      ELSE
16164                            l_ins_hist_csr.old_attribute13 := fnd_api.g_miss_char;
16165                            l_ins_hist_csr.new_attribute13 := p_instance_rec.attribute13;
16166                      END IF;
16167              ELSE
16168                      l_ins_hist_csr.old_attribute13 := fnd_api.g_miss_char;
16169                      l_ins_hist_csr.new_attribute13 := p_instance_rec.attribute13;
16170              END IF;
16171              --
16172              IF    ( l_ins_hist_csr.old_attribute14 IS NULL
16173                 AND  l_ins_hist_csr.new_attribute14 IS NULL ) THEN
16174                      IF  ( p_instance_rec.attribute14 = l_curr_instance_rec.attribute14 )
16175                       OR ( p_instance_rec.attribute14 = fnd_api.g_miss_char ) THEN
16176                            l_ins_hist_csr.old_attribute14 := NULL;
16177                            l_ins_hist_csr.new_attribute14 := NULL;
16178                      ELSE
16179                            l_ins_hist_csr.old_attribute14 := fnd_api.g_miss_char;
16180                            l_ins_hist_csr.new_attribute14 := p_instance_rec.attribute14;
16181                      END IF;
16182              ELSE
16183                      l_ins_hist_csr.old_attribute14 := fnd_api.g_miss_char;
16184                      l_ins_hist_csr.new_attribute14 := p_instance_rec.attribute14;
16185              END IF;
16186              --
16187              IF    ( l_ins_hist_csr.old_attribute15 IS NULL
16188                 AND  l_ins_hist_csr.new_attribute15 IS NULL ) THEN
16189                      IF  ( p_instance_rec.attribute15 = l_curr_instance_rec.attribute15 )
16190                       OR ( p_instance_rec.attribute15 = fnd_api.g_miss_char ) THEN
16191                            l_ins_hist_csr.old_attribute15 := NULL;
16192                            l_ins_hist_csr.new_attribute15 := NULL;
16193                      ELSE
16194                            l_ins_hist_csr.old_attribute15 := fnd_api.g_miss_char;
16195                            l_ins_hist_csr.new_attribute15 := p_instance_rec.attribute15;
16196                      END IF;
16197              ELSE
16198                      l_ins_hist_csr.old_attribute15 := fnd_api.g_miss_char;
16199                      l_ins_hist_csr.new_attribute15 := p_instance_rec.attribute15;
16200              END IF;
16201              --
16202              IF    ( l_ins_hist_csr.old_inst_loc_type_code IS NULL
16203                 AND  l_ins_hist_csr.new_inst_loc_type_code IS NULL ) THEN
16204                      IF  ( p_instance_rec.install_location_type_code = l_curr_instance_rec.install_location_type_code )
16205                       OR ( p_instance_rec.install_location_type_code = fnd_api.g_miss_char ) THEN
16206                            l_ins_hist_csr.old_inst_loc_type_code := NULL;
16207                            l_ins_hist_csr.new_inst_loc_type_code := NULL;
16208                      ELSE
16209                            l_ins_hist_csr.old_inst_loc_type_code := l_curr_instance_rec.install_location_type_code; --fnd_api.g_miss_char;
16210                            l_ins_hist_csr.new_inst_loc_type_code := p_instance_rec.install_location_type_code;
16211                      END IF;
16212              ELSE
16213                      l_ins_hist_csr.old_inst_loc_type_code := fnd_api.g_miss_char;
16214                      l_ins_hist_csr.new_inst_loc_type_code := p_instance_rec.install_location_type_code;
16215              END IF;
16216              --
16217              IF    ( l_ins_hist_csr.old_inst_loc_id IS NULL
16218                 AND  l_ins_hist_csr.new_inst_loc_id IS NULL ) THEN
16219                      IF  ( p_instance_rec.install_location_id = l_curr_instance_rec.install_location_id )
16220                       OR ( p_instance_rec.install_location_id = fnd_api.g_miss_num ) THEN
16221                            l_ins_hist_csr.old_inst_loc_id := NULL;
16222                            l_ins_hist_csr.new_inst_loc_id := NULL;
16223                      ELSE
16224                            l_ins_hist_csr.old_inst_loc_id := l_curr_instance_rec.install_location_id; --fnd_api.g_miss_num;
16225                            l_ins_hist_csr.new_inst_loc_id := p_instance_rec.install_location_id;
16226                      END IF;
16227              ELSE
16228                      l_ins_hist_csr.old_inst_loc_id := fnd_api.g_miss_num;
16229                      l_ins_hist_csr.new_inst_loc_id := p_instance_rec.install_location_id;
16230              END IF;
16231              --
16232              IF    ( l_ins_hist_csr.old_inst_usage_code IS NULL
16233                 AND  l_ins_hist_csr.new_inst_usage_code IS NULL ) THEN
16234                      IF  ( p_instance_rec.instance_usage_code = l_curr_instance_rec.instance_usage_code )
16235                       OR ( p_instance_rec.instance_usage_code = fnd_api.g_miss_char ) THEN
16236                            l_ins_hist_csr.old_inst_usage_code := NULL;
16237                            l_ins_hist_csr.new_inst_usage_code := NULL;
16238                      ELSE
16239                            l_ins_hist_csr.old_inst_usage_code := fnd_api.g_miss_char;
16240                            l_ins_hist_csr.new_inst_usage_code := p_instance_rec.instance_usage_code;
16241                      END IF;
16242              ELSE
16243                      l_ins_hist_csr.old_inst_usage_code := fnd_api.g_miss_char;
16244                      l_ins_hist_csr.new_inst_usage_code := p_instance_rec.instance_usage_code;
16245              END IF;
16246 		   --
16247              IF    ( l_ins_hist_csr.old_last_vld_organization_id IS NULL
16248                 AND  l_ins_hist_csr.new_last_vld_organization_id IS NULL ) THEN
16249                      IF  ( p_instance_rec.vld_organization_id = l_curr_instance_rec.last_vld_organization_id )
16250                       OR ( p_instance_rec.vld_organization_id = fnd_api.g_miss_num ) THEN
16251                            l_ins_hist_csr.old_last_vld_organization_id := NULL;
16252                            l_ins_hist_csr.new_last_vld_organization_id := NULL;
16253                      ELSE
16254                            l_ins_hist_csr.old_last_vld_organization_id := fnd_api.g_miss_num;
16255                            l_ins_hist_csr.new_last_vld_organization_id := p_instance_rec.vld_organization_id;
16256                      END IF;
16257              ELSE
16258                      l_ins_hist_csr.old_last_vld_organization_id := fnd_api.g_miss_num;
16259                      l_ins_hist_csr.new_last_vld_organization_id := p_instance_rec.vld_organization_id;
16260              END IF;
16261              IF    ( l_ins_hist_csr.old_config_inst_rev_num IS NULL
16262                 AND  l_ins_hist_csr.new_config_inst_rev_num IS NULL ) THEN
16263                      IF  ( p_instance_rec.config_inst_rev_num = l_curr_instance_rec.config_inst_rev_num )
16264                       OR ( p_instance_rec.config_inst_rev_num = fnd_api.g_miss_num ) THEN
16265                            l_ins_hist_csr.old_config_inst_rev_num := NULL;
16266                            l_ins_hist_csr.new_config_inst_rev_num := NULL;
16267                      ELSE
16268                            l_ins_hist_csr.old_config_inst_rev_num := fnd_api.g_miss_num;
16269                            l_ins_hist_csr.new_config_inst_rev_num := p_instance_rec.config_inst_rev_num;
16270                      END IF;
16271              ELSE
16272                      l_ins_hist_csr.old_config_inst_rev_num := fnd_api.g_miss_num;
16273                      l_ins_hist_csr.new_config_inst_rev_num := p_instance_rec.config_inst_rev_num;
16274              END IF;
16275 		   --
16276              IF    ( l_ins_hist_csr.old_config_valid_status IS NULL
16277                 AND  l_ins_hist_csr.new_config_valid_status IS NULL ) THEN
16278                      IF  ( p_instance_rec.config_valid_status = l_curr_instance_rec.config_valid_status )
16279                       OR ( p_instance_rec.config_valid_status = fnd_api.g_miss_char ) THEN
16280                            l_ins_hist_csr.old_config_valid_status := NULL;
16281                            l_ins_hist_csr.new_config_valid_status := NULL;
16282                      ELSE
16283                            l_ins_hist_csr.old_config_valid_status := fnd_api.g_miss_char;
16284                            l_ins_hist_csr.new_config_valid_status := p_instance_rec.config_valid_status;
16285                      END IF;
16286              ELSE
16287                      l_ins_hist_csr.old_config_valid_status := fnd_api.g_miss_char;
16288                      l_ins_hist_csr.new_config_valid_status := p_instance_rec.config_valid_status;
16289              END IF;
16290 		   --
16291              IF    ( l_ins_hist_csr.old_instance_description IS NULL
16292                 AND  l_ins_hist_csr.new_instance_description IS NULL ) THEN
16293                      IF  ( p_instance_rec.instance_description = l_curr_instance_rec.instance_description )
16294                       OR ( p_instance_rec.instance_description = fnd_api.g_miss_char ) THEN
16295                            l_ins_hist_csr.old_instance_description := NULL;
16296                            l_ins_hist_csr.new_instance_description := NULL;
16297                      ELSE
16298                            l_ins_hist_csr.old_instance_description := fnd_api.g_miss_char;
16299                            l_ins_hist_csr.new_instance_description := p_instance_rec.instance_description;
16300                      END IF;
16301              ELSE
16302                      l_ins_hist_csr.old_instance_description := fnd_api.g_miss_char;
16303                      l_ins_hist_csr.new_instance_description := p_instance_rec.instance_description;
16304              END IF;
16305 		   --
16306 -- added for bug 2671179
16307 
16308 
16309              IF    ( l_ins_hist_csr.old_install_date IS NULL
16310                 AND  l_ins_hist_csr.new_install_date IS NULL ) THEN
16311                      IF  ( p_instance_rec.install_date = l_curr_instance_rec.install_date )
16312                       OR ( p_instance_rec.install_date = fnd_api.g_miss_date ) THEN
16313                            l_ins_hist_csr.old_install_date := fnd_api.g_miss_date; --jan15
16314                            l_ins_hist_csr.new_install_date := fnd_api.g_miss_date; --jan15
16315                      ELSE
16316                            l_ins_hist_csr.old_install_date := fnd_api.g_miss_date;
16317                            l_ins_hist_csr.new_install_date := p_instance_rec.install_date;
16318                      END IF;
16319              ELSE
16320                      l_ins_hist_csr.old_install_date := fnd_api.g_miss_date;
16321                      l_ins_hist_csr.new_install_date := p_instance_rec.install_date;
16322              END IF;
16323 
16324 
16325              IF    ( l_ins_hist_csr.old_return_by_date IS NULL
16326                 AND  l_ins_hist_csr.new_return_by_date IS NULL ) THEN
16327                      IF  ( p_instance_rec.return_by_date = l_curr_instance_rec.return_by_date)
16328                       OR ( p_instance_rec.return_by_date = fnd_api.g_miss_date ) THEN
16329                            l_ins_hist_csr.old_return_by_date := fnd_api.g_miss_date; --jan15
16330                            l_ins_hist_csr.new_return_by_date := fnd_api.g_miss_date; --jan15
16331                      ELSE
16332                            l_ins_hist_csr.old_return_by_date := fnd_api.g_miss_date;
16333                            l_ins_hist_csr.new_return_by_date := p_instance_rec.return_by_date;
16334                      END IF;
16335              ELSE
16336                      l_ins_hist_csr.old_return_by_date := fnd_api.g_miss_date;
16337                      l_ins_hist_csr.new_return_by_date := p_instance_rec.return_by_date;
16338              END IF;
16339 
16340 
16341              IF    ( l_ins_hist_csr.old_actual_return_date IS NULL
16342                 AND  l_ins_hist_csr.new_actual_return_date IS NULL ) THEN
16343                      IF  ( p_instance_rec.actual_return_date = l_curr_instance_rec.actual_return_date)
16344                       OR ( p_instance_rec.actual_return_date = fnd_api.g_miss_date ) THEN
16345                            l_ins_hist_csr.old_actual_return_date := fnd_api.g_miss_date; --jan15
16346                            l_ins_hist_csr.new_actual_return_date := fnd_api.g_miss_date; --jan15
16347                      ELSE
16348                            l_ins_hist_csr.old_actual_return_date := fnd_api.g_miss_date;
16349                            l_ins_hist_csr.new_actual_return_date := p_instance_rec.actual_return_date;
16350                      END IF;
16351              ELSE
16352                      l_ins_hist_csr.old_actual_return_date := fnd_api.g_miss_date;
16353                      l_ins_hist_csr.new_actual_return_date := p_instance_rec.actual_return_date;
16354              END IF;
16355             --start of code for eam integration--
16356              --
16357              IF    ( l_ins_hist_csr.old_network_asset_flag IS NULL
16358                 AND  l_ins_hist_csr.new_network_asset_flag IS NULL ) THEN
16359                      IF  ( p_instance_rec.network_asset_flag = l_curr_instance_rec.network_asset_flag )
16360                       OR ( p_instance_rec.network_asset_flag = fnd_api.g_miss_char ) THEN
16361                            l_ins_hist_csr.old_network_asset_flag := NULL;
16362                            l_ins_hist_csr.new_network_asset_flag := NULL;
16363                      ELSE
16364                            l_ins_hist_csr.old_network_asset_flag := fnd_api.g_miss_char;
16365                            l_ins_hist_csr.new_network_asset_flag := p_instance_rec.network_asset_flag;
16366                      END IF;
16367              ELSE
16368                      l_ins_hist_csr.old_network_asset_flag := fnd_api.g_miss_char;
16369                      l_ins_hist_csr.new_network_asset_flag := p_instance_rec.network_asset_flag;
16370              END IF;
16371              --
16372              IF    ( l_ins_hist_csr.old_maintainable_flag IS NULL
16373                 AND  l_ins_hist_csr.new_maintainable_flag IS NULL ) THEN
16374                      IF  ( p_instance_rec.maintainable_flag = l_curr_instance_rec.maintainable_flag )
16375                       OR ( p_instance_rec.maintainable_flag = fnd_api.g_miss_char ) THEN
16376                            l_ins_hist_csr.old_maintainable_flag := NULL;
16377                            l_ins_hist_csr.new_maintainable_flag := NULL;
16378                      ELSE
16379                            l_ins_hist_csr.old_maintainable_flag := fnd_api.g_miss_char;
16380                            l_ins_hist_csr.new_maintainable_flag := p_instance_rec.maintainable_flag;
16381                      END IF;
16382              ELSE
16383                      l_ins_hist_csr.old_maintainable_flag := fnd_api.g_miss_char;
16384                      l_ins_hist_csr.new_maintainable_flag := p_instance_rec.maintainable_flag;
16385              END IF;
16386              --
16387              IF    ( l_ins_hist_csr.old_pn_location_id IS NULL
16388                 AND  l_ins_hist_csr.new_pn_location_id IS NULL ) THEN
16389                      IF  ( p_instance_rec.pn_location_id = l_curr_instance_rec.pn_location_id )
16390                       OR ( p_instance_rec.pn_location_id = fnd_api.g_miss_num ) THEN
16391                            l_ins_hist_csr.old_pn_location_id := NULL;
16392                            l_ins_hist_csr.new_pn_location_id := NULL;
16393                      ELSE
16394                            l_ins_hist_csr.old_pn_location_id := fnd_api.g_miss_num;
16395                            l_ins_hist_csr.new_pn_location_id := p_instance_rec.pn_location_id;
16396                      END IF;
16397              ELSE
16398                      l_ins_hist_csr.old_pn_location_id := fnd_api.g_miss_num;
16399                      l_ins_hist_csr.new_pn_location_id := p_instance_rec.pn_location_id;
16400              END IF;
16401              --
16402              IF    ( l_ins_hist_csr.old_asset_criticality_code IS NULL
16403                 AND  l_ins_hist_csr.new_asset_criticality_code IS NULL ) THEN
16404                      IF  ( p_instance_rec.asset_criticality_code = l_curr_instance_rec.asset_criticality_code )
16405                       OR ( p_instance_rec.asset_criticality_code = fnd_api.g_miss_char ) THEN
16406                            l_ins_hist_csr.old_asset_criticality_code := NULL;
16407                            l_ins_hist_csr.new_asset_criticality_code := NULL;
16408                      ELSE
16409                            l_ins_hist_csr.old_asset_criticality_code := fnd_api.g_miss_char;
16410                            l_ins_hist_csr.new_asset_criticality_code := p_instance_rec.asset_criticality_code;
16411                      END IF;
16412              ELSE
16413                      l_ins_hist_csr.old_asset_criticality_code := fnd_api.g_miss_char;
16414                      l_ins_hist_csr.new_asset_criticality_code := p_instance_rec.asset_criticality_code;
16415              END IF;
16416              --
16417              IF    ( l_ins_hist_csr.old_category_id IS NULL
16418                 AND  l_ins_hist_csr.new_category_id IS NULL ) THEN
16419                      IF  ( p_instance_rec.category_id = l_curr_instance_rec.category_id )
16420                       OR ( p_instance_rec.category_id = fnd_api.g_miss_num ) THEN
16421                            l_ins_hist_csr.old_category_id := NULL;
16422                            l_ins_hist_csr.new_category_id := NULL;
16423                      ELSE
16424                            l_ins_hist_csr.old_category_id := fnd_api.g_miss_num;
16425                            l_ins_hist_csr.new_category_id := p_instance_rec.category_id;
16426                      END IF;
16427              ELSE
16428                      l_ins_hist_csr.old_category_id := fnd_api.g_miss_num;
16429                      l_ins_hist_csr.new_category_id := p_instance_rec.category_id;
16430              END IF;
16431              --
16432              IF    ( l_ins_hist_csr.old_equipment_gen_object_id IS NULL
16433                 AND  l_ins_hist_csr.new_equipment_gen_object_id IS NULL ) THEN
16434                      IF  ( p_instance_rec.equipment_gen_object_id = l_curr_instance_rec.equipment_gen_object_id )
16435                       OR ( p_instance_rec.equipment_gen_object_id = fnd_api.g_miss_num ) THEN
16436                            l_ins_hist_csr.old_equipment_gen_object_id := NULL;
16437                            l_ins_hist_csr.new_equipment_gen_object_id := NULL;
16438                      ELSE
16439                            l_ins_hist_csr.old_equipment_gen_object_id := fnd_api.g_miss_num;
16440                            l_ins_hist_csr.new_equipment_gen_object_id := p_instance_rec.equipment_gen_object_id;
16441                      END IF;
16442              ELSE
16443                      l_ins_hist_csr.old_equipment_gen_object_id := fnd_api.g_miss_num;
16444                      l_ins_hist_csr.new_equipment_gen_object_id := p_instance_rec.equipment_gen_object_id;
16445              END IF;
16446              --
16447              IF    ( l_ins_hist_csr.old_instantiation_flag IS NULL
16448                 AND  l_ins_hist_csr.new_instantiation_flag IS NULL ) THEN
16449                      IF  ( p_instance_rec.instantiation_flag = l_curr_instance_rec.instantiation_flag )
16450                       OR ( p_instance_rec.instantiation_flag = fnd_api.g_miss_char ) THEN
16451                            l_ins_hist_csr.old_instantiation_flag := NULL;
16452                            l_ins_hist_csr.new_instantiation_flag := NULL;
16453                      ELSE
16454                            l_ins_hist_csr.old_instantiation_flag := fnd_api.g_miss_char;
16455                            l_ins_hist_csr.new_instantiation_flag := p_instance_rec.instantiation_flag;
16456                      END IF;
16457              ELSE
16458                      l_ins_hist_csr.old_instantiation_flag := fnd_api.g_miss_char;
16459                      l_ins_hist_csr.new_instantiation_flag := p_instance_rec.instantiation_flag;
16460              END IF;
16461              --
16462              IF    ( l_ins_hist_csr.old_linear_location_id IS NULL
16463                 AND  l_ins_hist_csr.new_linear_location_id IS NULL ) THEN
16464                      IF  ( p_instance_rec.linear_location_id = l_curr_instance_rec.linear_location_id )
16465                       OR ( p_instance_rec.linear_location_id = fnd_api.g_miss_num ) THEN
16466                            l_ins_hist_csr.old_linear_location_id := NULL;
16467                            l_ins_hist_csr.new_linear_location_id := NULL;
16468                      ELSE
16469                            l_ins_hist_csr.old_linear_location_id := fnd_api.g_miss_num;
16470                            l_ins_hist_csr.new_linear_location_id := p_instance_rec.linear_location_id;
16471                      END IF;
16472              ELSE
16473                      l_ins_hist_csr.old_linear_location_id := fnd_api.g_miss_num;
16474                      l_ins_hist_csr.new_linear_location_id := p_instance_rec.linear_location_id;
16475              END IF;
16476 
16477              IF    ( l_ins_hist_csr.old_operational_log_flag IS NULL
16478                 AND  l_ins_hist_csr.new_operational_log_flag IS NULL ) THEN
16479                      IF  ( p_instance_rec.operational_log_flag = l_curr_instance_rec.operational_log_flag )
16480                       OR ( p_instance_rec.operational_log_flag = fnd_api.g_miss_char ) THEN
16481                            l_ins_hist_csr.old_operational_log_flag := NULL;
16482                            l_ins_hist_csr.new_operational_log_flag := NULL;
16483                      ELSE
16484                            l_ins_hist_csr.old_operational_log_flag := fnd_api.g_miss_char;
16485                            l_ins_hist_csr.new_operational_log_flag := p_instance_rec.operational_log_flag;
16486                      END IF;
16487              ELSE
16488                      l_ins_hist_csr.old_operational_log_flag := fnd_api.g_miss_char;
16489                      l_ins_hist_csr.new_operational_log_flag := p_instance_rec.operational_log_flag;
16490              END IF;
16491              --
16492              IF    ( l_ins_hist_csr.old_checkin_status IS NULL
16493                 AND  l_ins_hist_csr.new_checkin_status IS NULL ) THEN
16494                      IF  ( p_instance_rec.checkin_status = l_curr_instance_rec.checkin_status )
16495                       OR ( p_instance_rec.checkin_status = fnd_api.g_miss_num ) THEN
16496                            l_ins_hist_csr.old_checkin_status := NULL;
16497                            l_ins_hist_csr.new_checkin_status := NULL;
16498                      ELSE
16499                            l_ins_hist_csr.old_checkin_status := fnd_api.g_miss_num;
16500                            l_ins_hist_csr.new_checkin_status := p_instance_rec.checkin_status;
16501                      END IF;
16502              ELSE
16503                      l_ins_hist_csr.old_checkin_status := fnd_api.g_miss_num;
16504                      l_ins_hist_csr.new_checkin_status := p_instance_rec.checkin_status;
16505              END IF;
16506              --
16507              IF    ( l_ins_hist_csr.old_supplier_warranty_exp_date IS NULL
16508                 AND  l_ins_hist_csr.new_supplier_warranty_exp_date IS NULL ) THEN
16509                      IF  ( p_instance_rec.supplier_warranty_exp_date = l_curr_instance_rec.supplier_warranty_exp_date )
16510                       OR ( p_instance_rec.supplier_warranty_exp_date = fnd_api.g_miss_date ) THEN
16511                            l_ins_hist_csr.old_supplier_warranty_exp_date := NULL;
16512                            l_ins_hist_csr.new_supplier_warranty_exp_date := NULL;
16513                      ELSE
16514                            l_ins_hist_csr.old_supplier_warranty_exp_date := fnd_api.g_miss_date;
16515                            l_ins_hist_csr.new_supplier_warranty_exp_date := p_instance_rec.supplier_warranty_exp_date;
16516                      END IF;
16517              ELSE
16518                      l_ins_hist_csr.old_supplier_warranty_exp_date := fnd_api.g_miss_date;
16519                      l_ins_hist_csr.new_supplier_warranty_exp_date := p_instance_rec.supplier_warranty_exp_date;
16520              END IF;
16521 
16522              --
16523 
16524              IF    ( l_ins_hist_csr.old_attribute16 IS NULL
16525                 AND  l_ins_hist_csr.new_attribute16 IS NULL ) THEN
16526                      IF  ( p_instance_rec.attribute16 = l_curr_instance_rec.attribute16 )
16527                       OR ( p_instance_rec.attribute16 = fnd_api.g_miss_char ) THEN
16528                            l_ins_hist_csr.old_attribute16 := NULL;
16529                            l_ins_hist_csr.new_attribute16 := NULL;
16530                      ELSE
16531                            l_ins_hist_csr.old_attribute16 := fnd_api.g_miss_char;
16532                            l_ins_hist_csr.new_attribute16 := p_instance_rec.attribute16;
16533                      END IF;
16534              ELSE
16535                      l_ins_hist_csr.old_attribute16 := fnd_api.g_miss_char;
16536                      l_ins_hist_csr.new_attribute16 := p_instance_rec.attribute16;
16537              END IF;
16538              --
16539              IF    ( l_ins_hist_csr.old_attribute17 IS NULL
16540                 AND  l_ins_hist_csr.new_attribute17 IS NULL ) THEN
16541                      IF  ( p_instance_rec.attribute17 = l_curr_instance_rec.attribute17 )
16542                       OR ( p_instance_rec.attribute17 = fnd_api.g_miss_char ) THEN
16543                            l_ins_hist_csr.old_attribute17 := NULL;
16544                            l_ins_hist_csr.new_attribute17 := NULL;
16545                      ELSE
16546                            l_ins_hist_csr.old_attribute17 := fnd_api.g_miss_char;
16547                            l_ins_hist_csr.new_attribute17 := p_instance_rec.attribute17;
16548                      END IF;
16549              ELSE
16550                      l_ins_hist_csr.old_attribute17 := fnd_api.g_miss_char;
16551                      l_ins_hist_csr.new_attribute17 := p_instance_rec.attribute17;
16552              END IF;
16553 
16554              IF    ( l_ins_hist_csr.old_attribute18 IS NULL
16555                 AND  l_ins_hist_csr.new_attribute18 IS NULL ) THEN
16556                      IF  ( p_instance_rec.attribute18 = l_curr_instance_rec.attribute18 )
16557                       OR ( p_instance_rec.attribute18 = fnd_api.g_miss_char ) THEN
16558                            l_ins_hist_csr.old_attribute18 := NULL;
16559                            l_ins_hist_csr.new_attribute18 := NULL;
16560                      ELSE
16561                            l_ins_hist_csr.old_attribute18 := fnd_api.g_miss_char;
16562                            l_ins_hist_csr.new_attribute18 := p_instance_rec.attribute18;
16563                      END IF;
16564              ELSE
16565                      l_ins_hist_csr.old_attribute18 := fnd_api.g_miss_char;
16566                      l_ins_hist_csr.new_attribute18 := p_instance_rec.attribute18;
16567              END IF;
16568              --
16569              IF    ( l_ins_hist_csr.old_attribute19 IS NULL
16570                 AND  l_ins_hist_csr.new_attribute19 IS NULL ) THEN
16571                      IF  ( p_instance_rec.attribute19 = l_curr_instance_rec.attribute19 )
16572                       OR ( p_instance_rec.attribute19 = fnd_api.g_miss_char ) THEN
16573                            l_ins_hist_csr.old_attribute19 := NULL;
16574                            l_ins_hist_csr.new_attribute19 := NULL;
16575                      ELSE
16576                            l_ins_hist_csr.old_attribute19 := fnd_api.g_miss_char;
16577                            l_ins_hist_csr.new_attribute19 := p_instance_rec.attribute19;
16578                      END IF;
16579              ELSE
16580                      l_ins_hist_csr.old_attribute19 := fnd_api.g_miss_char;
16581                      l_ins_hist_csr.new_attribute19 := p_instance_rec.attribute19;
16582              END IF;
16583              --
16584              IF    ( l_ins_hist_csr.old_attribute20 IS NULL
16585                 AND  l_ins_hist_csr.new_attribute20 IS NULL ) THEN
16586                      IF  ( p_instance_rec.attribute20 = l_curr_instance_rec.attribute20 )
16587                       OR ( p_instance_rec.attribute20 = fnd_api.g_miss_char ) THEN
16588                            l_ins_hist_csr.old_attribute20 := NULL;
16589                            l_ins_hist_csr.new_attribute20 := NULL;
16590                      ELSE
16591                            l_ins_hist_csr.old_attribute20 := fnd_api.g_miss_char;
16592                            l_ins_hist_csr.new_attribute20 := p_instance_rec.attribute20;
16593                      END IF;
16594              ELSE
16595                      l_ins_hist_csr.old_attribute20 := fnd_api.g_miss_char;
16596                      l_ins_hist_csr.new_attribute20 := p_instance_rec.attribute20;
16597              END IF;
16598 
16599              --
16600              IF    ( l_ins_hist_csr.old_attribute21 IS NULL
16601                 AND  l_ins_hist_csr.new_attribute21 IS NULL ) THEN
16602                      IF  ( p_instance_rec.attribute21 = l_curr_instance_rec.attribute21 )
16603                       OR ( p_instance_rec.attribute21 = fnd_api.g_miss_char ) THEN
16604                            l_ins_hist_csr.old_attribute21 := NULL;
16605                            l_ins_hist_csr.new_attribute21 := NULL;
16606                      ELSE
16607                            l_ins_hist_csr.old_attribute21 := fnd_api.g_miss_char;
16608                            l_ins_hist_csr.new_attribute21 := p_instance_rec.attribute21;
16609                      END IF;
16610              ELSE
16611                      l_ins_hist_csr.old_attribute21 := fnd_api.g_miss_char;
16612                      l_ins_hist_csr.new_attribute21 := p_instance_rec.attribute21;
16613              END IF;
16614              --
16615              IF    ( l_ins_hist_csr.old_attribute22 IS NULL
16616                 AND  l_ins_hist_csr.new_attribute22 IS NULL ) THEN
16617                      IF  ( p_instance_rec.attribute22 = l_curr_instance_rec.attribute22 )
16618                       OR ( p_instance_rec.attribute22 = fnd_api.g_miss_char ) THEN
16619                            l_ins_hist_csr.old_attribute22 := NULL;
16620                            l_ins_hist_csr.new_attribute22 := NULL;
16621                      ELSE
16622                            l_ins_hist_csr.old_attribute22 := fnd_api.g_miss_char;
16623                            l_ins_hist_csr.new_attribute22 := p_instance_rec.attribute22;
16624                      END IF;
16625              ELSE
16626                      l_ins_hist_csr.old_attribute22 := fnd_api.g_miss_char;
16627                      l_ins_hist_csr.new_attribute22 := p_instance_rec.attribute22;
16628              END IF;
16629              --
16630              IF    ( l_ins_hist_csr.old_attribute23 IS NULL
16631                 AND  l_ins_hist_csr.new_attribute23 IS NULL ) THEN
16632                      IF  ( p_instance_rec.attribute23 = l_curr_instance_rec.attribute23 )
16633                       OR ( p_instance_rec.attribute23 = fnd_api.g_miss_char ) THEN
16634                            l_ins_hist_csr.old_attribute23 := NULL;
16635                            l_ins_hist_csr.new_attribute23 := NULL;
16636                      ELSE
16637                            l_ins_hist_csr.old_attribute23 := fnd_api.g_miss_char;
16638                            l_ins_hist_csr.new_attribute23 := p_instance_rec.attribute23;
16639                      END IF;
16640              ELSE
16641                      l_ins_hist_csr.old_attribute23 := fnd_api.g_miss_char;
16642                      l_ins_hist_csr.new_attribute23 := p_instance_rec.attribute23;
16643              END IF;
16644              --
16645              IF    ( l_ins_hist_csr.old_attribute24 IS NULL
16646                 AND  l_ins_hist_csr.new_attribute24 IS NULL ) THEN
16647                      IF  ( p_instance_rec.attribute24 = l_curr_instance_rec.attribute24 )
16648                       OR ( p_instance_rec.attribute24 = fnd_api.g_miss_char ) THEN
16649                            l_ins_hist_csr.old_attribute24 := NULL;
16650                            l_ins_hist_csr.new_attribute24 := NULL;
16651                      ELSE
16652                            l_ins_hist_csr.old_attribute24 := fnd_api.g_miss_char;
16653                            l_ins_hist_csr.new_attribute24 := p_instance_rec.attribute24;
16654                      END IF;
16655              ELSE
16656                      l_ins_hist_csr.old_attribute24 := fnd_api.g_miss_char;
16657                      l_ins_hist_csr.new_attribute24 := p_instance_rec.attribute24;
16658              END IF;
16659              --
16660              IF    ( l_ins_hist_csr.old_attribute25 IS NULL
16661                 AND  l_ins_hist_csr.new_attribute25 IS NULL ) THEN
16662                      IF  ( p_instance_rec.attribute25 = l_curr_instance_rec.attribute25 )
16663                       OR ( p_instance_rec.attribute25 = fnd_api.g_miss_char ) THEN
16664                            l_ins_hist_csr.old_attribute25 := NULL;
16665                            l_ins_hist_csr.new_attribute25 := NULL;
16666                      ELSE
16667                            l_ins_hist_csr.old_attribute25 := fnd_api.g_miss_char;
16668                            l_ins_hist_csr.new_attribute25 := p_instance_rec.attribute25;
16669                      END IF;
16670              ELSE
16671                      l_ins_hist_csr.old_attribute25 := fnd_api.g_miss_char;
16672                      l_ins_hist_csr.new_attribute25 := p_instance_rec.attribute25;
16673              END IF;
16674              --
16675              IF    ( l_ins_hist_csr.old_attribute26 IS NULL
16676                 AND  l_ins_hist_csr.new_attribute26 IS NULL ) THEN
16677                      IF  ( p_instance_rec.attribute26 = l_curr_instance_rec.attribute26 )
16678                       OR ( p_instance_rec.attribute26 = fnd_api.g_miss_char ) THEN
16679                            l_ins_hist_csr.old_attribute26 := NULL;
16680                            l_ins_hist_csr.new_attribute26 := NULL;
16681                      ELSE
16682                            l_ins_hist_csr.old_attribute26 := fnd_api.g_miss_char;
16683                            l_ins_hist_csr.new_attribute26 := p_instance_rec.attribute26;
16684                      END IF;
16685              ELSE
16686                      l_ins_hist_csr.old_attribute26 := fnd_api.g_miss_char;
16687                      l_ins_hist_csr.new_attribute26 := p_instance_rec.attribute26;
16688              END IF;
16689              --
16690              IF    ( l_ins_hist_csr.old_attribute27 IS NULL
16691                 AND  l_ins_hist_csr.new_attribute27 IS NULL ) THEN
16692                      IF  ( p_instance_rec.attribute27 = l_curr_instance_rec.attribute27 )
16693                       OR ( p_instance_rec.attribute27 = fnd_api.g_miss_char ) THEN
16694                            l_ins_hist_csr.old_attribute27 := NULL;
16695                            l_ins_hist_csr.new_attribute27 := NULL;
16696                      ELSE
16697                            l_ins_hist_csr.old_attribute27 := fnd_api.g_miss_char;
16698                            l_ins_hist_csr.new_attribute27 := p_instance_rec.attribute27;
16699                      END IF;
16700              ELSE
16701                      l_ins_hist_csr.old_attribute27 := fnd_api.g_miss_char;
16702                      l_ins_hist_csr.new_attribute27 := p_instance_rec.attribute27;
16703              END IF;
16704              --
16705              IF    ( l_ins_hist_csr.old_attribute28 IS NULL
16706                 AND  l_ins_hist_csr.new_attribute28 IS NULL ) THEN
16707                      IF  ( p_instance_rec.attribute28 = l_curr_instance_rec.attribute28 )
16708                       OR ( p_instance_rec.attribute28 = fnd_api.g_miss_char ) THEN
16709                            l_ins_hist_csr.old_attribute28 := NULL;
16710                            l_ins_hist_csr.new_attribute28 := NULL;
16711                      ELSE
16712                            l_ins_hist_csr.old_attribute28 := fnd_api.g_miss_char;
16713                            l_ins_hist_csr.new_attribute28 := p_instance_rec.attribute28;
16714                      END IF;
16715              ELSE
16716                      l_ins_hist_csr.old_attribute28 := fnd_api.g_miss_char;
16717                      l_ins_hist_csr.new_attribute28 := p_instance_rec.attribute28;
16718              END IF;
16719              --
16720              IF    ( l_ins_hist_csr.old_attribute29 IS NULL
16721                 AND  l_ins_hist_csr.new_attribute29 IS NULL ) THEN
16722                      IF  ( p_instance_rec.attribute29 = l_curr_instance_rec.attribute29 )
16723                       OR ( p_instance_rec.attribute29 = fnd_api.g_miss_char ) THEN
16724                            l_ins_hist_csr.old_attribute29 := NULL;
16725                            l_ins_hist_csr.new_attribute29 := NULL;
16726                      ELSE
16727                            l_ins_hist_csr.old_attribute29 := fnd_api.g_miss_char;
16728                            l_ins_hist_csr.new_attribute29 := p_instance_rec.attribute29;
16729                      END IF;
16730              ELSE
16731                      l_ins_hist_csr.old_attribute29 := fnd_api.g_miss_char;
16732                      l_ins_hist_csr.new_attribute29 := p_instance_rec.attribute29;
16733              END IF;
16734              --
16735              IF    ( l_ins_hist_csr.old_attribute30 IS NULL
16736                 AND  l_ins_hist_csr.new_attribute30 IS NULL ) THEN
16737                      IF  ( p_instance_rec.attribute30 = l_curr_instance_rec.attribute30 )
16738                       OR ( p_instance_rec.attribute30 = fnd_api.g_miss_char ) THEN
16739                            l_ins_hist_csr.old_attribute30 := NULL;
16740                            l_ins_hist_csr.new_attribute30 := NULL;
16741                      ELSE
16742                            l_ins_hist_csr.old_attribute30 := fnd_api.g_miss_char;
16743                            l_ins_hist_csr.new_attribute30 := p_instance_rec.attribute30;
16744                      END IF;
16745              ELSE
16746                      l_ins_hist_csr.old_attribute30 := fnd_api.g_miss_char;
16747                      l_ins_hist_csr.new_attribute30 := p_instance_rec.attribute30;
16748              END IF;
16749              --
16750   	 --end of code for eam integration--
16751                -- Addition of columns for FA Integration
16752              IF    ( l_ins_hist_csr.old_purchase_unit_price IS NULL
16753                 AND  l_ins_hist_csr.new_purchase_unit_price IS NULL ) THEN
16754                      IF  ( p_instance_rec.purchase_unit_price = l_curr_instance_rec.purchase_unit_price )
16755                       OR ( p_instance_rec.purchase_unit_price = fnd_api.g_miss_num ) THEN
16756                            l_ins_hist_csr.old_purchase_unit_price := NULL;
16757                            l_ins_hist_csr.new_purchase_unit_price := NULL;
16758                      ELSE
16759                            l_ins_hist_csr.old_purchase_unit_price := fnd_api.g_miss_num;
16760                            l_ins_hist_csr.new_purchase_unit_price := p_instance_rec.purchase_unit_price;
16761                      END IF;
16762              ELSE
16763                      l_ins_hist_csr.old_purchase_unit_price := fnd_api.g_miss_num;
16764                      l_ins_hist_csr.new_purchase_unit_price := p_instance_rec.purchase_unit_price;
16765              END IF;
16766              --
16767              IF    ( l_ins_hist_csr.old_purchase_currency_code IS NULL
16768                 AND  l_ins_hist_csr.new_purchase_currency_code IS NULL ) THEN
16769                      IF  ( p_instance_rec.purchase_currency_code = l_curr_instance_rec.purchase_currency_code )
16770                       OR ( p_instance_rec.purchase_currency_code = fnd_api.g_miss_char ) THEN
16771                            l_ins_hist_csr.old_purchase_currency_code := NULL;
16772                            l_ins_hist_csr.new_purchase_currency_code := NULL;
16773                      ELSE
16774                            l_ins_hist_csr.old_purchase_currency_code := fnd_api.g_miss_char;
16775                            l_ins_hist_csr.new_purchase_currency_code := p_instance_rec.purchase_currency_code;
16776                      END IF;
16777              ELSE
16778                      l_ins_hist_csr.old_purchase_currency_code := fnd_api.g_miss_char;
16779                      l_ins_hist_csr.new_purchase_currency_code := p_instance_rec.purchase_currency_code;
16780              END IF;
16781              --
16782              IF    ( l_ins_hist_csr.old_payables_unit_price IS NULL
16783                 AND  l_ins_hist_csr.new_payables_unit_price IS NULL ) THEN
16784                      IF  ( p_instance_rec.payables_unit_price = l_curr_instance_rec.payables_unit_price )
16785                       OR ( p_instance_rec.payables_unit_price = fnd_api.g_miss_num ) THEN
16786                            l_ins_hist_csr.old_payables_unit_price := NULL;
16787                            l_ins_hist_csr.new_payables_unit_price := NULL;
16788                      ELSE
16789                            l_ins_hist_csr.old_payables_unit_price := fnd_api.g_miss_num;
16790                            l_ins_hist_csr.new_payables_unit_price := p_instance_rec.payables_unit_price;
16791                      END IF;
16792              ELSE
16793                      l_ins_hist_csr.old_payables_unit_price := fnd_api.g_miss_num;
16794                      l_ins_hist_csr.new_payables_unit_price := p_instance_rec.payables_unit_price;
16795              END IF;
16796              --
16797              IF    ( l_ins_hist_csr.old_payables_currency_code IS NULL
16798                 AND  l_ins_hist_csr.new_payables_currency_code IS NULL ) THEN
16799                      IF  ( p_instance_rec.payables_currency_code = l_curr_instance_rec.payables_currency_code )
16800                       OR ( p_instance_rec.payables_currency_code = fnd_api.g_miss_char ) THEN
16801                            l_ins_hist_csr.old_payables_currency_code := NULL;
16802                            l_ins_hist_csr.new_payables_currency_code := NULL;
16803                      ELSE
16804                            l_ins_hist_csr.old_payables_currency_code := fnd_api.g_miss_char;
16805                            l_ins_hist_csr.new_payables_currency_code := p_instance_rec.payables_currency_code;
16806                      END IF;
16807              ELSE
16808                      l_ins_hist_csr.old_payables_currency_code := fnd_api.g_miss_char;
16809                      l_ins_hist_csr.new_payables_currency_code := p_instance_rec.payables_currency_code;
16810              END IF;
16811              --
16812              IF    ( l_ins_hist_csr.old_sales_unit_price IS NULL
16813                 AND  l_ins_hist_csr.new_sales_unit_price IS NULL ) THEN
16814                      IF  ( p_instance_rec.sales_unit_price = l_curr_instance_rec.sales_unit_price )
16815                       OR ( p_instance_rec.sales_unit_price = fnd_api.g_miss_num ) THEN
16816                            l_ins_hist_csr.old_sales_unit_price := NULL;
16817                            l_ins_hist_csr.new_sales_unit_price := NULL;
16818                      ELSE
16819                            l_ins_hist_csr.old_sales_unit_price := fnd_api.g_miss_num;
16820                            l_ins_hist_csr.new_sales_unit_price := p_instance_rec.sales_unit_price;
16821                      END IF;
16822              ELSE
16823                      l_ins_hist_csr.old_sales_unit_price := fnd_api.g_miss_num;
16824                      l_ins_hist_csr.new_sales_unit_price := p_instance_rec.sales_unit_price;
16825              END IF;
16826              --
16827              IF    ( l_ins_hist_csr.old_sales_currency_code IS NULL
16828                 AND  l_ins_hist_csr.new_sales_currency_code IS NULL ) THEN
16829                      IF  ( p_instance_rec.sales_currency_code = l_curr_instance_rec.sales_currency_code )
16830                       OR ( p_instance_rec.sales_currency_code = fnd_api.g_miss_char ) THEN
16831                            l_ins_hist_csr.old_sales_currency_code := NULL;
16832                            l_ins_hist_csr.new_sales_currency_code := NULL;
16833                      ELSE
16834                            l_ins_hist_csr.old_sales_currency_code := fnd_api.g_miss_char;
16835                            l_ins_hist_csr.new_sales_currency_code := p_instance_rec.sales_currency_code;
16836                      END IF;
16837              ELSE
16838                      l_ins_hist_csr.old_sales_currency_code := fnd_api.g_miss_char;
16839                      l_ins_hist_csr.new_sales_currency_code := p_instance_rec.sales_currency_code;
16840              END IF;
16841              --
16842              IF    ( l_ins_hist_csr.old_operational_status_code IS NULL
16843                 AND  l_ins_hist_csr.new_operational_status_code IS NULL ) THEN
16844                      IF  ( p_instance_rec.operational_status_code = l_curr_instance_rec.operational_status_code )
16845                       OR ( p_instance_rec.operational_status_code = fnd_api.g_miss_char ) THEN
16846                            l_ins_hist_csr.old_operational_status_code := NULL;
16847                            l_ins_hist_csr.new_operational_status_code := NULL;
16848                      ELSE
16849                            l_ins_hist_csr.old_operational_status_code := fnd_api.g_miss_char;
16850                            l_ins_hist_csr.new_operational_status_code := p_instance_rec.operational_status_code;
16851                      END IF;
16852              ELSE
16853                      l_ins_hist_csr.old_operational_status_code := fnd_api.g_miss_char;
16854                      l_ins_hist_csr.new_operational_status_code := p_instance_rec.operational_status_code;
16855              END IF;
16856              --
16857                -- End addition of columns for FA Integration
16858 
16859 
16860 
16861 -- End addition for bug 2671179
16862          CSI_ITEM_INSTANCES_H_PKG.Update_Row
16863            ( p_INSTANCE_HISTORY_ID               => l_ins_hist_id
16864             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
16865             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
16866             ,p_OLD_INSTANCE_NUMBER               => l_ins_hist_csr.OLD_INSTANCE_NUMBER
16867             ,p_NEW_INSTANCE_NUMBER               => l_ins_hist_csr.NEW_INSTANCE_NUMBER
16868             ,p_OLD_EXTERNAL_REFERENCE            => l_ins_hist_csr.OLD_EXTERNAL_REFERENCE
16869             ,p_NEW_EXTERNAL_REFERENCE            => l_ins_hist_csr.NEW_EXTERNAL_REFERENCE
16870             ,p_OLD_INVENTORY_ITEM_ID             => l_ins_hist_csr.OLD_INVENTORY_ITEM_ID
16871             ,p_NEW_INVENTORY_ITEM_ID             => l_ins_hist_csr.NEW_INVENTORY_ITEM_ID
16872             ,p_OLD_INVENTORY_REVISION            => l_ins_hist_csr.OLD_INVENTORY_REVISION
16873             ,p_NEW_INVENTORY_REVISION            => l_ins_hist_csr.NEW_INVENTORY_REVISION
16874             ,p_OLD_INV_MASTER_ORGZN_ID           => l_ins_hist_csr.OLD_INV_MASTER_ORGANIZATION_ID
16875             ,p_NEW_INV_MASTER_ORGZN_ID           => l_ins_hist_csr.NEW_INV_MASTER_ORGANIZATION_ID
16876             ,p_OLD_SERIAL_NUMBER                 => l_ins_hist_csr.OLD_SERIAL_NUMBER
16877             ,p_NEW_SERIAL_NUMBER                 => l_ins_hist_csr.NEW_SERIAL_NUMBER
16878             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_ins_hist_csr.OLD_MFG_SERIAL_NUMBER_FLAG
16879             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_ins_hist_csr.NEW_MFG_SERIAL_NUMBER_FLAG
16880             ,p_OLD_LOT_NUMBER                    => l_ins_hist_csr.OLD_LOT_NUMBER
16881             ,p_NEW_LOT_NUMBER                    => l_ins_hist_csr.NEW_LOT_NUMBER
16882             ,p_OLD_QUANTITY                      => l_ins_hist_csr.OLD_QUANTITY
16883             ,p_NEW_QUANTITY                      => l_ins_hist_csr.NEW_QUANTITY
16884             ,p_OLD_UNIT_OF_MEASURE               => l_ins_hist_csr.OLD_UNIT_OF_MEASURE
16885             ,p_NEW_UNIT_OF_MEASURE               => l_ins_hist_csr.NEW_UNIT_OF_MEASURE
16886             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_ins_hist_csr.OLD_ACCOUNTING_CLASS_CODE
16887             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_ins_hist_csr.NEW_ACCOUNTING_CLASS_CODE
16888             ,p_OLD_INSTANCE_CONDITION_ID         => l_ins_hist_csr.OLD_INSTANCE_CONDITION_ID
16889             ,p_NEW_INSTANCE_CONDITION_ID         => l_ins_hist_csr.NEW_INSTANCE_CONDITION_ID
16890             ,p_OLD_INSTANCE_STATUS_ID            => l_ins_hist_csr.OLD_INSTANCE_STATUS_ID
16891             ,p_NEW_INSTANCE_STATUS_ID            => l_ins_hist_csr.NEW_INSTANCE_STATUS_ID
16892             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_ins_hist_csr.OLD_CUSTOMER_VIEW_FLAG
16893             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_ins_hist_csr.NEW_CUSTOMER_VIEW_FLAG
16894             ,p_OLD_MERCHANT_VIEW_FLAG            => l_ins_hist_csr.OLD_MERCHANT_VIEW_FLAG
16895             ,p_NEW_MERCHANT_VIEW_FLAG            => l_ins_hist_csr.NEW_MERCHANT_VIEW_FLAG
16896             ,p_OLD_SELLABLE_FLAG                 => l_ins_hist_csr.OLD_SELLABLE_FLAG
16897             ,p_NEW_SELLABLE_FLAG                 => l_ins_hist_csr.NEW_SELLABLE_FLAG
16898             ,p_OLD_SYSTEM_ID                     => l_ins_hist_csr.OLD_SYSTEM_ID
16899             ,p_NEW_SYSTEM_ID                     => l_ins_hist_csr.NEW_SYSTEM_ID
16900             ,p_OLD_INSTANCE_TYPE_CODE            => l_ins_hist_csr.OLD_INSTANCE_TYPE_CODE
16901             ,p_NEW_INSTANCE_TYPE_CODE            => l_ins_hist_csr.NEW_INSTANCE_TYPE_CODE
16902             ,p_OLD_ACTIVE_START_DATE             => l_ins_hist_csr.OLD_ACTIVE_START_DATE
16903             ,p_NEW_ACTIVE_START_DATE             => l_ins_hist_csr.NEW_ACTIVE_START_DATE
16904             ,p_OLD_ACTIVE_END_DATE               => l_ins_hist_csr.OLD_ACTIVE_END_DATE
16905             ,p_NEW_ACTIVE_END_DATE               => l_ins_hist_csr.NEW_ACTIVE_END_DATE
16906             ,p_OLD_LOCATION_TYPE_CODE            => l_ins_hist_csr.OLD_LOCATION_TYPE_CODE
16907             ,p_NEW_LOCATION_TYPE_CODE            => l_ins_hist_csr.NEW_LOCATION_TYPE_CODE
16908             ,p_OLD_LOCATION_ID                   => l_ins_hist_csr.OLD_LOCATION_ID
16909             ,p_NEW_LOCATION_ID                   => l_ins_hist_csr.NEW_LOCATION_ID
16910             ,p_OLD_INV_ORGANIZATION_ID           => l_ins_hist_csr.OLD_INV_ORGANIZATION_ID
16911             ,p_NEW_INV_ORGANIZATION_ID           => l_ins_hist_csr.NEW_INV_ORGANIZATION_ID
16912             ,p_OLD_INV_SUBINVENTORY_NAME         => l_ins_hist_csr.OLD_INV_SUBINVENTORY_NAME
16913             ,p_NEW_INV_SUBINVENTORY_NAME         => l_ins_hist_csr.NEW_INV_SUBINVENTORY_NAME
16914             ,p_OLD_INV_LOCATOR_ID                => l_ins_hist_csr.OLD_INV_LOCATOR_ID
16915             ,p_NEW_INV_LOCATOR_ID                => l_ins_hist_csr.NEW_INV_LOCATOR_ID
16916             ,p_OLD_PA_PROJECT_ID                 => l_ins_hist_csr.OLD_PA_PROJECT_ID
16917             ,p_NEW_PA_PROJECT_ID                 => l_ins_hist_csr.NEW_PA_PROJECT_ID
16918             ,p_OLD_PA_PROJECT_TASK_ID            => l_ins_hist_csr.OLD_PA_PROJECT_TASK_ID
16919             ,p_NEW_PA_PROJECT_TASK_ID            => l_ins_hist_csr.NEW_PA_PROJECT_TASK_ID
16920             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_ins_hist_csr.OLD_IN_TRANSIT_ORDER_LINE_ID
16921             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_ins_hist_csr.NEW_IN_TRANSIT_ORDER_LINE_ID
16922             ,p_OLD_WIP_JOB_ID                    => l_ins_hist_csr.OLD_WIP_JOB_ID
16923             ,p_NEW_WIP_JOB_ID                    => l_ins_hist_csr.NEW_WIP_JOB_ID
16924             ,p_OLD_PO_ORDER_LINE_ID              => l_ins_hist_csr.OLD_PO_ORDER_LINE_ID
16925             ,p_NEW_PO_ORDER_LINE_ID              => l_ins_hist_csr.NEW_PO_ORDER_LINE_ID
16926             ,p_OLD_COMPLETENESS_FLAG             => l_ins_hist_csr.OLD_COMPLETENESS_FLAG
16927             ,p_NEW_COMPLETENESS_FLAG             => l_ins_hist_csr.NEW_COMPLETENESS_FLAG
16928             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
16929             ,p_NEW_CONTEXT                       => l_ins_hist_csr.NEW_CONTEXT
16930             ,P_OLD_CONTEXT                       => l_ins_hist_csr.OLD_CONTEXT
16931             ,p_NEW_ATTRIBUTE1                    => l_ins_hist_csr.NEW_ATTRIBUTE1
16932             ,p_OLD_ATTRIBUTE1                    => l_ins_hist_csr.OLD_ATTRIBUTE1
16933             ,p_NEW_ATTRIBUTE2                    => l_ins_hist_csr.NEW_ATTRIBUTE2
16934             ,p_OLD_ATTRIBUTE2                    => l_ins_hist_csr.OLD_ATTRIBUTE2
16935             ,p_NEW_ATTRIBUTE3                    => l_ins_hist_csr.NEW_ATTRIBUTE3
16936             ,p_OLD_ATTRIBUTE3                    => l_ins_hist_csr.OLD_ATTRIBUTE3
16937             ,p_NEW_ATTRIBUTE4                    => l_ins_hist_csr.NEW_ATTRIBUTE4
16938             ,p_OLD_ATTRIBUTE4                    => l_ins_hist_csr.OLD_ATTRIBUTE4
16939             ,p_NEW_ATTRIBUTE5                    => l_ins_hist_csr.NEW_ATTRIBUTE5
16940             ,p_OLD_ATTRIBUTE5                    => l_ins_hist_csr.OLD_ATTRIBUTE5
16941             ,p_NEW_ATTRIBUTE6                    => l_ins_hist_csr.NEW_ATTRIBUTE6
16942             ,p_OLD_ATTRIBUTE6                    => l_ins_hist_csr.OLD_ATTRIBUTE6
16943             ,p_NEW_ATTRIBUTE7                    => l_ins_hist_csr.NEW_ATTRIBUTE7
16944             ,p_OLD_ATTRIBUTE7                    => l_ins_hist_csr.OLD_ATTRIBUTE7
16945             ,p_NEW_ATTRIBUTE8                    => l_ins_hist_csr.NEW_ATTRIBUTE8
16946             ,p_OLD_ATTRIBUTE8                    => l_ins_hist_csr.OLD_ATTRIBUTE8
16947             ,p_NEW_ATTRIBUTE9                    => l_ins_hist_csr.NEW_ATTRIBUTE9
16948             ,p_OLD_ATTRIBUTE9                    => l_ins_hist_csr.OLD_ATTRIBUTE9
16949             ,p_NEW_ATTRIBUTE10                   => l_ins_hist_csr.NEW_ATTRIBUTE10
16950             ,p_OLD_ATTRIBUTE10                   => l_ins_hist_csr.OLD_ATTRIBUTE10
16951             ,p_NEW_ATTRIBUTE11                   => l_ins_hist_csr.NEW_ATTRIBUTE11
16952             ,p_OLD_ATTRIBUTE11                   => l_ins_hist_csr.OLD_ATTRIBUTE11
16953             ,p_NEW_ATTRIBUTE12                   => l_ins_hist_csr.NEW_ATTRIBUTE12
16954             ,p_OLD_ATTRIBUTE12                   => l_ins_hist_csr.OLD_ATTRIBUTE12
16955             ,p_NEW_ATTRIBUTE13                   => l_ins_hist_csr.NEW_ATTRIBUTE13
16956             ,p_OLD_ATTRIBUTE13                   => l_ins_hist_csr.OLD_ATTRIBUTE13
16957             ,p_NEW_ATTRIBUTE14                   => l_ins_hist_csr.NEW_ATTRIBUTE14
16958             ,p_OLD_ATTRIBUTE14                   => l_ins_hist_csr.OLD_ATTRIBUTE14
16959             ,p_NEW_ATTRIBUTE15                   => l_ins_hist_csr.NEW_ATTRIBUTE15
16960             ,p_OLD_ATTRIBUTE15                   => l_ins_hist_csr.OLD_ATTRIBUTE15
16961             ,p_CREATED_BY                        => fnd_api.g_miss_num
16962             ,p_CREATION_DATE                     => fnd_api.g_miss_date
16963             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
16964             ,p_LAST_UPDATE_DATE                  => SYSDATE
16965             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
16966             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
16967             ,p_OLD_INST_LOC_TYPE_CODE            => l_ins_hist_csr.OLD_INST_LOC_TYPE_CODE
16968             ,p_NEW_INST_LOC_TYPE_CODE            => l_ins_hist_csr.NEW_INST_LOC_TYPE_CODE
16969             ,p_OLD_INST_LOC_ID                   => l_ins_hist_csr.OLD_INST_LOC_ID
16970             ,p_NEW_INST_LOC_ID                   => l_ins_hist_csr.NEW_INST_LOC_ID
16971             ,p_OLD_INST_USAGE_CODE               => l_ins_hist_csr.OLD_INST_USAGE_CODE
16972             ,p_NEW_INST_USAGE_CODE               => l_ins_hist_csr.NEW_INST_USAGE_CODE
16973             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => l_ins_hist_csr.OLD_LAST_VLD_ORGANIZATION_ID
16974             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => l_ins_hist_csr.NEW_LAST_VLD_ORGANIZATION_ID
16975             ,p_OLD_CONFIG_INST_REV_NUM           => l_ins_hist_csr.OLD_CONFIG_INST_REV_NUM
16976             ,p_NEW_CONFIG_INST_REV_NUM           => l_ins_hist_csr.NEW_CONFIG_INST_REV_NUM
16977             ,p_OLD_CONFIG_VALID_STATUS           => l_ins_hist_csr.OLD_CONFIG_VALID_STATUS
16978             ,p_NEW_CONFIG_VALID_STATUS           => l_ins_hist_csr.NEW_CONFIG_VALID_STATUS
16979             ,p_OLD_INSTANCE_DESCRIPTION          => l_ins_hist_csr.OLD_INSTANCE_DESCRIPTION
16980             ,p_NEW_INSTANCE_DESCRIPTION          => l_ins_hist_csr.NEW_INSTANCE_DESCRIPTION
16981             ,p_OLD_INSTALL_DATE                  => l_ins_hist_csr.OLD_INSTALL_DATE
16982             ,p_NEW_INSTALL_DATE                  => l_ins_hist_csr.NEW_INSTALL_DATE
16983             ,p_OLD_RETURN_BY_DATE                => l_ins_hist_csr.OLD_RETURN_BY_DATE
16984             ,p_NEW_RETURN_BY_DATE                => l_ins_hist_csr.NEW_RETURN_BY_DATE
16985             ,p_OLD_ACTUAL_RETURN_DATE            => l_ins_hist_csr.OLD_ACTUAL_RETURN_DATE
16986             ,p_NEW_ACTUAL_RETURN_DATE            => l_ins_hist_csr.NEW_ACTUAL_RETURN_DATE
16987             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_ins_hist_csr.OLD_OE_AGREEMENT_ID
16988             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_ins_hist_csr.NEW_OE_AGREEMENT_ID
16989 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_ins_hist_csr.OLD_LAST_OE_ORDER_LINE_ID
16990 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_ins_hist_csr.NEW_LAST_OE_ORDER_LINE_ID
16991 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_ins_hist_csr.OLD_LAST_OE_RMA_LINE_ID
16992 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_ins_hist_csr.NEW_LAST_OE_RMA_LINE_ID
16993 	    ,p_OLD_LAST_WIP_JOB_ID               => l_ins_hist_csr.OLD_LAST_WIP_JOB_ID
16994 	    ,p_NEW_LAST_WIP_JOB_ID               => l_ins_hist_csr.NEW_LAST_WIP_JOB_ID
16995 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_ins_hist_csr.OLD_LAST_PO_PO_LINE_ID
16996 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_ins_hist_csr.NEW_LAST_PO_PO_LINE_ID
16997 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_ins_hist_csr.OLD_LAST_PA_PROJECT_ID
16998 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_ins_hist_csr.NEW_LAST_PA_PROJECT_ID
16999 	    ,p_OLD_LAST_PA_TASK_ID          => l_ins_hist_csr.OLD_LAST_PA_TASK_ID
17000 	    ,p_NEW_LAST_PA_TASK_ID          => l_ins_hist_csr.NEW_LAST_PA_TASK_ID
17001 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_ins_hist_csr.OLD_LAST_TXN_LINE_DETAIL_ID
17002 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_ins_hist_csr.NEW_LAST_TXN_LINE_DETAIL_ID
17003 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_ins_hist_csr.OLD_LAST_OE_PO_NUMBER
17004 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_ins_hist_csr.NEW_LAST_OE_PO_NUMBER
17005  	    --start of parameters addition for eam integration--
17006 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_ins_hist_csr.OLD_NETWORK_ASSET_FLAG
17007 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_ins_hist_csr.NEW_NETWORK_ASSET_FLAG
17008 	    ,p_OLD_MAINTAINABLE_FLAG              => l_ins_hist_csr.OLD_MAINTAINABLE_FLAG
17009 	    ,p_NEW_MAINTAINABLE_FLAG              => l_ins_hist_csr.NEW_MAINTAINABLE_FLAG
17010 	    ,p_OLD_PN_LOCATION_ID                 => l_ins_hist_csr.OLD_PN_LOCATION_ID
17011 	    ,p_NEW_PN_LOCATION_ID                 => l_ins_hist_csr.NEW_PN_LOCATION_ID
17012 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_ins_hist_csr.OLD_ASSET_CRITICALITY_CODE
17013 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_ins_hist_csr.NEW_ASSET_CRITICALITY_CODE
17014 	    ,p_OLD_CATEGORY_ID                    => l_ins_hist_csr.OLD_CATEGORY_ID
17015 	    ,p_NEW_CATEGORY_ID                    => l_ins_hist_csr.NEW_CATEGORY_ID
17016 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_ins_hist_csr.OLD_EQUIPMENT_GEN_OBJECT_ID
17017 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_ins_hist_csr.NEW_EQUIPMENT_GEN_OBJECT_ID
17018 	    ,p_OLD_INSTANTIATION_FLAG             => l_ins_hist_csr.OLD_INSTANTIATION_FLAG
17019 	    ,p_NEW_INSTANTIATION_FLAG             => l_ins_hist_csr.NEW_INSTANTIATION_FLAG
17020 	    ,p_OLD_LINEAR_LOCATION_ID             => l_ins_hist_csr.OLD_LINEAR_LOCATION_ID
17021 	    ,p_NEW_LINEAR_LOCATION_ID             => l_ins_hist_csr.NEW_LINEAR_LOCATION_ID
17022 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_ins_hist_csr.OLD_OPERATIONAL_LOG_FLAG
17023 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_ins_hist_csr.NEW_OPERATIONAL_LOG_FLAG
17024 	    ,p_OLD_CHECKIN_STATUS                 => l_ins_hist_csr.OLD_CHECKIN_STATUS
17025 	    ,p_NEW_CHECKIN_STATUS                 => l_ins_hist_csr.NEW_CHECKIN_STATUS
17026 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_ins_hist_csr.OLD_SUPPLIER_WARRANTY_EXP_DATE
17027 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_ins_hist_csr.NEW_SUPPLIER_WARRANTY_EXP_DATE
17028             ,p_OLD_ATTRIBUTE16                    => l_ins_hist_csr.OLD_ATTRIBUTE16
17029             ,p_NEW_ATTRIBUTE16                    => l_ins_hist_csr.NEW_ATTRIBUTE16
17030             ,p_OLD_ATTRIBUTE17                    => l_ins_hist_csr.OLD_ATTRIBUTE17
17031             ,p_NEW_ATTRIBUTE17                    => l_ins_hist_csr.NEW_ATTRIBUTE17
17032             ,p_OLD_ATTRIBUTE18                    => l_ins_hist_csr.OLD_ATTRIBUTE18
17033             ,p_NEW_ATTRIBUTE18                    => l_ins_hist_csr.NEW_ATTRIBUTE18
17034             ,p_OLD_ATTRIBUTE19                    => l_ins_hist_csr.OLD_ATTRIBUTE19
17035             ,p_NEW_ATTRIBUTE19                    => l_ins_hist_csr.NEW_ATTRIBUTE19
17036             ,p_OLD_ATTRIBUTE20                    => l_ins_hist_csr.OLD_ATTRIBUTE20
17037             ,p_NEW_ATTRIBUTE20                    => l_ins_hist_csr.NEW_ATTRIBUTE20
17038             ,p_OLD_ATTRIBUTE21                    => l_ins_hist_csr.OLD_ATTRIBUTE21
17039             ,p_NEW_ATTRIBUTE21                    => l_ins_hist_csr.NEW_ATTRIBUTE21
17040             ,p_OLD_ATTRIBUTE22                    => l_ins_hist_csr.OLD_ATTRIBUTE22
17041             ,p_NEW_ATTRIBUTE22                    => l_ins_hist_csr.NEW_ATTRIBUTE22
17042             ,p_OLD_ATTRIBUTE23                    => l_ins_hist_csr.OLD_ATTRIBUTE23
17043             ,p_NEW_ATTRIBUTE23                    => l_ins_hist_csr.NEW_ATTRIBUTE23
17044             ,p_OLD_ATTRIBUTE24                    => l_ins_hist_csr.OLD_ATTRIBUTE24
17045             ,p_NEW_ATTRIBUTE24                    => l_ins_hist_csr.NEW_ATTRIBUTE24
17046             ,p_OLD_ATTRIBUTE25                    => l_ins_hist_csr.OLD_ATTRIBUTE25
17047             ,p_NEW_ATTRIBUTE25                    => l_ins_hist_csr.NEW_ATTRIBUTE25
17048             ,p_OLD_ATTRIBUTE26                    => l_ins_hist_csr.OLD_ATTRIBUTE26
17049             ,p_NEW_ATTRIBUTE26                    => l_ins_hist_csr.NEW_ATTRIBUTE26
17050             ,p_OLD_ATTRIBUTE27                    => l_ins_hist_csr.OLD_ATTRIBUTE27
17051             ,p_NEW_ATTRIBUTE27                    => l_ins_hist_csr.NEW_ATTRIBUTE27
17052             ,p_OLD_ATTRIBUTE28                    => l_ins_hist_csr.OLD_ATTRIBUTE28
17053             ,p_NEW_ATTRIBUTE28                    => l_ins_hist_csr.NEW_ATTRIBUTE28
17054             ,p_OLD_ATTRIBUTE29                    => l_ins_hist_csr.OLD_ATTRIBUTE29
17055             ,p_NEW_ATTRIBUTE29                    => l_ins_hist_csr.NEW_ATTRIBUTE29
17056             ,p_OLD_ATTRIBUTE30                    => l_ins_hist_csr.OLD_ATTRIBUTE30
17057             ,p_NEW_ATTRIBUTE30                    => l_ins_hist_csr.NEW_ATTRIBUTE30
17058   	    --end of parameters addition for eam integration--
17059         -- Addition of columns for FA Integration
17060             ,p_OLD_PAYABLES_UNIT_PRICE            => l_ins_hist_csr.OLD_PAYABLES_UNIT_PRICE
17061             ,p_NEW_PAYABLES_UNIT_PRICE            => l_ins_hist_csr.NEW_PAYABLES_UNIT_PRICE
17062             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_ins_hist_csr.OLD_PAYABLES_CURRENCY_CODE
17063             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_ins_hist_csr.NEW_PAYABLES_CURRENCY_CODE
17064             ,p_OLD_PURCHASE_UNIT_PRICE            => l_ins_hist_csr.OLD_PURCHASE_UNIT_PRICE
17065             ,p_NEW_PURCHASE_UNIT_PRICE            => l_ins_hist_csr.NEW_PURCHASE_UNIT_PRICE
17066             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_ins_hist_csr.OLD_PURCHASE_CURRENCY_CODE
17067             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_ins_hist_csr.NEW_PURCHASE_CURRENCY_CODE
17068             ,p_OLD_SALES_UNIT_PRICE               => l_ins_hist_csr.OLD_SALES_UNIT_PRICE
17069             ,p_NEW_SALES_UNIT_PRICE               => l_ins_hist_csr.NEW_SALES_UNIT_PRICE
17070             ,p_OLD_SALES_CURRENCY_CODE            => l_ins_hist_csr.OLD_SALES_CURRENCY_CODE
17071             ,p_NEW_SALES_CURRENCY_CODE            => l_ins_hist_csr.NEW_SALES_CURRENCY_CODE
17072             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_ins_hist_csr.OLD_OPERATIONAL_STATUS_CODE
17073             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_ins_hist_csr.NEW_OPERATIONAL_STATUS_CODE
17074         -- End addition of columns for FA Integration
17075             -- Begin Add Code for Siebel Genesis Project
17076             ,p_OLD_SOURCE_CODE                   => l_ins_hist_csr.OLD_SOURCE_CODE
17077             ,p_NEW_SOURCE_CODE                   => l_ins_hist_csr.NEW_SOURCE_CODE
17078             -- End Add Code for Siebel Genesis Project
17079             );
17080 
17081         END IF;
17082 
17083       EXCEPTION
17084 
17085       WHEN NO_DATA_FOUND THEN
17086 
17087         IF (l_mod_value = 0) THEN
17088 
17089           -- If the mod value is 0 then dump all the columns both changed and unchanged
17090           -- changed columns have old and new values while the unchanged values have old and new values
17091           -- exactly same
17092           IF (p_instance_rec.INSTANCE_NUMBER = FND_API.G_MISS_CHAR) THEN
17093               p_instance_rec.INSTANCE_NUMBER := l_curr_instance_rec.INSTANCE_NUMBER;
17094           END IF;
17095           IF (p_instance_rec.EXTERNAL_REFERENCE = FND_API.G_MISS_CHAR) THEN
17096               p_instance_rec.EXTERNAL_REFERENCE := l_curr_instance_rec.EXTERNAL_REFERENCE;
17097           END IF;
17098           IF (p_instance_rec.INVENTORY_ITEM_ID = FND_API.G_MISS_NUM) THEN
17099               p_instance_rec.INVENTORY_ITEM_ID := l_curr_instance_rec.INVENTORY_ITEM_ID;
17100           END IF;
17101           IF (p_instance_rec.INVENTORY_REVISION = FND_API.G_MISS_CHAR) THEN
17102               p_instance_rec.INVENTORY_REVISION := l_curr_instance_rec.INVENTORY_REVISION;
17103           END IF;
17104           IF (p_instance_rec.INV_MASTER_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
17105               p_instance_rec.INV_MASTER_ORGANIZATION_ID := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
17106           END IF;
17107           IF (p_instance_rec.SERIAL_NUMBER = FND_API.G_MISS_CHAR) THEN
17108               p_instance_rec.SERIAL_NUMBER := l_curr_instance_rec.SERIAL_NUMBER;
17109           END IF;
17110           IF (p_instance_rec.MFG_SERIAL_NUMBER_FLAG = FND_API.G_MISS_CHAR) THEN
17111               p_instance_rec.MFG_SERIAL_NUMBER_FLAG := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
17112           END IF;
17113           IF (p_instance_rec.LOT_NUMBER = FND_API.G_MISS_CHAR) THEN
17114               p_instance_rec.LOT_NUMBER := l_curr_instance_rec.LOT_NUMBER;
17115           END IF;
17116           IF (p_instance_rec.QUANTITY = FND_API.G_MISS_NUM) THEN
17117               p_instance_rec.QUANTITY := l_curr_instance_rec.QUANTITY;
17118           END IF;
17119           IF (p_instance_rec.UNIT_OF_MEASURE = FND_API.G_MISS_CHAR) THEN
17120               p_instance_rec.UNIT_OF_MEASURE := l_curr_instance_rec.UNIT_OF_MEASURE;
17121           END IF;
17122           IF (p_instance_rec.ACCOUNTING_CLASS_CODE = FND_API.G_MISS_CHAR) THEN
17123               p_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
17124           END IF;
17125           IF (p_instance_rec.INSTANCE_CONDITION_ID = FND_API.G_MISS_NUM) THEN
17126               p_instance_rec.INSTANCE_CONDITION_ID := l_curr_instance_rec.INSTANCE_CONDITION_ID;
17127           END IF;
17128           IF (p_instance_rec.INSTANCE_STATUS_ID = FND_API.G_MISS_NUM) THEN
17129               p_instance_rec.INSTANCE_STATUS_ID := l_curr_instance_rec.INSTANCE_STATUS_ID;
17130           END IF;
17131           IF (p_instance_rec.CUSTOMER_VIEW_FLAG = FND_API.G_MISS_CHAR) THEN
17132               p_instance_rec.CUSTOMER_VIEW_FLAG := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
17133           END IF;
17134           IF (p_instance_rec.MERCHANT_VIEW_FLAG = FND_API.G_MISS_CHAR) THEN
17135               p_instance_rec.MERCHANT_VIEW_FLAG := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
17136           END IF;
17137           IF (p_instance_rec.SELLABLE_FLAG = FND_API.G_MISS_CHAR) THEN
17138               p_instance_rec.SELLABLE_FLAG := l_curr_instance_rec.SELLABLE_FLAG;
17139           END IF;
17140           IF (p_instance_rec.SYSTEM_ID = FND_API.G_MISS_NUM) THEN
17141               p_instance_rec.SYSTEM_ID := l_curr_instance_rec.SYSTEM_ID;
17142           END IF;
17143           IF (p_instance_rec.INSTANCE_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
17144               p_instance_rec.INSTANCE_TYPE_CODE := l_curr_instance_rec.INSTANCE_TYPE_CODE;
17145           END IF;
17146           IF (p_instance_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
17147               p_instance_rec.ACTIVE_START_DATE := l_curr_instance_rec.ACTIVE_START_DATE;
17148           END IF;
17149           IF (p_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
17150               p_instance_rec.ACTIVE_END_DATE := l_curr_instance_rec.ACTIVE_END_DATE;
17151           END IF;
17152           IF (p_instance_rec.LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
17153               p_instance_rec.LOCATION_TYPE_CODE := l_curr_instance_rec.LOCATION_TYPE_CODE;
17154           END IF;
17155           IF (p_instance_rec.LOCATION_ID = FND_API.G_MISS_NUM) THEN
17156               p_instance_rec.LOCATION_ID := l_curr_instance_rec.LOCATION_ID;
17157           END IF;
17158           IF (p_instance_rec.INV_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
17159               p_instance_rec.INV_ORGANIZATION_ID := l_curr_instance_rec.INV_ORGANIZATION_ID;
17160           END IF;
17161           IF (p_instance_rec.INV_SUBINVENTORY_NAME = FND_API.G_MISS_CHAR) THEN
17162               p_instance_rec.INV_SUBINVENTORY_NAME := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
17163           END IF;
17164           IF (p_instance_rec.INV_LOCATOR_ID = FND_API.G_MISS_NUM) THEN
17165               p_instance_rec.INV_LOCATOR_ID := l_curr_instance_rec.INV_LOCATOR_ID;
17166           END IF;
17167           IF (p_instance_rec.PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
17168               p_instance_rec.PA_PROJECT_ID := l_curr_instance_rec.PA_PROJECT_ID;
17169           END IF;
17170           IF (p_instance_rec.PA_PROJECT_TASK_ID = FND_API.G_MISS_NUM) THEN
17171               p_instance_rec.PA_PROJECT_TASK_ID := l_curr_instance_rec.PA_PROJECT_TASK_ID;
17172           END IF;
17173           IF (p_instance_rec.IN_TRANSIT_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
17174               p_instance_rec.IN_TRANSIT_ORDER_LINE_ID := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
17175           END IF;
17176           IF (p_instance_rec.LAST_OE_AGREEMENT_ID = FND_API.G_MISS_NUM) THEN
17177               p_instance_rec.LAST_OE_AGREEMENT_ID := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
17178           END IF;
17179           IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
17180               p_instance_rec.LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
17181           END IF;
17182           IF (p_instance_rec.LAST_OE_RMA_LINE_ID = FND_API.G_MISS_NUM) THEN
17183               p_instance_rec.LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
17184           END IF;
17185           IF (p_instance_rec.LAST_WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
17186               p_instance_rec.LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID;
17187           END IF;
17188           IF (p_instance_rec.LAST_PO_PO_LINE_ID = FND_API.G_MISS_NUM) THEN
17189               p_instance_rec.LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
17190           END IF;
17191           IF (p_instance_rec.LAST_PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
17192               p_instance_rec.LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID;
17193           END IF;
17194           IF (p_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
17195               p_instance_rec.LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID;
17196           END IF;
17197           IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = FND_API.G_MISS_NUM) THEN
17198               p_instance_rec.LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
17199           END IF;
17200           IF (p_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
17201               p_instance_rec.LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER;
17202           END IF;
17203           IF (p_instance_rec.WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
17204               p_instance_rec.WIP_JOB_ID := l_curr_instance_rec.WIP_JOB_ID;
17205           END IF;
17206           IF (p_instance_rec.PO_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
17207               p_instance_rec.PO_ORDER_LINE_ID := l_curr_instance_rec.PO_ORDER_LINE_ID;
17208           END IF;
17209           IF (p_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
17210               p_instance_rec.INSTALL_DATE := l_curr_instance_rec.INSTALL_DATE;
17211           END IF;
17212           IF (p_instance_rec.MANUALLY_CREATED_FLAG = FND_API.G_MISS_CHAR) THEN
17213               p_instance_rec.MANUALLY_CREATED_FLAG := l_curr_instance_rec.MANUALLY_CREATED_FLAG;
17214           END IF;
17215           IF (p_instance_rec.RETURN_BY_DATE = FND_API.G_MISS_DATE) THEN
17216               p_instance_rec.RETURN_BY_DATE := l_curr_instance_rec.RETURN_BY_DATE;
17217           END IF;
17218           IF (p_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
17219               p_instance_rec.ACTUAL_RETURN_DATE := l_curr_instance_rec.ACTUAL_RETURN_DATE;
17220           END IF;
17221           IF (p_instance_rec.CREATION_COMPLETE_FLAG = FND_API.G_MISS_CHAR) THEN
17222               p_instance_rec.CREATION_COMPLETE_FLAG := l_curr_instance_rec.CREATION_COMPLETE_FLAG;
17223           END IF;
17224           IF (p_instance_rec.COMPLETENESS_FLAG = FND_API.G_MISS_CHAR) THEN
17225               p_instance_rec.COMPLETENESS_FLAG := l_curr_instance_rec.COMPLETENESS_FLAG;
17226           END IF;
17227           IF (p_instance_rec.CONTEXT = FND_API.G_MISS_CHAR) THEN
17228               p_instance_rec.CONTEXT := l_curr_instance_rec.CONTEXT;
17229           END IF;
17230           IF (p_instance_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
17231               p_instance_rec.ATTRIBUTE1 := l_curr_instance_rec.ATTRIBUTE1;
17232           END IF;
17233           IF (p_instance_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
17234               p_instance_rec.ATTRIBUTE2 := l_curr_instance_rec.ATTRIBUTE2;
17235           END IF;
17236           IF (p_instance_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
17237               p_instance_rec.ATTRIBUTE3 := l_curr_instance_rec.ATTRIBUTE3;
17238           END IF;
17239           IF (p_instance_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
17240               p_instance_rec.ATTRIBUTE4 := l_curr_instance_rec.ATTRIBUTE4;
17241           END IF;
17242           IF (p_instance_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
17243               p_instance_rec.ATTRIBUTE5 := l_curr_instance_rec.ATTRIBUTE5;
17244           END IF;
17245           IF (p_instance_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
17246               p_instance_rec.ATTRIBUTE6 := l_curr_instance_rec.ATTRIBUTE6;
17247           END IF;
17248           IF (p_instance_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
17249               p_instance_rec.ATTRIBUTE7 := l_curr_instance_rec.ATTRIBUTE7;
17250           END IF;
17251           IF (p_instance_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
17252               p_instance_rec.ATTRIBUTE8 := l_curr_instance_rec.ATTRIBUTE8;
17253           END IF;
17254           IF (p_instance_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
17255               p_instance_rec.ATTRIBUTE9 := l_curr_instance_rec.ATTRIBUTE9;
17256           END IF;
17257           IF (p_instance_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
17258               p_instance_rec.ATTRIBUTE10 := l_curr_instance_rec.ATTRIBUTE10;
17259           END IF;
17260           IF (p_instance_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
17261               p_instance_rec.ATTRIBUTE11 := l_curr_instance_rec.ATTRIBUTE11;
17262           END IF;
17263           IF (p_instance_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
17264               p_instance_rec.ATTRIBUTE12 := l_curr_instance_rec.ATTRIBUTE12;
17265           END IF;
17266           IF (p_instance_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
17267               p_instance_rec.ATTRIBUTE13 := l_curr_instance_rec.ATTRIBUTE13;
17268           END IF;
17269           IF (p_instance_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
17270               p_instance_rec.ATTRIBUTE14 := l_curr_instance_rec.ATTRIBUTE14;
17271           END IF;
17272           IF (p_instance_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
17273               p_instance_rec.ATTRIBUTE15 := l_curr_instance_rec.ATTRIBUTE15;
17274           END IF;
17275           IF (p_instance_rec.OBJECT_VERSION_NUMBER = FND_API.G_MISS_NUM) THEN
17276               p_instance_rec.OBJECT_VERSION_NUMBER := l_curr_instance_rec.OBJECT_VERSION_NUMBER;
17277           END IF;
17278           IF (p_instance_rec.INSTALL_LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
17279               p_instance_rec.INSTALL_LOCATION_TYPE_CODE := l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE;
17280           END IF;
17281           IF (p_instance_rec.INSTALL_LOCATION_ID = FND_API.G_MISS_NUM) THEN
17282               p_instance_rec.INSTALL_LOCATION_ID := l_curr_instance_rec.INSTALL_LOCATION_ID;
17283           END IF;
17284           IF (p_instance_rec.INSTANCE_USAGE_CODE = FND_API.G_MISS_CHAR) THEN
17285               p_instance_rec.INSTANCE_USAGE_CODE := l_curr_instance_rec.INSTANCE_USAGE_CODE;
17286           END IF;
17287           IF L_LAST_VLD_ORGANIZATION_ID = FND_API.G_MISS_NUM THEN
17288              l_last_vld_organization_id := l_cur_instance_rec.LAST_VLD_ORGANIZATION_ID;
17289           END IF;
17290           IF (p_instance_rec.CONFIG_INST_REV_NUM = FND_API.G_MISS_NUM) THEN
17291               p_instance_rec.CONFIG_INST_REV_NUM := l_curr_instance_rec.CONFIG_INST_REV_NUM;
17292           END IF;
17293           IF (p_instance_rec.CONFIG_VALID_STATUS = FND_API.G_MISS_CHAR) THEN
17294               p_instance_rec.CONFIG_VALID_STATUS := l_curr_instance_rec.CONFIG_VALID_STATUS;
17295           END IF;
17296           IF (p_instance_rec.INSTANCE_DESCRIPTION = FND_API.G_MISS_CHAR) THEN
17297               p_instance_rec.INSTANCE_DESCRIPTION := l_curr_instance_rec.INSTANCE_DESCRIPTION;
17298           END IF;
17299         --start of code for eam integration--
17300           IF (p_instance_rec.NETWORK_ASSET_FLAG = FND_API.G_MISS_CHAR) THEN
17301               p_instance_rec.NETWORK_ASSET_FLAG := l_curr_instance_rec.NETWORK_ASSET_FLAG;
17302           END IF;
17303           IF (p_instance_rec.MAINTAINABLE_FLAG = FND_API.G_MISS_CHAR) THEN
17304               p_instance_rec.MAINTAINABLE_FLAG := l_curr_instance_rec.MAINTAINABLE_FLAG;
17305           END IF;
17306           IF (p_instance_rec.PN_LOCATION_ID = FND_API.G_MISS_NUM) THEN
17307               p_instance_rec.PN_LOCATION_ID := l_curr_instance_rec.PN_LOCATION_ID;
17308           END IF;
17309           IF (p_instance_rec.ASSET_CRITICALITY_CODE = FND_API.G_MISS_CHAR) THEN
17310               p_instance_rec.ASSET_CRITICALITY_CODE := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
17311           END IF;
17312           IF (p_instance_rec.CATEGORY_ID = FND_API.G_MISS_NUM) THEN
17313               p_instance_rec.CATEGORY_ID := l_curr_instance_rec.CATEGORY_ID;
17314           END IF;
17315           IF (p_instance_rec.EQUIPMENT_GEN_OBJECT_ID = FND_API.G_MISS_NUM) THEN
17316               p_instance_rec.EQUIPMENT_GEN_OBJECT_ID := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
17317           END IF;
17318           IF (p_instance_rec.INSTANTIATION_FLAG = FND_API.G_MISS_CHAR) THEN
17319               p_instance_rec.INSTANTIATION_FLAG := l_curr_instance_rec.INSTANTIATION_FLAG;
17320           END IF;
17321           IF (p_instance_rec.LINEAR_LOCATION_ID = FND_API.G_MISS_NUM) THEN
17322               p_instance_rec.LINEAR_LOCATION_ID := l_curr_instance_rec.LINEAR_LOCATION_ID;
17323           END IF;
17324           IF (p_instance_rec.OPERATIONAL_LOG_FLAG = FND_API.G_MISS_CHAR) THEN
17325               p_instance_rec.OPERATIONAL_LOG_FLAG := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
17326           END IF;
17327 
17328           IF (p_instance_rec.CHECKIN_STATUS = FND_API.G_MISS_NUM) THEN
17329               p_instance_rec.CHECKIN_STATUS := l_curr_instance_rec.CHECKIN_STATUS;
17330           END IF;
17331           IF (p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE = FND_API.G_MISS_DATE) THEN
17332               p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
17333           END IF;
17334 
17335           IF (p_instance_rec.ATTRIBUTE16 = FND_API.G_MISS_CHAR) THEN
17336               p_instance_rec.ATTRIBUTE16 := l_curr_instance_rec.ATTRIBUTE16;
17337           END IF;
17338           IF (p_instance_rec.ATTRIBUTE17 = FND_API.G_MISS_CHAR) THEN
17339               p_instance_rec.ATTRIBUTE17 := l_curr_instance_rec.ATTRIBUTE17;
17340           END IF;
17341           IF (p_instance_rec.ATTRIBUTE18 = FND_API.G_MISS_CHAR) THEN
17342               p_instance_rec.ATTRIBUTE18 := l_curr_instance_rec.ATTRIBUTE18;
17343           END IF;
17344           IF (p_instance_rec.ATTRIBUTE19 = FND_API.G_MISS_CHAR) THEN
17345               p_instance_rec.ATTRIBUTE19 := l_curr_instance_rec.ATTRIBUTE19;
17346           END IF;
17347           IF (p_instance_rec.ATTRIBUTE20 = FND_API.G_MISS_CHAR) THEN
17348               p_instance_rec.ATTRIBUTE20 := l_curr_instance_rec.ATTRIBUTE20;
17349           END IF;
17350           IF (p_instance_rec.ATTRIBUTE21 = FND_API.G_MISS_CHAR) THEN
17351               p_instance_rec.ATTRIBUTE21 := l_curr_instance_rec.ATTRIBUTE21;
17352           END IF;
17353           IF (p_instance_rec.ATTRIBUTE22 = FND_API.G_MISS_CHAR) THEN
17354               p_instance_rec.ATTRIBUTE22 := l_curr_instance_rec.ATTRIBUTE22;
17355           END IF;
17356           IF (p_instance_rec.ATTRIBUTE23 = FND_API.G_MISS_CHAR) THEN
17357               p_instance_rec.ATTRIBUTE23 := l_curr_instance_rec.ATTRIBUTE23;
17358           END IF;
17359           IF (p_instance_rec.ATTRIBUTE24 = FND_API.G_MISS_CHAR) THEN
17360               p_instance_rec.ATTRIBUTE24 := l_curr_instance_rec.ATTRIBUTE24;
17361           END IF;
17362           IF (p_instance_rec.ATTRIBUTE25 = FND_API.G_MISS_CHAR) THEN
17363               p_instance_rec.ATTRIBUTE25 := l_curr_instance_rec.ATTRIBUTE25;
17364           END IF;
17365           IF (p_instance_rec.ATTRIBUTE26 = FND_API.G_MISS_CHAR) THEN
17366               p_instance_rec.ATTRIBUTE26 := l_curr_instance_rec.ATTRIBUTE26;
17367           END IF;
17368           IF (p_instance_rec.ATTRIBUTE27 = FND_API.G_MISS_CHAR) THEN
17369               p_instance_rec.ATTRIBUTE27 := l_curr_instance_rec.ATTRIBUTE27;
17370           END IF;
17371           IF (p_instance_rec.ATTRIBUTE28 = FND_API.G_MISS_CHAR) THEN
17372               p_instance_rec.ATTRIBUTE28 := l_curr_instance_rec.ATTRIBUTE28;
17373           END IF;
17374           IF (p_instance_rec.ATTRIBUTE29 = FND_API.G_MISS_CHAR) THEN
17375               p_instance_rec.ATTRIBUTE29 := l_curr_instance_rec.ATTRIBUTE29;
17376           END IF;
17377           IF (p_instance_rec.ATTRIBUTE30 = FND_API.G_MISS_CHAR) THEN
17378               p_instance_rec.ATTRIBUTE30 := l_curr_instance_rec.ATTRIBUTE30;
17379           END IF;
17380 
17381         --end of code for eam integration--
17382         -- Addition of columns for FA Integration
17383           IF (p_instance_rec.PURCHASE_UNIT_PRICE = FND_API.G_MISS_NUM) THEN
17384               p_instance_rec.PURCHASE_UNIT_PRICE := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
17385           END IF;
17386 
17387           IF (p_instance_rec.PURCHASE_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
17388               p_instance_rec.PURCHASE_CURRENCY_CODE := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
17389           END IF;
17390 
17391           IF (p_instance_rec.PAYABLES_UNIT_PRICE = FND_API.G_MISS_NUM) THEN
17392               p_instance_rec.PAYABLES_UNIT_PRICE := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
17393           END IF;
17394 
17395           IF (p_instance_rec.PAYABLES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
17396               p_instance_rec.PAYABLES_CURRENCY_CODE := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
17397           END IF;
17398 
17399           IF (p_instance_rec.SALES_UNIT_PRICE = FND_API.G_MISS_NUM) THEN
17400               p_instance_rec.SALES_UNIT_PRICE := l_curr_instance_rec.SALES_UNIT_PRICE;
17401           END IF;
17402 
17403           IF (p_instance_rec.SALES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
17404               p_instance_rec.SALES_CURRENCY_CODE := l_curr_instance_rec.SALES_CURRENCY_CODE;
17405           END IF;
17406 
17407           IF (p_instance_rec.OPERATIONAL_STATUS_CODE = FND_API.G_MISS_CHAR) THEN
17408               p_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
17409           END IF;
17410         -- End addition of columns for FA Integration
17411 
17412           CSI_ITEM_INSTANCES_H_PKG.Insert_Row
17413            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
17414             ,p_INSTANCE_ID                       => p_instance_rec.instance_id
17415             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
17416             ,p_OLD_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
17417             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
17418             ,p_OLD_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
17419             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
17420             ,p_OLD_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
17421             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
17422             ,p_OLD_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
17423             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
17424             ,p_OLD_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
17425             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
17426             ,p_OLD_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
17427             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
17428             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
17429             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
17430             ,p_OLD_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
17431             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
17432             ,p_OLD_QUANTITY                      => l_curr_instance_rec.QUANTITY
17433             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
17434             ,p_OLD_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
17435             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
17436             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
17437             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
17438             ,p_OLD_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
17439             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
17440             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
17441             ,p_NEW_INSTANCE_STATUS_ID            => p_instance_rec.INSTANCE_STATUS_ID
17442             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
17443             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
17444             ,p_OLD_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
17445             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
17446             ,p_OLD_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
17447             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
17448             ,p_OLD_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
17449             ,p_NEW_SYSTEM_ID                     => p_instance_rec.SYSTEM_ID
17450             ,p_OLD_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
17451             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
17452             ,p_OLD_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
17453             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
17454             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
17455             ,p_NEW_ACTIVE_END_DATE               => p_instance_rec.ACTIVE_END_DATE
17456             ,p_OLD_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
17457             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
17458             ,p_OLD_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
17459             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
17460             ,p_OLD_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
17461             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
17462             ,p_OLD_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
17463             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
17464             ,p_OLD_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
17465             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
17466             ,p_OLD_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
17467             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
17468             ,p_OLD_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
17469             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
17470             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
17471             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
17472             ,p_OLD_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
17473             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
17474             ,p_OLD_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
17475             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
17476             ,p_OLD_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
17477             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
17478             ,p_FULL_DUMP_FLAG                    => 'Y'
17479             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
17480             ,P_OLD_CONTEXT                       => l_curr_instance_rec.CONTEXT
17481             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
17482             ,p_OLD_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
17483             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
17484             ,p_OLD_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
17485             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
17486             ,p_OLD_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
17487             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
17488             ,p_OLD_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
17489             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
17490             ,p_OLD_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
17491             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
17492             ,p_OLD_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
17493             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
17494             ,p_OLD_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
17495             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
17496             ,p_OLD_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
17497             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
17498             ,p_OLD_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
17499             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
17500             ,p_OLD_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
17501             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
17502             ,p_OLD_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
17503             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
17504             ,p_OLD_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
17505             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
17506             ,p_OLD_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
17507             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
17508             ,p_OLD_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
17509             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
17510             ,p_OLD_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
17511             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
17512             ,p_CREATION_DATE                     => SYSDATE
17513             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
17514             ,p_LAST_UPDATE_DATE                  => SYSDATE
17515             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
17516             ,p_OBJECT_VERSION_NUMBER             => 1
17517             ,p_OLD_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
17518             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
17519             ,p_OLD_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
17520             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
17521             ,p_OLD_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
17522             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
17523             ,p_OLD_last_vld_organization_id      => l_cur_instance_rec.last_vld_organization_id
17524             ,p_NEW_last_vld_organization_id      => l_last_vld_organization_id
17525             ,p_OLD_CONFIG_INST_REV_NUM           => l_curr_instance_rec.CONFIG_INST_REV_NUM
17526             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
17527             ,p_OLD_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
17528             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
17529             ,p_OLD_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
17530             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
17531             -- Added on jan1503
17532             ,p_OLD_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
17533             ,p_NEW_INSTALL_DATE                  => p_instance_rec.INSTALL_DATE
17534             ,p_OLD_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
17535             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
17536             ,p_OLD_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
17537             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
17538             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
17539             ,p_NEW_LAST_OE_AGREEMENT_ID          => p_instance_rec.LAST_OE_AGREEMENT_ID
17540 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
17541 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
17542 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
17543 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => p_instance_rec.LAST_OE_RMA_LINE_ID
17544 	    ,p_OLD_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
17545 	    ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
17546 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
17547 	    ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
17548 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
17549 	    ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
17550 	    ,p_OLD_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
17551 	    ,p_NEW_LAST_PA_TASK_ID          => p_instance_rec.LAST_PA_TASK_ID
17552 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
17553 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
17554 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
17555 	    ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
17556  	    --start of parameters addition for eam integration--
17557 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
17558 	    ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
17559 	    ,p_OLD_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
17560 	    ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
17561 	    ,p_OLD_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
17562 	    ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
17563 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
17564 	    ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
17565 	    ,p_OLD_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
17566 	    ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
17567 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
17568 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
17569 	    ,p_OLD_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
17570 	    ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
17571 	    ,p_OLD_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
17572 	    ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
17573 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
17574 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
17575 	    ,p_OLD_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
17576 	    ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
17577 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
17578 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
17579             ,p_OLD_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
17580             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
17581             ,p_OLD_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
17582             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
17583             ,p_OLD_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
17584             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
17585             ,p_OLD_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
17586             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
17587             ,p_OLD_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
17588             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
17589             ,p_OLD_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
17590             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
17591             ,p_OLD_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
17592             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
17593             ,p_OLD_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
17594             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
17595             ,p_OLD_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
17596             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
17597             ,p_OLD_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
17598             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
17599             ,p_OLD_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
17600             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
17601             ,p_OLD_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
17602             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
17603             ,p_OLD_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
17604             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
17605             ,p_OLD_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
17606             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
17607             ,p_OLD_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
17608             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
17609   	    --end of parameters addition for eam integration--
17610    -- Addition of columns for FA Integration
17611             ,p_OLD_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
17612             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
17613             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
17614             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
17615             ,p_OLD_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
17616             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
17617             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
17618             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
17619             ,p_OLD_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
17620             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
17621             ,p_OLD_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
17622             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
17623             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
17624             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
17625     -- End addition of columns for FA Integration
17626             -- Begin Add Code for Siebel Genesis Project
17627             ,p_OLD_SOURCE_CODE                   => l_curr_instance_rec.SOURCE_CODE
17628             ,p_NEW_SOURCE_CODE                   => p_instance_rec.SOURCE_CODE
17629             -- End Add Code for Siebel Genesis Project
17630             );
17631 
17632          ELSE --  l_mod_value <> 0
17633 
17634           -- If the mod value is not equal to zero then dump only the changed columns
17635           -- while the unchanged values have old and new values as null
17636 
17637            IF (p_instance_rec.instance_number = fnd_api.g_miss_char) OR
17638                NVL(p_instance_rec.instance_number, fnd_api.g_miss_char) = NVL(l_curr_instance_rec.instance_number, fnd_api.g_miss_char) THEN
17639                 l_instance_hist_rec.old_instance_number := NULL;
17640                 l_instance_hist_rec.new_instance_number := NULL;
17641            ELSIF
17642               NVL(l_curr_instance_rec.instance_number,fnd_api.g_miss_char) <> NVL(p_instance_rec.instance_number,fnd_api.g_miss_char) THEN
17643                 l_instance_hist_rec.old_instance_number := l_curr_instance_rec.instance_number ;
17644                 l_instance_hist_rec.new_instance_number := p_instance_rec.instance_number ;
17645            END IF;
17646            --
17647            IF (p_instance_rec.external_reference = fnd_api.g_miss_char) OR
17648                NVL(p_instance_rec.external_reference, fnd_api.g_miss_char) = NVL(l_curr_instance_rec.external_reference, fnd_api.g_miss_char) THEN
17649                 l_instance_hist_rec.old_external_reference := NULL;
17650                 l_instance_hist_rec.new_external_reference := NULL;
17651            ELSIF
17652               NVL(l_curr_instance_rec.external_reference,fnd_api.g_miss_char) <> NVL(p_instance_rec.external_reference,fnd_api.g_miss_char) THEN
17653                 l_instance_hist_rec.old_external_reference := l_curr_instance_rec.external_reference ;
17654                 l_instance_hist_rec.new_external_reference := p_instance_rec.external_reference ;
17655            END IF;
17656            --
17657            IF (p_instance_rec.inventory_item_id = fnd_api.g_miss_num) OR
17658               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
17659                 l_instance_hist_rec.old_inventory_item_id := NULL;
17660                 l_instance_hist_rec.new_inventory_item_id := NULL;
17661            ELSIF
17662               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
17663                 l_instance_hist_rec.old_inventory_item_id := l_curr_instance_rec.inventory_item_id ;
17664                 l_instance_hist_rec.new_inventory_item_id := p_instance_rec.inventory_item_id ;
17665            END IF;
17666            --
17667            IF (p_instance_rec.inventory_revision = fnd_api.g_miss_char) OR
17668               NVL(l_curr_instance_rec.inventory_revision,fnd_api.g_miss_char) = NVL(p_instance_rec.inventory_revision,fnd_api.g_miss_char) THEN
17669                 l_instance_hist_rec.old_inventory_revision := NULL;
17670                 l_instance_hist_rec.new_inventory_revision := NULL;
17671            ELSIF
17672               NVL(l_curr_instance_rec.inventory_revision,fnd_api.g_miss_char) <> NVL(p_instance_rec.inventory_revision,fnd_api.g_miss_char) THEN
17673                 l_instance_hist_rec.old_inventory_revision := l_curr_instance_rec.inventory_revision ;
17674                 l_instance_hist_rec.new_inventory_revision := p_instance_rec.inventory_revision ;
17675            END IF;
17676            --
17677            IF (p_instance_rec.inv_master_organization_id = fnd_api.g_miss_num) OR
17678               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
17679                 l_instance_hist_rec.old_inv_master_org_id := NULL;
17680                 l_instance_hist_rec.new_inv_master_org_id := NULL;
17681            ELSIF
17682               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
17683                 l_instance_hist_rec.old_inv_master_org_id := l_curr_instance_rec.inv_master_organization_id ;
17684                 l_instance_hist_rec.new_inv_master_org_id := p_instance_rec.inv_master_organization_id ;
17685            END IF;
17686            --
17687            IF (p_instance_rec.serial_number = fnd_api.g_miss_char) OR
17688               NVL(l_curr_instance_rec.serial_number,fnd_api.g_miss_char) = NVL(p_instance_rec.serial_number,fnd_api.g_miss_char) THEN
17689                 l_instance_hist_rec.old_serial_number := NULL;
17690                 l_instance_hist_rec.new_serial_number := NULL;
17691            ELSIF
17692               NVL(l_curr_instance_rec.serial_number,fnd_api.g_miss_char) <> NVL(p_instance_rec.serial_number,fnd_api.g_miss_char) THEN
17693                 l_instance_hist_rec.old_serial_number := l_curr_instance_rec.serial_number ;
17694                 l_instance_hist_rec.new_serial_number := p_instance_rec.serial_number ;
17695            END IF;
17696            --
17697            IF (p_instance_rec.mfg_serial_number_flag = fnd_api.g_miss_char) OR
17698               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
17699                 l_instance_hist_rec.old_mfg_serial_number_flag := NULL;
17700                 l_instance_hist_rec.new_mfg_serial_number_flag := NULL;
17701            ELSIF
17702               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
17703                 l_instance_hist_rec.old_mfg_serial_number_flag := l_curr_instance_rec.mfg_serial_number_flag ;
17704                 l_instance_hist_rec.new_mfg_serial_number_flag := p_instance_rec.mfg_serial_number_flag ;
17705            END IF;
17706            --
17707            IF (p_instance_rec.lot_number = fnd_api.g_miss_char) OR
17708               NVL(l_curr_instance_rec.lot_number,fnd_api.g_miss_char) = NVL(p_instance_rec.lot_number,fnd_api.g_miss_char) THEN
17709                 l_instance_hist_rec.old_lot_number := NULL;
17710                 l_instance_hist_rec.new_lot_number := NULL;
17711            ELSIF
17712               NVL(l_curr_instance_rec.lot_number,fnd_api.g_miss_char) <> NVL(p_instance_rec.lot_number,fnd_api.g_miss_char) THEN
17713                 l_instance_hist_rec.old_lot_number := l_curr_instance_rec.lot_number ;
17714                 l_instance_hist_rec.new_lot_number := p_instance_rec.lot_number ;
17715            END IF;
17716            --
17717            IF (p_instance_rec.quantity = fnd_api.g_miss_num) OR
17718               NVL(l_curr_instance_rec.quantity,fnd_api.g_miss_num) = NVL(p_instance_rec.quantity,fnd_api.g_miss_num) THEN
17719                 l_instance_hist_rec.old_quantity := NULL;
17720                 l_instance_hist_rec.new_quantity := NULL;
17721            ELSIF
17722               NVL(l_curr_instance_rec.quantity,fnd_api.g_miss_num) <> NVL(p_instance_rec.quantity,fnd_api.g_miss_num) THEN
17723                 l_instance_hist_rec.old_quantity := l_curr_instance_rec.quantity ;
17724                 l_instance_hist_rec.new_quantity := p_instance_rec.quantity ;
17725            END IF;
17726            --
17727            IF (p_instance_rec.unit_of_measure = fnd_api.g_miss_char) OR
17728               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
17729                 l_instance_hist_rec.old_unit_of_measure := NULL;
17730                 l_instance_hist_rec.new_unit_of_measure := NULL;
17731            ELSIF
17732               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
17733                 l_instance_hist_rec.old_unit_of_measure := l_curr_instance_rec.unit_of_measure ;
17734                 l_instance_hist_rec.new_unit_of_measure := p_instance_rec.unit_of_measure ;
17735            END IF;
17736            --
17737            IF (p_instance_rec.accounting_class_code = fnd_api.g_miss_char) OR
17738               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
17739                 l_instance_hist_rec.old_accounting_class_code := NULL;
17740                 l_instance_hist_rec.new_accounting_class_code := NULL;
17741            ELSIF
17742               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
17743                 l_instance_hist_rec.old_accounting_class_code := l_curr_instance_rec.accounting_class_code ;
17744                 l_instance_hist_rec.new_accounting_class_code := p_instance_rec.accounting_class_code ;
17745            END IF;
17746            --
17747            IF (p_instance_rec.instance_condition_id = fnd_api.g_miss_num) OR
17748               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
17749                 l_instance_hist_rec.old_instance_condition_id := NULL;
17750                 l_instance_hist_rec.new_instance_condition_id := NULL;
17751            ELSIF
17752               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
17753                 l_instance_hist_rec.old_instance_condition_id := l_curr_instance_rec.instance_condition_id ;
17754                 l_instance_hist_rec.new_instance_condition_id := p_instance_rec.instance_condition_id ;
17755            END IF;
17756            --
17757            IF (p_instance_rec.instance_status_id = fnd_api.g_miss_num) OR
17758               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
17759                 l_instance_hist_rec.old_instance_status_id := NULL;
17760                 l_instance_hist_rec.new_instance_status_id := NULL;
17761            ELSIF
17762               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
17763                 l_instance_hist_rec.old_instance_status_id := l_curr_instance_rec.instance_status_id ;
17764                 l_instance_hist_rec.new_instance_status_id := p_instance_rec.instance_status_id ;
17765            END IF;
17766            --
17767            IF (p_instance_rec.customer_view_flag = fnd_api.g_miss_char) OR
17768               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
17769                 l_instance_hist_rec.old_customer_view_flag := NULL;
17770                 l_instance_hist_rec.new_customer_view_flag := NULL;
17771            ELSIF
17772               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
17773                 l_instance_hist_rec.old_customer_view_flag := l_curr_instance_rec.customer_view_flag ;
17774                 l_instance_hist_rec.new_customer_view_flag := p_instance_rec.customer_view_flag ;
17775            END IF;
17776            --
17777            IF (p_instance_rec.merchant_view_flag = fnd_api.g_miss_char) OR
17778               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
17779                 l_instance_hist_rec.old_merchant_view_flag := NULL;
17780                 l_instance_hist_rec.new_merchant_view_flag := NULL;
17781            ELSIF
17782               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
17783                 l_instance_hist_rec.old_merchant_view_flag := l_curr_instance_rec.merchant_view_flag ;
17784                 l_instance_hist_rec.new_merchant_view_flag := p_instance_rec.merchant_view_flag ;
17785            END IF;
17786            --
17787            IF (p_instance_rec.sellable_flag = fnd_api.g_miss_char) OR
17788               NVL(l_curr_instance_rec.sellable_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.sellable_flag,fnd_api.g_miss_char) THEN
17789                 l_instance_hist_rec.old_sellable_flag := NULL;
17790                 l_instance_hist_rec.new_sellable_flag := NULL;
17791            ELSIF
17792               NVL(l_curr_instance_rec.sellable_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.sellable_flag,fnd_api.g_miss_char) THEN
17793                 l_instance_hist_rec.old_sellable_flag := l_curr_instance_rec.sellable_flag ;
17794                 l_instance_hist_rec.new_sellable_flag := p_instance_rec.sellable_flag ;
17795            END IF;
17796            --
17797            IF (p_instance_rec.system_id = fnd_api.g_miss_num) OR
17798               NVL(l_curr_instance_rec.system_id,fnd_api.g_miss_num) = NVL(p_instance_rec.system_id,fnd_api.g_miss_num) THEN
17799                 l_instance_hist_rec.old_system_id := NULL;
17800                 l_instance_hist_rec.new_system_id := NULL;
17801            ELSIF
17802               NVL(l_curr_instance_rec.system_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.system_id,fnd_api.g_miss_num) THEN
17803                 l_instance_hist_rec.old_system_id := l_curr_instance_rec.system_id ;
17804                 l_instance_hist_rec.new_system_id := p_instance_rec.system_id ;
17805            END IF;
17806            --
17807            IF (p_instance_rec.instance_type_code = fnd_api.g_miss_char) OR
17808               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
17809                 l_instance_hist_rec.old_instance_type_code := NULL;
17810                 l_instance_hist_rec.new_instance_type_code := NULL;
17811            ELSIF
17812               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
17813                 l_instance_hist_rec.old_instance_type_code := l_curr_instance_rec.instance_type_code ;
17814                 l_instance_hist_rec.new_instance_type_code := p_instance_rec.instance_type_code ;
17815            END IF;
17816            --
17817            IF (p_instance_rec.active_start_date = fnd_api.g_miss_date) OR
17818               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
17819                 l_instance_hist_rec.old_active_start_date := NULL;
17820                 l_instance_hist_rec.new_active_start_date := NULL;
17821            ELSIF
17822               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
17823                 l_instance_hist_rec.old_active_start_date := l_curr_instance_rec.active_start_date ;
17824                 l_instance_hist_rec.new_active_start_date := p_instance_rec.active_start_date ;
17825            END IF;
17826            --
17827            IF (p_instance_rec.active_end_date = fnd_api.g_miss_date) OR
17828               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
17829                 l_instance_hist_rec.old_active_end_date := NULL;
17830                 l_instance_hist_rec.new_active_end_date := NULL;
17831            ELSIF
17832               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
17833                 l_instance_hist_rec.old_active_end_date := l_curr_instance_rec.active_end_date ;
17834                 l_instance_hist_rec.new_active_end_date := p_instance_rec.active_end_date ;
17835            END IF;
17836            --
17837            IF (p_instance_rec.location_type_code = fnd_api.g_miss_char) OR
17838               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
17839                 l_instance_hist_rec.old_location_type_code := NULL;
17840                 l_instance_hist_rec.new_location_type_code := NULL;
17841            ELSIF
17842               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
17843                 l_instance_hist_rec.old_location_type_code := l_curr_instance_rec.location_type_code ;
17844                 l_instance_hist_rec.new_location_type_code := p_instance_rec.location_type_code ;
17845            END IF;
17846            --
17847            IF (p_instance_rec.location_id = fnd_api.g_miss_num) OR
17848               NVL(l_curr_instance_rec.location_id,fnd_api.g_miss_num) = NVL(p_instance_rec.location_id,fnd_api.g_miss_num) THEN
17849                 l_instance_hist_rec.old_location_id := NULL;
17850                 l_instance_hist_rec.new_location_id := NULL;
17851            ELSIF
17852               NVL(l_curr_instance_rec.location_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.location_id,fnd_api.g_miss_num) THEN
17853                 l_instance_hist_rec.old_location_id := l_curr_instance_rec.location_id ;
17854                 l_instance_hist_rec.new_location_id := p_instance_rec.location_id ;
17855            END IF;
17856            --
17857            IF (p_instance_rec.inv_organization_id = fnd_api.g_miss_num) OR
17858               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
17859                 l_instance_hist_rec.old_inv_organization_id := NULL;
17860                 l_instance_hist_rec.new_inv_organization_id := NULL;
17861            ELSIF
17862               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
17863                 l_instance_hist_rec.old_inv_organization_id := l_curr_instance_rec.inv_organization_id ;
17864                 l_instance_hist_rec.new_inv_organization_id := p_instance_rec.inv_organization_id ;
17865            END IF;
17866            --
17867            IF (p_instance_rec.inv_subinventory_name = fnd_api.g_miss_char) OR
17868               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
17869                 l_instance_hist_rec.old_inv_subinventory_name := NULL;
17870                 l_instance_hist_rec.new_inv_subinventory_name := NULL;
17871            ELSIF
17872               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
17873                 l_instance_hist_rec.old_inv_subinventory_name := l_curr_instance_rec.inv_subinventory_name ;
17874                 l_instance_hist_rec.new_inv_subinventory_name := p_instance_rec.inv_subinventory_name ;
17875            END IF;
17876            --
17877            IF (p_instance_rec.inv_locator_id = fnd_api.g_miss_num) OR
17878               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
17879                 l_instance_hist_rec.old_inv_locator_id := NULL;
17880                 l_instance_hist_rec.new_inv_locator_id := NULL;
17881            ELSIF
17882               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
17883                 l_instance_hist_rec.old_inv_locator_id := l_curr_instance_rec.inv_locator_id ;
17884                 l_instance_hist_rec.new_inv_locator_id := p_instance_rec.inv_locator_id ;
17885            END IF;
17886            --
17887            IF (p_instance_rec.pa_project_id = fnd_api.g_miss_num) OR
17888               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
17889                 l_instance_hist_rec.old_pa_project_id := NULL;
17890                 l_instance_hist_rec.new_pa_project_id := NULL;
17891            ELSIF
17892               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
17893                 l_instance_hist_rec.old_pa_project_id := l_curr_instance_rec.pa_project_id ;
17894                 l_instance_hist_rec.new_pa_project_id := p_instance_rec.pa_project_id ;
17895            END IF;
17896            --
17897            IF (p_instance_rec.pa_project_task_id = fnd_api.g_miss_num) OR
17898               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
17899                 l_instance_hist_rec.old_pa_project_task_id := NULL;
17900                 l_instance_hist_rec.new_pa_project_task_id := NULL;
17901            ELSIF
17902               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
17903                 l_instance_hist_rec.old_pa_project_task_id := l_curr_instance_rec.pa_project_task_id ;
17904                 l_instance_hist_rec.new_pa_project_task_id := p_instance_rec.pa_project_task_id ;
17905            END IF;
17906            --
17907            IF (p_instance_rec.in_transit_order_line_id = fnd_api.g_miss_num) OR
17908               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
17909                 l_instance_hist_rec.old_in_transit_order_line_id := NULL;
17910                 l_instance_hist_rec.new_in_transit_order_line_id := NULL;
17911            ELSIF
17912               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
17913                 l_instance_hist_rec.old_in_transit_order_line_id := l_curr_instance_rec.in_transit_order_line_id ;
17914                 l_instance_hist_rec.new_in_transit_order_line_id := p_instance_rec.in_transit_order_line_id ;
17915            END IF;
17916            --
17917            IF (p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num) OR
17918               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
17919                 l_instance_hist_rec.old_last_oe_agreement_id := NULL;
17920                 l_instance_hist_rec.new_last_oe_agreement_id := NULL;
17921            ELSIF
17922               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
17923                 l_instance_hist_rec.old_last_oe_agreement_id := l_curr_instance_rec.last_oe_agreement_id ;
17924                 l_instance_hist_rec.new_last_oe_agreement_id := p_instance_rec.last_oe_agreement_id ;
17925            END IF;
17926            --
17927            IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num) OR
17928               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
17929                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := NULL;
17930                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := NULL;
17931            ELSIF
17932               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
17933                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID ;
17934                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID ;
17935            END IF;
17936            --
17937            IF (p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num) OR
17938               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
17939                 l_instance_hist_rec.old_LAST_OE_RMA_LINE_ID := NULL;
17940                 l_instance_hist_rec.new_LAST_OE_RMA_LINE_ID := NULL;
17941            ELSIF
17942               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
17943                 l_instance_hist_rec.old_LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID ;
17944                 l_instance_hist_rec.new_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID ;
17945            END IF;
17946            --
17947            IF (p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num) OR
17948               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
17949                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := NULL;
17950                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := NULL;
17951            ELSIF
17952               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
17953                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID ;
17954                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID ;
17955            END IF;
17956            --
17957            IF (p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num) OR
17958               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
17959                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := NULL;
17960                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := NULL;
17961            ELSIF
17962               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
17963                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
17964                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID ;
17965            END IF;
17966            --
17967            IF (p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num) OR
17968               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
17969                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := NULL;
17970                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := NULL;
17971            ELSIF
17972               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
17973                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID ;
17974                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID ;
17975            END IF;
17976            --
17977            IF (p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num) OR
17978               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
17979                 l_instance_hist_rec.old_LAST_PA_TASK_ID := NULL;
17980                 l_instance_hist_rec.new_LAST_PA_TASK_ID := NULL;
17981            ELSIF
17982               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
17983                 l_instance_hist_rec.old_LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID ;
17984                 l_instance_hist_rec.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID ;
17985            END IF;
17986            --
17987            IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num) OR
17988               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
17989                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := NULL;
17990                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := NULL;
17991            ELSIF
17992               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
17993                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
17994                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
17995            END IF;
17996            --
17997            IF (p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char) OR
17998               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
17999                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := NULL;
18000                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := NULL;
18001            ELSIF
18002               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
18003                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER ;
18004                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER ;
18005            END IF;
18006            --
18007            IF (p_instance_rec.wip_job_id = fnd_api.g_miss_num) OR
18008               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
18009                 l_instance_hist_rec.old_wip_job_id := NULL;
18010                 l_instance_hist_rec.new_wip_job_id := NULL;
18011            ELSIF
18012               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
18013                 l_instance_hist_rec.old_wip_job_id := l_curr_instance_rec.wip_job_id ;
18014                 l_instance_hist_rec.new_wip_job_id := p_instance_rec.wip_job_id ;
18015            END IF;
18016            --
18017            IF (p_instance_rec.po_order_line_id = fnd_api.g_miss_num) OR
18018               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
18019                 l_instance_hist_rec.old_po_order_line_id := NULL;
18020                 l_instance_hist_rec.new_po_order_line_id := NULL;
18021            ELSIF
18022               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
18023                 l_instance_hist_rec.old_po_order_line_id := l_curr_instance_rec.po_order_line_id ;
18024                 l_instance_hist_rec.new_po_order_line_id := p_instance_rec.po_order_line_id ;
18025            END IF;
18026            --
18027            IF (p_instance_rec.completeness_flag = fnd_api.g_miss_char) OR
18028               NVL(l_curr_instance_rec.completeness_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.completeness_flag,fnd_api.g_miss_char) THEN
18029                 l_instance_hist_rec.old_completeness_flag := NULL;
18030                 l_instance_hist_rec.new_completeness_flag := NULL;
18031            ELSIF
18032               NVL(l_curr_instance_rec.completeness_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.completeness_flag,fnd_api.g_miss_char) THEN
18033                 l_instance_hist_rec.old_completeness_flag := l_curr_instance_rec.completeness_flag ;
18034                 l_instance_hist_rec.new_completeness_flag := p_instance_rec.completeness_flag ;
18035            END IF;
18036            --
18037            IF (p_instance_rec.context = fnd_api.g_miss_char) OR
18038               NVL(l_curr_instance_rec.context,fnd_api.g_miss_char) = NVL(p_instance_rec.context,fnd_api.g_miss_char) THEN
18039                 l_instance_hist_rec.old_context := NULL;
18040                 l_instance_hist_rec.new_context := NULL;
18041            ELSIF
18042               NVL(l_curr_instance_rec.context,fnd_api.g_miss_char) <> NVL(p_instance_rec.context,fnd_api.g_miss_char) THEN
18043                 l_instance_hist_rec.old_context := l_curr_instance_rec.context ;
18044                 l_instance_hist_rec.new_context := p_instance_rec.context ;
18045            END IF;
18046            --
18047            IF (p_instance_rec.attribute1 = fnd_api.g_miss_char) OR
18048               NVL(l_curr_instance_rec.attribute1,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute1,fnd_api.g_miss_char) THEN
18049                 l_instance_hist_rec.old_attribute1 := NULL;
18050                 l_instance_hist_rec.new_attribute1 := NULL;
18051            ELSIF
18052               NVL(l_curr_instance_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute1,fnd_api.g_miss_char) THEN
18053                 l_instance_hist_rec.old_attribute1 := l_curr_instance_rec.attribute1 ;
18054                 l_instance_hist_rec.new_attribute1 := p_instance_rec.attribute1 ;
18055            END IF;
18056            --
18057            IF (p_instance_rec.attribute2 = fnd_api.g_miss_char) OR
18058               NVL(l_curr_instance_rec.attribute2,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute2,fnd_api.g_miss_char) THEN
18059                 l_instance_hist_rec.old_attribute2 := NULL;
18060                 l_instance_hist_rec.new_attribute2 := NULL;
18061            ELSIF
18062               NVL(l_curr_instance_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute2,fnd_api.g_miss_char) THEN
18063                 l_instance_hist_rec.old_attribute2 := l_curr_instance_rec.attribute2 ;
18064                 l_instance_hist_rec.new_attribute2 := p_instance_rec.attribute2 ;
18065            END IF;
18066            --
18067            IF (p_instance_rec.attribute3 = fnd_api.g_miss_char) OR
18068               NVL(l_curr_instance_rec.attribute3,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute3,fnd_api.g_miss_char) THEN
18069                 l_instance_hist_rec.old_attribute3 := NULL;
18070                 l_instance_hist_rec.new_attribute3 := NULL;
18071            ELSIF
18072               NVL(l_curr_instance_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute3,fnd_api.g_miss_char) THEN
18073                 l_instance_hist_rec.old_attribute3 := l_curr_instance_rec.attribute3 ;
18074                 l_instance_hist_rec.new_attribute3 := p_instance_rec.attribute3 ;
18075            END IF;
18076            --
18077            IF (p_instance_rec.attribute4 = fnd_api.g_miss_char) OR
18078               NVL(l_curr_instance_rec.attribute4,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute4,fnd_api.g_miss_char) THEN
18079                 l_instance_hist_rec.old_attribute4 := NULL;
18080                 l_instance_hist_rec.new_attribute4 := NULL;
18081            ELSIF
18082               NVL(l_curr_instance_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute4,fnd_api.g_miss_char) THEN
18083                 l_instance_hist_rec.old_attribute4 := l_curr_instance_rec.attribute4 ;
18084                 l_instance_hist_rec.new_attribute4 := p_instance_rec.attribute4 ;
18085            END IF;
18086            --
18087            IF (p_instance_rec.attribute5 = fnd_api.g_miss_char) OR
18088               NVL(l_curr_instance_rec.attribute5,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute5,fnd_api.g_miss_char) THEN
18089                 l_instance_hist_rec.old_attribute5 := NULL;
18090                 l_instance_hist_rec.new_attribute5 := NULL;
18091            ELSIF
18092               NVL(l_curr_instance_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute5,fnd_api.g_miss_char) THEN
18093                 l_instance_hist_rec.old_attribute5 := l_curr_instance_rec.attribute5 ;
18094                 l_instance_hist_rec.new_attribute5 := p_instance_rec.attribute5 ;
18095            END IF;
18096            --
18097            IF (p_instance_rec.attribute6 = fnd_api.g_miss_char) OR
18098               NVL(l_curr_instance_rec.attribute6,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute6,fnd_api.g_miss_char) THEN
18099                 l_instance_hist_rec.old_attribute6 := NULL;
18100                 l_instance_hist_rec.new_attribute6 := NULL;
18101            ELSIF
18102               NVL(l_curr_instance_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute6,fnd_api.g_miss_char) THEN
18103                 l_instance_hist_rec.old_attribute6 := l_curr_instance_rec.attribute6 ;
18104                 l_instance_hist_rec.new_attribute6 := p_instance_rec.attribute6 ;
18105            END IF;
18106            --
18107            IF (p_instance_rec.attribute7 = fnd_api.g_miss_char) OR
18108               NVL(l_curr_instance_rec.attribute7,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute7,fnd_api.g_miss_char) THEN
18109                 l_instance_hist_rec.old_attribute7 := NULL;
18110                 l_instance_hist_rec.new_attribute7 := NULL;
18111            ELSIF
18112               NVL(l_curr_instance_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute7,fnd_api.g_miss_char) THEN
18113                 l_instance_hist_rec.old_attribute7 := l_curr_instance_rec.attribute7 ;
18114                 l_instance_hist_rec.new_attribute7 := p_instance_rec.attribute7 ;
18115            END IF;
18116            --
18117            IF (p_instance_rec.attribute8 = fnd_api.g_miss_char) OR
18118               NVL(l_curr_instance_rec.attribute8,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute8,fnd_api.g_miss_char) THEN
18119                 l_instance_hist_rec.old_attribute8 := NULL;
18120                 l_instance_hist_rec.new_attribute8 := NULL;
18121            ELSIF
18122               NVL(l_curr_instance_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute8,fnd_api.g_miss_char) THEN
18123                 l_instance_hist_rec.old_attribute8 := l_curr_instance_rec.attribute8 ;
18124                 l_instance_hist_rec.new_attribute8 := p_instance_rec.attribute8 ;
18125            END IF;
18126            --
18127            IF (p_instance_rec.attribute9 = fnd_api.g_miss_char) OR
18128               NVL(l_curr_instance_rec.attribute9,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute9,fnd_api.g_miss_char) THEN
18129                 l_instance_hist_rec.old_attribute9 := NULL;
18130                 l_instance_hist_rec.new_attribute9 := NULL;
18131            ELSIF
18132               NVL(l_curr_instance_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute9,fnd_api.g_miss_char) THEN
18133                 l_instance_hist_rec.old_attribute9 := l_curr_instance_rec.attribute9 ;
18134                 l_instance_hist_rec.new_attribute9 := p_instance_rec.attribute9 ;
18135            END IF;
18136            --
18137            IF (p_instance_rec.attribute10 = fnd_api.g_miss_char) OR
18138               NVL(l_curr_instance_rec.attribute10,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute10,fnd_api.g_miss_char) THEN
18139                 l_instance_hist_rec.old_attribute10 := NULL;
18140                 l_instance_hist_rec.new_attribute10 := NULL;
18141            ELSIF
18142               NVL(l_curr_instance_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute10,fnd_api.g_miss_char) THEN
18143                 l_instance_hist_rec.old_attribute10 := l_curr_instance_rec.attribute10 ;
18144                 l_instance_hist_rec.new_attribute10 := p_instance_rec.attribute10 ;
18145            END IF;
18146            --
18147            IF (p_instance_rec.attribute11 = fnd_api.g_miss_char) OR
18148               NVL(l_curr_instance_rec.attribute11,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute11,fnd_api.g_miss_char) THEN
18149                 l_instance_hist_rec.old_attribute11 := NULL;
18150                 l_instance_hist_rec.new_attribute11 := NULL;
18151            ELSIF
18152               NVL(l_curr_instance_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute11,fnd_api.g_miss_char) THEN
18153                 l_instance_hist_rec.old_attribute11 := l_curr_instance_rec.attribute11 ;
18154                 l_instance_hist_rec.new_attribute11 := p_instance_rec.attribute11 ;
18155            END IF;
18156            --
18157            IF (p_instance_rec.attribute12 = fnd_api.g_miss_char) OR
18158               NVL(l_curr_instance_rec.attribute12,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute12,fnd_api.g_miss_char) THEN
18159                 l_instance_hist_rec.old_attribute12 := NULL;
18160                 l_instance_hist_rec.new_attribute12 := NULL;
18161            ELSIF
18162               NVL(l_curr_instance_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute12,fnd_api.g_miss_char) THEN
18163                 l_instance_hist_rec.old_attribute12 := l_curr_instance_rec.attribute12 ;
18164                 l_instance_hist_rec.new_attribute12 := p_instance_rec.attribute12 ;
18165            END IF;
18166            --
18167            IF (p_instance_rec.attribute13 = fnd_api.g_miss_char) OR
18168               NVL(l_curr_instance_rec.attribute13,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute13,fnd_api.g_miss_char) THEN
18169                 l_instance_hist_rec.old_attribute13 := NULL;
18170                 l_instance_hist_rec.new_attribute13 := NULL;
18171            ELSIF
18172               NVL(l_curr_instance_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute13,fnd_api.g_miss_char) THEN
18173                 l_instance_hist_rec.old_attribute13 := l_curr_instance_rec.attribute13 ;
18174                 l_instance_hist_rec.new_attribute13 := p_instance_rec.attribute13 ;
18175            END IF;
18176            --
18177            IF (p_instance_rec.attribute14 = fnd_api.g_miss_char) OR
18178               NVL(l_curr_instance_rec.attribute14,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute14,fnd_api.g_miss_char) THEN
18179                 l_instance_hist_rec.old_attribute14 := NULL;
18180                 l_instance_hist_rec.new_attribute14 := NULL;
18181            ELSIF
18182               NVL(l_curr_instance_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute14,fnd_api.g_miss_char) THEN
18183                 l_instance_hist_rec.old_attribute14 := l_curr_instance_rec.attribute14 ;
18184                 l_instance_hist_rec.new_attribute14 := p_instance_rec.attribute14 ;
18185            END IF;
18186            --
18187            IF (p_instance_rec.attribute15 = fnd_api.g_miss_char) OR
18188               NVL(l_curr_instance_rec.attribute15,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute15,fnd_api.g_miss_char) THEN
18189                 l_instance_hist_rec.old_attribute15 := NULL;
18190                 l_instance_hist_rec.new_attribute15 := NULL;
18191            ELSIF
18192               NVL(l_curr_instance_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute15,fnd_api.g_miss_char) THEN
18193                 l_instance_hist_rec.old_attribute15 := l_curr_instance_rec.attribute15 ;
18194                 l_instance_hist_rec.new_attribute15 := p_instance_rec.attribute15 ;
18195            END IF;
18196            --
18197            IF (p_instance_rec.install_location_type_code = fnd_api.g_miss_char) OR
18198               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
18199                 l_instance_hist_rec.old_install_location_type_code := NULL;
18200                 l_instance_hist_rec.new_install_location_type_code := NULL;
18201            ELSIF
18202               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
18203                 l_instance_hist_rec.old_install_location_type_code := l_curr_instance_rec.install_location_type_code ;
18204                 l_instance_hist_rec.new_install_location_type_code := p_instance_rec.install_location_type_code ;
18205            END IF;
18206            --
18207            IF (p_instance_rec.install_location_id = fnd_api.g_miss_num) OR
18208               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
18209                 l_instance_hist_rec.old_install_location_id := NULL;
18210                 l_instance_hist_rec.new_install_location_id := NULL;
18211            ELSIF
18212               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
18213                 l_instance_hist_rec.old_install_location_id := l_curr_instance_rec.install_location_id ;
18214                 l_instance_hist_rec.new_install_location_id := p_instance_rec.install_location_id ;
18215            END IF;
18216            --
18217            IF (p_instance_rec.instance_usage_code = fnd_api.g_miss_char) OR
18218               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
18219                 l_instance_hist_rec.old_instance_usage_code := NULL;
18220                 l_instance_hist_rec.new_instance_usage_code := NULL;
18221            ELSIF
18222               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
18223                 l_instance_hist_rec.old_instance_usage_code := l_curr_instance_rec.instance_usage_code ;
18224                 l_instance_hist_rec.new_instance_usage_code := p_instance_rec.instance_usage_code ;
18225            END IF;
18226            --
18227            IF (p_instance_rec.last_oe_agreement_id = fnd_api.g_miss_num) OR
18228               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
18229                 l_instance_hist_rec.old_last_oe_agreement_id := NULL;
18230                 l_instance_hist_rec.new_last_oe_agreement_id := NULL;
18231            ELSIF
18232               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
18233                 l_instance_hist_rec.old_last_oe_agreement_id := l_curr_instance_rec.last_oe_agreement_id ;
18234                 l_instance_hist_rec.new_last_oe_agreement_id := p_instance_rec.last_oe_agreement_id ;
18235            END IF;
18236            --
18237            IF (p_instance_rec.LAST_OE_ORDER_LINE_ID = fnd_api.g_miss_num) OR
18238               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
18239                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := NULL;
18240                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := NULL;
18241            ELSIF
18242               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
18243                 l_instance_hist_rec.old_LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID ;
18244                 l_instance_hist_rec.new_LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID ;
18245            END IF;
18246            --
18247            IF (p_instance_rec.LAST_OE_RMA_LINE_ID = fnd_api.g_miss_num) OR
18248               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
18249                 l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID := NULL;
18250                 l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID := NULL;
18251            ELSIF
18252               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
18253                 l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID ;
18254                 l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID ;
18255            END IF;
18256            --
18257            IF (p_instance_rec.LAST_WIP_JOB_ID = fnd_api.g_miss_num) OR
18258               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
18259                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := NULL;
18260                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := NULL;
18261            ELSIF
18262               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
18263                 l_instance_hist_rec.old_LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID ;
18264                 l_instance_hist_rec.new_LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID ;
18265            END IF;
18266            --
18267            IF (p_instance_rec.LAST_PO_PO_LINE_ID = fnd_api.g_miss_num) OR
18268               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
18269                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := NULL;
18270                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := NULL;
18271            ELSIF
18272               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
18273                 l_instance_hist_rec.old_LAST_PO_PO_LINE_ID := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
18274                 l_instance_hist_rec.new_LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID ;
18275            END IF;
18276            --
18277            IF (p_instance_rec.LAST_PA_PROJECT_ID = fnd_api.g_miss_num) OR
18278               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
18279                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := NULL;
18280                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := NULL;
18281            ELSIF
18282               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
18283                 l_instance_hist_rec.old_LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID ;
18284                 l_instance_hist_rec.new_LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID ;
18285            END IF;
18286            --
18287            IF (p_instance_rec.LAST_PA_TASK_ID = fnd_api.g_miss_num) OR
18288               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
18289                 l_instance_hist_rec.old_LAST_PA_TASK_ID := NULL;
18290                 l_instance_hist_rec.new_LAST_PA_TASK_ID := NULL;
18291            ELSIF
18292               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
18293                 l_instance_hist_rec.old_LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID ;
18294                 l_instance_hist_rec.new_LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID ;
18295            END IF;
18296            --
18297            IF (p_instance_rec.LAST_TXN_LINE_DETAIL_ID = fnd_api.g_miss_num) OR
18298               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
18299                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := NULL;
18300                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := NULL;
18301            ELSIF
18302               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
18303                 l_instance_hist_rec.old_LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
18304                 l_instance_hist_rec.new_LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID ;
18305            END IF;
18306            --
18307            IF (p_instance_rec.LAST_OE_PO_NUMBER = fnd_api.g_miss_char) OR
18308               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
18309                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := NULL;
18310                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := NULL;
18311            ELSIF
18312               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
18313                 l_instance_hist_rec.old_LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER ;
18314                 l_instance_hist_rec.new_LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER ;
18315            END IF;
18316            --
18317            IF (p_instance_rec.vld_organization_id = fnd_api.g_miss_num) OR
18318               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
18319                 l_curr_instance_rec.last_vld_organization_id := NULL;
18320                 l_last_vld_organization_id := NULL;
18321            ELSIF
18322               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
18323                 l_curr_instance_rec.last_vld_organization_id := l_curr_instance_rec.last_vld_organization_id;
18324                 l_last_vld_organization_id := p_instance_rec.vld_organization_id;
18325            END IF;
18326            --
18327            IF (p_instance_rec.config_inst_rev_num = fnd_api.g_miss_num) OR
18328               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
18329                 l_instance_hist_rec.old_config_inst_rev_num := NULL;
18330                 l_instance_hist_rec.new_config_inst_rev_num := NULL;
18331            ELSIF
18332               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
18333                 l_instance_hist_rec.old_config_inst_rev_num := l_curr_instance_rec.config_inst_rev_num;
18334                 l_instance_hist_rec.new_config_inst_rev_num := p_instance_rec.config_inst_rev_num;
18335            END IF;
18336            --
18337            IF (p_instance_rec.config_valid_status = fnd_api.g_miss_char) OR
18338               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
18339                 l_instance_hist_rec.old_config_valid_status := NULL;
18340                 l_instance_hist_rec.new_config_valid_status := NULL;
18341            ELSIF
18342               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
18343                 l_instance_hist_rec.old_config_valid_status := l_curr_instance_rec.config_valid_status;
18344                 l_instance_hist_rec.new_config_valid_status := p_instance_rec.config_valid_status;
18345            END IF;
18346            --
18347            IF (p_instance_rec.instance_description = fnd_api.g_miss_char) OR
18348               NVL(p_instance_rec.instance_description, fnd_api.g_miss_char) = NVL(l_curr_instance_rec.instance_description, fnd_api.g_miss_char) THEN
18349                 l_instance_hist_rec.old_instance_description := NULL;
18350                 l_instance_hist_rec.new_instance_description := NULL;
18351            ELSIF
18352               NVL(l_curr_instance_rec.instance_description,fnd_api.g_miss_char) <> NVL(p_instance_rec.instance_description,fnd_api.g_miss_char) THEN
18353                 l_instance_hist_rec.old_instance_description := l_curr_instance_rec.instance_description;
18354                 l_instance_hist_rec.new_instance_description := p_instance_rec.instance_description;
18355            END IF;
18356 
18357            IF (p_instance_rec.install_date = fnd_api.g_miss_date) OR
18358               NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) = NVL(p_instance_rec.install_date,fnd_api.g_miss_date) THEN
18359                 l_instance_hist_rec.old_install_date := NULL;
18360                 l_instance_hist_rec.new_install_date := NULL;
18361            ELSIF
18362               NVL(l_curr_instance_rec.install_date,fnd_api.g_miss_date) <> NVL(p_instance_rec.install_date,fnd_api.g_miss_date) THEN
18363                 l_instance_hist_rec.old_install_date := l_curr_instance_rec.install_date ;
18364                 l_instance_hist_rec.new_install_date := p_instance_rec.install_date ;
18365            END IF;
18366 
18367            IF (p_instance_rec.return_by_date = fnd_api.g_miss_date) OR
18368               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
18369                 l_instance_hist_rec.old_return_by_date := NULL;
18370                 l_instance_hist_rec.new_return_by_date := NULL;
18371            ELSIF
18372               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
18373                 l_instance_hist_rec.old_return_by_date := l_curr_instance_rec.return_by_date ;
18374                 l_instance_hist_rec.new_return_by_date := p_instance_rec.return_by_date ;
18375            END IF;
18376 
18377            IF (p_instance_rec.actual_return_date = fnd_api.g_miss_date) OR
18378               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
18379                 l_instance_hist_rec.old_actual_return_date := NULL;
18380                 l_instance_hist_rec.new_actual_return_date := NULL;
18381            ELSIF
18382               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
18383                 l_instance_hist_rec.old_actual_return_date := l_curr_instance_rec.actual_return_date ;
18384                 l_instance_hist_rec.new_actual_return_date := p_instance_rec.actual_return_date ;
18385            END IF;
18386 
18387            --start of code for eam integration--
18388            --
18389            IF (p_instance_rec.network_asset_flag = fnd_api.g_miss_char) OR
18390               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
18391                 l_instance_hist_rec.old_network_asset_flag := NULL;
18392                 l_instance_hist_rec.new_network_asset_flag := NULL;
18393            ELSIF
18394               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
18395                 l_instance_hist_rec.old_network_asset_flag := l_curr_instance_rec.network_asset_flag ;
18396                 l_instance_hist_rec.new_network_asset_flag := p_instance_rec.network_asset_flag ;
18397            END IF;
18398            --
18399            IF (p_instance_rec.maintainable_flag = fnd_api.g_miss_char) OR
18400               NVL(l_curr_instance_rec.maintainable_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.maintainable_flag,fnd_api.g_miss_char) THEN
18401                 l_instance_hist_rec.old_maintainable_flag := NULL;
18402                 l_instance_hist_rec.new_maintainable_flag := NULL;
18403            ELSIF
18404               NVL(l_curr_instance_rec.maintainable_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.maintainable_flag,fnd_api.g_miss_char) THEN
18405                 l_instance_hist_rec.old_maintainable_flag := l_curr_instance_rec.maintainable_flag ;
18406                 l_instance_hist_rec.new_maintainable_flag := p_instance_rec.maintainable_flag ;
18407            END IF;
18408            --
18409            IF (p_instance_rec.pn_location_id = fnd_api.g_miss_num) OR
18410               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
18411                 l_instance_hist_rec.old_pn_location_id := NULL;
18412                 l_instance_hist_rec.new_pn_location_id := NULL;
18413            ELSIF
18414               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
18415                 l_instance_hist_rec.old_pn_location_id := l_curr_instance_rec.pn_location_id ;
18416                 l_instance_hist_rec.new_pn_location_id := p_instance_rec.pn_location_id ;
18417            END IF;
18418            --
18419            IF (p_instance_rec.asset_criticality_code = fnd_api.g_miss_char) OR
18420               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
18421                 l_instance_hist_rec.old_asset_criticality_code := NULL;
18422                 l_instance_hist_rec.new_asset_criticality_code := NULL;
18423            ELSIF
18424               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
18425                 l_instance_hist_rec.old_asset_criticality_code := l_curr_instance_rec.asset_criticality_code ;
18426                 l_instance_hist_rec.new_asset_criticality_code := p_instance_rec.asset_criticality_code ;
18427            END IF;
18428            --
18429            IF (p_instance_rec.category_id = fnd_api.g_miss_num) OR
18430               NVL(l_curr_instance_rec.category_id,fnd_api.g_miss_num) = NVL(p_instance_rec.category_id,fnd_api.g_miss_num) THEN
18431                 l_instance_hist_rec.old_category_id := NULL;
18432                 l_instance_hist_rec.new_category_id := NULL;
18433            ELSIF
18434               NVL(l_curr_instance_rec.category_id,fnd_api.g_miss_num) <> NVL(p_instance_rec.category_id,fnd_api.g_miss_num) THEN
18435                 l_instance_hist_rec.old_category_id := l_curr_instance_rec.category_id ;
18436                 l_instance_hist_rec.new_category_id := p_instance_rec.category_id ;
18437            END IF;
18438            --
18439            IF (p_instance_rec.equipment_gen_object_id = fnd_api.g_miss_num) OR
18440               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
18441                 l_instance_hist_rec.old_equipment_gen_object_id := NULL;
18442                 l_instance_hist_rec.new_equipment_gen_object_id := NULL;
18443            ELSIF
18444               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
18445                 l_instance_hist_rec.old_equipment_gen_object_id := l_curr_instance_rec.equipment_gen_object_id ;
18446                 l_instance_hist_rec.new_equipment_gen_object_id := p_instance_rec.equipment_gen_object_id ;
18447            END IF;
18448            --
18449            IF (p_instance_rec.instantiation_flag = fnd_api.g_miss_char) OR
18450               NVL(l_curr_instance_rec.instantiation_flag,fnd_api.g_miss_char) = NVL(p_instance_rec.instantiation_flag,fnd_api.g_miss_char) THEN
18451                 l_instance_hist_rec.old_instantiation_flag := NULL;
18452                 l_instance_hist_rec.new_instantiation_flag := NULL;
18453            ELSIF
18454               NVL(l_curr_instance_rec.instantiation_flag,fnd_api.g_miss_char) <> NVL(p_instance_rec.instantiation_flag,fnd_api.g_miss_char) THEN
18455                 l_instance_hist_rec.old_instantiation_flag := l_curr_instance_rec.instantiation_flag ;
18456                 l_instance_hist_rec.new_instantiation_flag := p_instance_rec.instantiation_flag ;
18457            END IF;
18458            --
18459            IF (p_instance_rec.linear_location_id = fnd_api.g_miss_num) OR
18460               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
18461                 l_instance_hist_rec.old_linear_location_id := NULL;
18462                 l_instance_hist_rec.new_linear_location_id := NULL;
18463            ELSIF
18464               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
18465                 l_instance_hist_rec.old_linear_location_id := l_curr_instance_rec.linear_location_id ;
18466                 l_instance_hist_rec.new_linear_location_id := p_instance_rec.linear_location_id ;
18467            END IF;
18468            --
18469            IF (p_instance_rec.operational_log_flag = fnd_api.g_miss_char) OR
18470               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
18471                 l_instance_hist_rec.old_operational_log_flag := NULL;
18472                 l_instance_hist_rec.new_operational_log_flag := NULL;
18473            ELSIF
18474               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
18475                 l_instance_hist_rec.old_operational_log_flag := l_curr_instance_rec.operational_log_flag ;
18476                 l_instance_hist_rec.new_operational_log_flag := p_instance_rec.operational_log_flag ;
18477            END IF;
18478            --
18479            IF (p_instance_rec.checkin_status = fnd_api.g_miss_num) OR
18480               NVL(l_curr_instance_rec.checkin_status,fnd_api.g_miss_num) = NVL(p_instance_rec.checkin_status,fnd_api.g_miss_num) THEN
18481                 l_instance_hist_rec.old_checkin_status := NULL;
18482                 l_instance_hist_rec.new_checkin_status := NULL;
18483            ELSIF
18484               NVL(l_curr_instance_rec.checkin_status,fnd_api.g_miss_num) <> NVL(p_instance_rec.checkin_status,fnd_api.g_miss_num) THEN
18485                 l_instance_hist_rec.old_checkin_status := l_curr_instance_rec.checkin_status ;
18486                 l_instance_hist_rec.new_checkin_status := p_instance_rec.checkin_status ;
18487            END IF;
18488            --
18489            IF (p_instance_rec.supplier_warranty_exp_date = fnd_api.g_miss_date) OR
18490               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
18491                 l_instance_hist_rec.old_supplier_warranty_exp_date := NULL;
18492                 l_instance_hist_rec.new_supplier_warranty_exp_date := NULL;
18493            ELSIF
18494               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
18495                 l_instance_hist_rec.old_supplier_warranty_exp_date := l_curr_instance_rec.supplier_warranty_exp_date ;
18496                 l_instance_hist_rec.new_supplier_warranty_exp_date := p_instance_rec.supplier_warranty_exp_date ;
18497            END IF;
18498            --
18499            IF (p_instance_rec.attribute16 = fnd_api.g_miss_char) OR
18500               NVL(l_curr_instance_rec.attribute16,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute16,fnd_api.g_miss_char) THEN
18501                 l_instance_hist_rec.old_attribute16 := NULL;
18502                 l_instance_hist_rec.new_attribute16 := NULL;
18503            ELSIF
18504               NVL(l_curr_instance_rec.attribute16,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute16,fnd_api.g_miss_char) THEN
18505                 l_instance_hist_rec.old_attribute16 := l_curr_instance_rec.attribute16 ;
18506                 l_instance_hist_rec.new_attribute16 := p_instance_rec.attribute16 ;
18507            END IF;
18508            --
18509            IF (p_instance_rec.attribute17 = fnd_api.g_miss_char) OR
18510               NVL(l_curr_instance_rec.attribute17,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute17,fnd_api.g_miss_char) THEN
18511                 l_instance_hist_rec.old_attribute17 := NULL;
18512                 l_instance_hist_rec.new_attribute17 := NULL;
18513            ELSIF
18514               NVL(l_curr_instance_rec.attribute17,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute17,fnd_api.g_miss_char) THEN
18515                 l_instance_hist_rec.old_attribute17 := l_curr_instance_rec.attribute17 ;
18516                 l_instance_hist_rec.new_attribute17 := p_instance_rec.attribute17 ; -- code change for Bug 8421940 (FP of Bug 8413754)
18517            END IF;
18518            --
18519            IF (p_instance_rec.attribute18 = fnd_api.g_miss_char) OR
18520               NVL(l_curr_instance_rec.attribute18,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute18,fnd_api.g_miss_char) THEN
18521                 l_instance_hist_rec.old_attribute18 := NULL;
18522                 l_instance_hist_rec.new_attribute18 := NULL;
18523            ELSIF
18524               NVL(l_curr_instance_rec.attribute18,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute18,fnd_api.g_miss_char) THEN
18525                 l_instance_hist_rec.old_attribute18 := l_curr_instance_rec.attribute18 ;
18526                 l_instance_hist_rec.new_attribute18 := p_instance_rec.attribute18 ;
18527            END IF;
18528            --
18529            IF (p_instance_rec.attribute19 = fnd_api.g_miss_char) OR
18530               NVL(l_curr_instance_rec.attribute19,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute19,fnd_api.g_miss_char) THEN
18531                 l_instance_hist_rec.old_attribute19 := NULL;
18532                 l_instance_hist_rec.new_attribute19 := NULL;
18533            ELSIF
18534               NVL(l_curr_instance_rec.attribute19,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute19,fnd_api.g_miss_char) THEN
18535                 l_instance_hist_rec.old_attribute19 := l_curr_instance_rec.attribute19 ;
18536                 l_instance_hist_rec.new_attribute19 := p_instance_rec.attribute19 ;
18537            END IF;
18538            --
18539            IF (p_instance_rec.attribute20 = fnd_api.g_miss_char) OR
18540               NVL(l_curr_instance_rec.attribute20,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute20,fnd_api.g_miss_char) THEN
18541                 l_instance_hist_rec.old_attribute20 := NULL;
18542                 l_instance_hist_rec.new_attribute20 := NULL;
18543            ELSIF
18544               NVL(l_curr_instance_rec.attribute20,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute20,fnd_api.g_miss_char) THEN
18545                 l_instance_hist_rec.old_attribute20 := l_curr_instance_rec.attribute20 ;
18546                 l_instance_hist_rec.new_attribute20 := p_instance_rec.attribute20 ;
18547            END IF;
18548            --
18549            IF (p_instance_rec.attribute21 = fnd_api.g_miss_char) OR
18550               NVL(l_curr_instance_rec.attribute21,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute21,fnd_api.g_miss_char) THEN
18551                 l_instance_hist_rec.old_attribute21 := NULL;
18552                 l_instance_hist_rec.new_attribute21 := NULL;
18553            ELSIF
18554               NVL(l_curr_instance_rec.attribute21,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute21,fnd_api.g_miss_char) THEN
18555                 l_instance_hist_rec.old_attribute21 := l_curr_instance_rec.attribute21 ;
18556                 l_instance_hist_rec.new_attribute21 := p_instance_rec.attribute21 ;
18557            END IF;
18558            --
18559            IF (p_instance_rec.attribute22 = fnd_api.g_miss_char) OR
18560               NVL(l_curr_instance_rec.attribute22,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute22,fnd_api.g_miss_char) THEN
18561                 l_instance_hist_rec.old_attribute22 := NULL;
18562                 l_instance_hist_rec.new_attribute22 := NULL;
18563            ELSIF
18564               NVL(l_curr_instance_rec.attribute22,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute22,fnd_api.g_miss_char) THEN
18565                 l_instance_hist_rec.old_attribute22 := l_curr_instance_rec.attribute22 ;
18566                 l_instance_hist_rec.new_attribute22 := p_instance_rec.attribute22 ;
18567            END IF;
18568            --
18569            IF (p_instance_rec.attribute23 = fnd_api.g_miss_char) OR
18570               NVL(l_curr_instance_rec.attribute23,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute23,fnd_api.g_miss_char) THEN
18571                 l_instance_hist_rec.old_attribute23 := NULL;
18572                 l_instance_hist_rec.new_attribute23 := NULL;
18573            ELSIF
18574               NVL(l_curr_instance_rec.attribute23,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute23,fnd_api.g_miss_char) THEN
18575                 l_instance_hist_rec.old_attribute23 := l_curr_instance_rec.attribute23 ;
18576                 l_instance_hist_rec.new_attribute23 := p_instance_rec.attribute23 ;
18577            END IF;
18578            --
18579            IF (p_instance_rec.attribute24 = fnd_api.g_miss_char) OR
18580               NVL(l_curr_instance_rec.attribute24,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute24,fnd_api.g_miss_char) THEN
18581                 l_instance_hist_rec.old_attribute24 := NULL;
18582                 l_instance_hist_rec.new_attribute24 := NULL;
18583            ELSIF
18584               NVL(l_curr_instance_rec.attribute24,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute24,fnd_api.g_miss_char) THEN
18585                 l_instance_hist_rec.old_attribute24 := l_curr_instance_rec.attribute24 ;
18586                 l_instance_hist_rec.new_attribute24 := p_instance_rec.attribute24 ;
18587            END IF;
18588            --
18589            IF (p_instance_rec.attribute25 = fnd_api.g_miss_char) OR
18590               NVL(l_curr_instance_rec.attribute25,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute25,fnd_api.g_miss_char) THEN
18591                 l_instance_hist_rec.old_attribute25 := NULL;
18592                 l_instance_hist_rec.new_attribute25 := NULL;
18593            ELSIF
18594               NVL(l_curr_instance_rec.attribute25,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute25,fnd_api.g_miss_char) THEN
18595                 l_instance_hist_rec.old_attribute25 := l_curr_instance_rec.attribute25 ;
18596                 l_instance_hist_rec.new_attribute25 := p_instance_rec.attribute25 ;
18597            END IF;
18598            --
18599            IF (p_instance_rec.attribute26 = fnd_api.g_miss_char) OR
18600               NVL(l_curr_instance_rec.attribute26,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute26,fnd_api.g_miss_char) THEN
18601                 l_instance_hist_rec.old_attribute26 := NULL;
18602                 l_instance_hist_rec.new_attribute26 := NULL;
18603            ELSIF
18604               NVL(l_curr_instance_rec.attribute26,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute26,fnd_api.g_miss_char) THEN
18605                 l_instance_hist_rec.old_attribute26 := l_curr_instance_rec.attribute26 ;
18606                 l_instance_hist_rec.new_attribute26 := p_instance_rec.attribute26 ;
18607            END IF;
18608            --
18609            IF (p_instance_rec.attribute27 = fnd_api.g_miss_char) OR
18610               NVL(l_curr_instance_rec.attribute27,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute27,fnd_api.g_miss_char) THEN
18611                 l_instance_hist_rec.old_attribute27 := NULL;
18612                 l_instance_hist_rec.new_attribute27 := NULL;
18613            ELSIF
18614               NVL(l_curr_instance_rec.attribute27,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute27,fnd_api.g_miss_char) THEN
18615                 l_instance_hist_rec.old_attribute27 := l_curr_instance_rec.attribute27 ;
18616                 l_instance_hist_rec.new_attribute27 := p_instance_rec.attribute27 ;
18617            END IF;
18618            --
18619            IF (p_instance_rec.attribute28 = fnd_api.g_miss_char) OR
18620               NVL(l_curr_instance_rec.attribute28,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute28,fnd_api.g_miss_char) THEN
18621                 l_instance_hist_rec.old_attribute28 := NULL;
18622                 l_instance_hist_rec.new_attribute28 := NULL;
18623            ELSIF
18624               NVL(l_curr_instance_rec.attribute28,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute28,fnd_api.g_miss_char) THEN
18625                 l_instance_hist_rec.old_attribute28 := l_curr_instance_rec.attribute28 ;
18626                 l_instance_hist_rec.new_attribute28 := p_instance_rec.attribute28 ;
18627            END IF;
18628            --
18629            IF (p_instance_rec.attribute29 = fnd_api.g_miss_char) OR
18630               NVL(l_curr_instance_rec.attribute29,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute29,fnd_api.g_miss_char) THEN
18631                 l_instance_hist_rec.old_attribute29 := NULL;
18632                 l_instance_hist_rec.new_attribute29 := NULL;
18633            ELSIF
18634               NVL(l_curr_instance_rec.attribute29,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute14,fnd_api.g_miss_char) THEN
18635                 l_instance_hist_rec.old_attribute29 := l_curr_instance_rec.attribute29 ;
18636                 l_instance_hist_rec.new_attribute29 := p_instance_rec.attribute29 ;
18637            END IF;
18638            --
18639            IF (p_instance_rec.attribute30 = fnd_api.g_miss_char) OR
18640               NVL(l_curr_instance_rec.attribute30,fnd_api.g_miss_char) = NVL(p_instance_rec.attribute30,fnd_api.g_miss_char) THEN
18641                 l_instance_hist_rec.old_attribute30 := NULL;
18642                 l_instance_hist_rec.new_attribute30 := NULL;
18643            ELSIF
18644               NVL(l_curr_instance_rec.attribute30,fnd_api.g_miss_char) <> NVL(p_instance_rec.attribute30,fnd_api.g_miss_char) THEN
18645                 l_instance_hist_rec.old_attribute30 := l_curr_instance_rec.attribute30 ;
18646                 l_instance_hist_rec.new_attribute30 := p_instance_rec.attribute30 ;
18647            END IF;
18648            --end of code for eam integration--
18649 
18650            -- Addition of columns for FA Integration
18651 
18652            IF (p_instance_rec.purchase_unit_price = fnd_api.g_miss_num) OR
18653               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
18654                 l_instance_hist_rec.old_purchase_unit_price := NULL;
18655                 l_instance_hist_rec.new_purchase_unit_price := NULL;
18656            ELSIF
18657               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
18658                 l_instance_hist_rec.old_purchase_unit_price := l_curr_instance_rec.purchase_unit_price ;
18659                 l_instance_hist_rec.new_purchase_unit_price := p_instance_rec.purchase_unit_price ;
18660            END IF;
18661 
18662            IF (p_instance_rec.purchase_currency_code = fnd_api.g_miss_char) OR
18663               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
18664                 l_instance_hist_rec.old_purchase_currency_code := NULL;
18665                 l_instance_hist_rec.new_purchase_currency_code := NULL;
18666            ELSIF
18667               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
18668                 l_instance_hist_rec.old_purchase_currency_code := l_curr_instance_rec.purchase_currency_code ;
18669                 l_instance_hist_rec.new_purchase_currency_code := p_instance_rec.purchase_currency_code ;
18670            END IF;
18671 
18672            IF (p_instance_rec.payables_unit_price = fnd_api.g_miss_num) OR
18673               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
18674                 l_instance_hist_rec.old_payables_unit_price := NULL;
18675                 l_instance_hist_rec.new_payables_unit_price := NULL;
18676            ELSIF
18677               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
18678                 l_instance_hist_rec.old_payables_unit_price := l_curr_instance_rec.payables_unit_price ;
18679                 l_instance_hist_rec.new_payables_unit_price := p_instance_rec.payables_unit_price ;
18680            END IF;
18681 
18682            IF (p_instance_rec.payables_currency_code = fnd_api.g_miss_char) OR
18683               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
18684                 l_instance_hist_rec.old_payables_currency_code := NULL;
18685                 l_instance_hist_rec.new_payables_currency_code := NULL;
18686            ELSIF
18687               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
18688                 l_instance_hist_rec.old_payables_currency_code := l_curr_instance_rec.payables_currency_code ;
18689                 l_instance_hist_rec.new_payables_currency_code := p_instance_rec.payables_currency_code ;
18690            END IF;
18691 
18692            IF (p_instance_rec.sales_unit_price = fnd_api.g_miss_num) OR
18693               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
18694                 l_instance_hist_rec.old_sales_unit_price := NULL;
18695                 l_instance_hist_rec.new_sales_unit_price := NULL;
18696            ELSIF
18697               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
18698                 l_instance_hist_rec.old_sales_unit_price := l_curr_instance_rec.sales_unit_price ;
18699                 l_instance_hist_rec.new_sales_unit_price := p_instance_rec.sales_unit_price ;
18700            END IF;
18701 
18702            IF (p_instance_rec.sales_currency_code = fnd_api.g_miss_char) OR
18703               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
18704                 l_instance_hist_rec.old_sales_currency_code := NULL;
18705                 l_instance_hist_rec.new_sales_currency_code := NULL;
18706            ELSIF
18707               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
18708                 l_instance_hist_rec.old_sales_currency_code := l_curr_instance_rec.sales_currency_code ;
18709                 l_instance_hist_rec.new_sales_currency_code := p_instance_rec.sales_currency_code ;
18710            END IF;
18711 
18712            IF (p_instance_rec.operational_status_code = fnd_api.g_miss_char) OR
18713               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
18714                 l_instance_hist_rec.old_operational_status_code := NULL;
18715                 l_instance_hist_rec.new_operational_status_code := NULL;
18716            ELSIF
18717               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
18718                 l_instance_hist_rec.old_operational_status_code := l_curr_instance_rec.operational_status_code ;
18719                 l_instance_hist_rec.new_operational_status_code := p_instance_rec.operational_status_code ;
18720            END IF;
18721            -- End addition of columns for FA Integration
18722 
18723           CSI_ITEM_INSTANCES_H_PKG.Insert_Row
18724            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
18725             ,p_INSTANCE_ID                       => p_instance_rec.instance_id
18726             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
18727             ,p_OLD_INSTANCE_NUMBER               => l_instance_hist_rec.OLD_INSTANCE_NUMBER
18728             ,p_NEW_INSTANCE_NUMBER               => l_instance_hist_rec.NEW_INSTANCE_NUMBER
18729             ,p_OLD_EXTERNAL_REFERENCE            => l_instance_hist_rec.OLD_EXTERNAL_REFERENCE
18730             ,p_NEW_EXTERNAL_REFERENCE            => l_instance_hist_rec.NEW_EXTERNAL_REFERENCE
18731             ,p_OLD_INVENTORY_ITEM_ID             => l_instance_hist_rec.OLD_INVENTORY_ITEM_ID
18732             ,p_NEW_INVENTORY_ITEM_ID             => l_instance_hist_rec.NEW_INVENTORY_ITEM_ID
18733             ,p_OLD_INVENTORY_REVISION            => l_instance_hist_rec.OLD_INVENTORY_REVISION
18734             ,p_NEW_INVENTORY_REVISION            => l_instance_hist_rec.NEW_INVENTORY_REVISION
18735             ,p_OLD_INV_MASTER_ORGZN_ID           => l_instance_hist_rec.OLD_INV_MASTER_ORG_ID
18736             ,p_NEW_INV_MASTER_ORGZN_ID           => l_instance_hist_rec.NEW_INV_MASTER_ORG_ID
18737             ,p_OLD_SERIAL_NUMBER                 => l_instance_hist_rec.OLD_SERIAL_NUMBER
18738             ,p_NEW_SERIAL_NUMBER                 => l_instance_hist_rec.NEW_SERIAL_NUMBER
18739             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_instance_hist_rec.OLD_MFG_SERIAL_NUMBER_FLAG
18740             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_instance_hist_rec.NEW_MFG_SERIAL_NUMBER_FLAG
18741             ,p_OLD_LOT_NUMBER                    => l_instance_hist_rec.OLD_LOT_NUMBER
18742             ,p_NEW_LOT_NUMBER                    => l_instance_hist_rec.NEW_LOT_NUMBER
18743             ,p_OLD_QUANTITY                      => l_instance_hist_rec.OLD_QUANTITY
18744             ,p_NEW_QUANTITY                      => l_instance_hist_rec.NEW_QUANTITY
18745             ,p_OLD_UNIT_OF_MEASURE               => l_instance_hist_rec.OLD_UNIT_OF_MEASURE
18746             ,p_NEW_UNIT_OF_MEASURE               => l_instance_hist_rec.NEW_UNIT_OF_MEASURE
18747             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_instance_hist_rec.OLD_ACCOUNTING_CLASS_CODE
18748             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_instance_hist_rec.NEW_ACCOUNTING_CLASS_CODE
18749             ,p_OLD_INSTANCE_CONDITION_ID         => l_instance_hist_rec.OLD_INSTANCE_CONDITION_ID
18750             ,p_NEW_INSTANCE_CONDITION_ID         => l_instance_hist_rec.NEW_INSTANCE_CONDITION_ID
18751             ,p_OLD_INSTANCE_STATUS_ID            => l_instance_hist_rec.OLD_INSTANCE_STATUS_ID
18752             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_hist_rec.NEW_INSTANCE_STATUS_ID
18753             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_instance_hist_rec.OLD_CUSTOMER_VIEW_FLAG
18754             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_instance_hist_rec.NEW_CUSTOMER_VIEW_FLAG
18755             ,p_OLD_MERCHANT_VIEW_FLAG            => l_instance_hist_rec.OLD_MERCHANT_VIEW_FLAG
18756             ,p_NEW_MERCHANT_VIEW_FLAG            => l_instance_hist_rec.NEW_MERCHANT_VIEW_FLAG
18757             ,p_OLD_SELLABLE_FLAG                 => l_instance_hist_rec.OLD_SELLABLE_FLAG
18758             ,p_NEW_SELLABLE_FLAG                 => l_instance_hist_rec.NEW_SELLABLE_FLAG
18759             ,p_OLD_SYSTEM_ID                     => l_instance_hist_rec.OLD_SYSTEM_ID
18760             ,p_NEW_SYSTEM_ID                     => l_instance_hist_rec.NEW_SYSTEM_ID
18761             ,p_OLD_INSTANCE_TYPE_CODE            => l_instance_hist_rec.OLD_INSTANCE_TYPE_CODE
18762             ,p_NEW_INSTANCE_TYPE_CODE            => l_instance_hist_rec.NEW_INSTANCE_TYPE_CODE
18763             ,p_OLD_ACTIVE_START_DATE             => l_instance_hist_rec.OLD_ACTIVE_START_DATE
18764             ,p_NEW_ACTIVE_START_DATE             => l_instance_hist_rec.NEW_ACTIVE_START_DATE
18765             ,p_OLD_ACTIVE_END_DATE               => l_instance_hist_rec.OLD_ACTIVE_END_DATE
18766             ,p_NEW_ACTIVE_END_DATE               => l_instance_hist_rec.NEW_ACTIVE_END_DATE
18767             ,p_OLD_LOCATION_TYPE_CODE            => l_instance_hist_rec.OLD_LOCATION_TYPE_CODE
18768             ,p_NEW_LOCATION_TYPE_CODE            => l_instance_hist_rec.NEW_LOCATION_TYPE_CODE
18769             ,p_OLD_LOCATION_ID                   => l_instance_hist_rec.OLD_LOCATION_ID
18770             ,p_NEW_LOCATION_ID                   => l_instance_hist_rec.NEW_LOCATION_ID
18771             ,p_OLD_INV_ORGANIZATION_ID           => l_instance_hist_rec.OLD_INV_ORGANIZATION_ID
18772             ,p_NEW_INV_ORGANIZATION_ID           => l_instance_hist_rec.NEW_INV_ORGANIZATION_ID
18773             ,p_OLD_INV_SUBINVENTORY_NAME         => l_instance_hist_rec.OLD_INV_SUBINVENTORY_NAME
18774             ,p_NEW_INV_SUBINVENTORY_NAME         => l_instance_hist_rec.NEW_INV_SUBINVENTORY_NAME
18775             ,p_OLD_INV_LOCATOR_ID                => l_instance_hist_rec.OLD_INV_LOCATOR_ID
18776             ,p_NEW_INV_LOCATOR_ID                => l_instance_hist_rec.NEW_INV_LOCATOR_ID
18777             ,p_OLD_PA_PROJECT_ID                 => l_instance_hist_rec.OLD_PA_PROJECT_ID
18778             ,p_NEW_PA_PROJECT_ID                 => l_instance_hist_rec.NEW_PA_PROJECT_ID
18779             ,p_OLD_PA_PROJECT_TASK_ID            => l_instance_hist_rec.OLD_PA_PROJECT_TASK_ID
18780             ,p_NEW_PA_PROJECT_TASK_ID            => l_instance_hist_rec.NEW_PA_PROJECT_TASK_ID
18781             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_instance_hist_rec.OLD_IN_TRANSIT_ORDER_LINE_ID
18782             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_instance_hist_rec.NEW_IN_TRANSIT_ORDER_LINE_ID
18783             ,p_OLD_WIP_JOB_ID                    => l_instance_hist_rec.OLD_WIP_JOB_ID
18784             ,p_NEW_WIP_JOB_ID                    => l_instance_hist_rec.NEW_WIP_JOB_ID
18785             ,p_OLD_PO_ORDER_LINE_ID              => l_instance_hist_rec.OLD_PO_ORDER_LINE_ID
18786             ,p_NEW_PO_ORDER_LINE_ID              => l_instance_hist_rec.NEW_PO_ORDER_LINE_ID
18787             ,p_OLD_COMPLETENESS_FLAG             => l_instance_hist_rec.OLD_COMPLETENESS_FLAG
18788             ,p_NEW_COMPLETENESS_FLAG             => l_instance_hist_rec.NEW_COMPLETENESS_FLAG
18789             ,p_FULL_DUMP_FLAG                    => 'N'
18790             ,p_NEW_CONTEXT                       => l_instance_hist_rec.NEW_CONTEXT
18791             ,P_OLD_CONTEXT                       => l_instance_hist_rec.OLD_CONTEXT
18792             ,p_NEW_ATTRIBUTE1                    => l_instance_hist_rec.NEW_ATTRIBUTE1
18793             ,p_OLD_ATTRIBUTE1                    => l_instance_hist_rec.OLD_ATTRIBUTE1
18794             ,p_NEW_ATTRIBUTE2                    => l_instance_hist_rec.NEW_ATTRIBUTE2
18795             ,p_OLD_ATTRIBUTE2                    => l_instance_hist_rec.OLD_ATTRIBUTE2
18796             ,p_NEW_ATTRIBUTE3                    => l_instance_hist_rec.NEW_ATTRIBUTE3
18797             ,p_OLD_ATTRIBUTE3                    => l_instance_hist_rec.OLD_ATTRIBUTE3
18798             ,p_NEW_ATTRIBUTE4                    => l_instance_hist_rec.NEW_ATTRIBUTE4
18799             ,p_OLD_ATTRIBUTE4                    => l_instance_hist_rec.OLD_ATTRIBUTE4
18800             ,p_NEW_ATTRIBUTE5                    => l_instance_hist_rec.NEW_ATTRIBUTE5
18801             ,p_OLD_ATTRIBUTE5                    => l_instance_hist_rec.OLD_ATTRIBUTE5
18802             ,p_NEW_ATTRIBUTE6                    => l_instance_hist_rec.NEW_ATTRIBUTE6
18803             ,p_OLD_ATTRIBUTE6                    => l_instance_hist_rec.OLD_ATTRIBUTE6
18804             ,p_NEW_ATTRIBUTE7                    => l_instance_hist_rec.NEW_ATTRIBUTE7
18805             ,p_OLD_ATTRIBUTE7                    => l_instance_hist_rec.OLD_ATTRIBUTE7
18806             ,p_NEW_ATTRIBUTE8                    => l_instance_hist_rec.NEW_ATTRIBUTE8
18807             ,p_OLD_ATTRIBUTE8                    => l_instance_hist_rec.OLD_ATTRIBUTE8
18808             ,p_NEW_ATTRIBUTE9                    => l_instance_hist_rec.NEW_ATTRIBUTE9
18809             ,p_OLD_ATTRIBUTE9                    => l_instance_hist_rec.OLD_ATTRIBUTE9
18810             ,p_NEW_ATTRIBUTE10                   => l_instance_hist_rec.NEW_ATTRIBUTE10
18811             ,p_OLD_ATTRIBUTE10                   => l_instance_hist_rec.OLD_ATTRIBUTE10
18812             ,p_NEW_ATTRIBUTE11                   => l_instance_hist_rec.NEW_ATTRIBUTE11
18813             ,p_OLD_ATTRIBUTE11                   => l_instance_hist_rec.OLD_ATTRIBUTE11
18814             ,p_NEW_ATTRIBUTE12                   => l_instance_hist_rec.NEW_ATTRIBUTE12
18815             ,p_OLD_ATTRIBUTE12                   => l_instance_hist_rec.OLD_ATTRIBUTE12
18816             ,p_NEW_ATTRIBUTE13                   => l_instance_hist_rec.NEW_ATTRIBUTE13
18817             ,p_OLD_ATTRIBUTE13                   => l_instance_hist_rec.OLD_ATTRIBUTE13
18818             ,p_NEW_ATTRIBUTE14                   => l_instance_hist_rec.NEW_ATTRIBUTE14
18819             ,p_OLD_ATTRIBUTE14                   => l_instance_hist_rec.OLD_ATTRIBUTE14
18820             ,p_NEW_ATTRIBUTE15                   => l_instance_hist_rec.NEW_ATTRIBUTE15
18821             ,p_OLD_ATTRIBUTE15                   => l_instance_hist_rec.OLD_ATTRIBUTE15
18822             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
18823             ,p_CREATION_DATE                     => SYSDATE
18824             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
18825             ,p_LAST_UPDATE_DATE                  => SYSDATE
18826             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
18827             ,p_OBJECT_VERSION_NUMBER             => 1
18828             ,p_OLD_INST_LOC_TYPE_CODE            => l_instance_hist_rec.OLD_INSTALL_LOCATION_TYPE_CODE
18829             ,p_NEW_INST_LOC_TYPE_CODE            => l_instance_hist_rec.NEW_INSTALL_LOCATION_TYPE_CODE
18830             ,p_OLD_INST_LOC_ID                   => l_instance_hist_rec.OLD_INSTALL_LOCATION_ID
18831             ,p_NEW_INST_LOC_ID                   => l_instance_hist_rec.NEW_INSTALL_LOCATION_ID
18832             ,p_OLD_INST_USAGE_CODE               => l_instance_hist_rec.OLD_INSTANCE_USAGE_CODE
18833             ,p_NEW_INST_USAGE_CODE               => l_instance_hist_rec.NEW_INSTANCE_USAGE_CODE
18834             ,p_OLD_last_vld_organization_id      => l_curr_instance_rec.LAST_VLD_ORGANIZATION_ID
18835             ,p_NEW_last_vld_organization_id      => l_last_vld_organization_id
18836             ,p_OLD_CONFIG_INST_REV_NUM           => l_instance_hist_rec.OLD_CONFIG_INST_REV_NUM
18837             ,p_NEW_CONFIG_INST_REV_NUM           => l_instance_hist_rec.NEW_CONFIG_INST_REV_NUM
18838             ,p_OLD_CONFIG_VALID_STATUS           => l_instance_hist_rec.OLD_CONFIG_VALID_STATUS
18839             ,p_NEW_CONFIG_VALID_STATUS           => l_instance_hist_rec.NEW_CONFIG_VALID_STATUS
18840             ,p_OLD_INSTANCE_DESCRIPTION          => l_instance_hist_rec.OLD_INSTANCE_DESCRIPTION
18841             ,p_NEW_INSTANCE_DESCRIPTION          => l_instance_hist_rec.NEW_INSTANCE_DESCRIPTION
18842             ,p_OLD_INSTALL_DATE                  => l_instance_hist_rec.OLD_INSTALL_DATE
18843             ,p_NEW_INSTALL_DATE                  => l_instance_hist_rec.NEW_INSTALL_DATE
18844             ,p_OLD_RETURN_BY_DATE                => l_instance_hist_rec.OLD_RETURN_BY_DATE
18845             ,p_NEW_RETURN_BY_DATE                => l_instance_hist_rec.NEW_RETURN_BY_DATE
18846             ,p_OLD_ACTUAL_RETURN_DATE            => l_instance_hist_rec.OLD_ACTUAL_RETURN_DATE
18847             ,p_NEW_ACTUAL_RETURN_DATE            => l_instance_hist_rec.NEW_ACTUAL_RETURN_DATE
18848             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_instance_hist_rec.OLD_LAST_OE_AGREEMENT_ID
18849             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_instance_hist_rec.NEW_LAST_OE_AGREEMENT_ID
18850 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_instance_hist_rec.OLD_LAST_OE_ORDER_LINE_ID
18851 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_instance_hist_rec.NEW_LAST_OE_ORDER_LINE_ID
18852 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_instance_hist_rec.OLD_LAST_OE_RMA_LINE_ID
18853 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_instance_hist_rec.NEW_LAST_OE_RMA_LINE_ID
18854 	    ,p_OLD_LAST_WIP_JOB_ID               => l_instance_hist_rec.OLD_LAST_WIP_JOB_ID
18855 	    ,p_NEW_LAST_WIP_JOB_ID               => l_instance_hist_rec.NEW_LAST_WIP_JOB_ID
18856 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_instance_hist_rec.OLD_LAST_PO_PO_LINE_ID
18857 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_instance_hist_rec.NEW_LAST_PO_PO_LINE_ID
18858 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_instance_hist_rec.OLD_LAST_PA_PROJECT_ID
18859 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_instance_hist_rec.NEW_LAST_PA_PROJECT_ID
18860 	    ,p_OLD_LAST_PA_TASK_ID          => l_instance_hist_rec.OLD_LAST_PA_TASK_ID
18861 	    ,p_NEW_LAST_PA_TASK_ID          => l_instance_hist_rec.NEW_LAST_PA_TASK_ID
18862 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_instance_hist_rec.OLD_LAST_TXN_LINE_DETAIL_ID
18863 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_instance_hist_rec.NEW_LAST_TXN_LINE_DETAIL_ID
18864 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_instance_hist_rec.OLD_LAST_OE_PO_NUMBER
18865 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_instance_hist_rec.NEW_LAST_OE_PO_NUMBER
18866  	    --start of parameters addition for eam integration--
18867 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_instance_hist_rec.OLD_NETWORK_ASSET_FLAG
18868 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_instance_hist_rec.NEW_NETWORK_ASSET_FLAG
18869 	    ,p_OLD_MAINTAINABLE_FLAG              => l_instance_hist_rec.OLD_MAINTAINABLE_FLAG
18870 	    ,p_NEW_MAINTAINABLE_FLAG              => l_instance_hist_rec.NEW_MAINTAINABLE_FLAG
18871 	    ,p_OLD_PN_LOCATION_ID                 => l_instance_hist_rec.OLD_PN_LOCATION_ID
18872 	    ,p_NEW_PN_LOCATION_ID                 => l_instance_hist_rec.NEW_PN_LOCATION_ID
18873 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_instance_hist_rec.OLD_ASSET_CRITICALITY_CODE
18874 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_instance_hist_rec.NEW_ASSET_CRITICALITY_CODE
18875 	    ,p_OLD_CATEGORY_ID                    => l_instance_hist_rec.OLD_CATEGORY_ID
18876 	    ,p_NEW_CATEGORY_ID                    => l_instance_hist_rec.NEW_CATEGORY_ID
18877 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_instance_hist_rec.OLD_EQUIPMENT_GEN_OBJECT_ID
18878 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_instance_hist_rec.NEW_EQUIPMENT_GEN_OBJECT_ID
18879 	    ,p_OLD_INSTANTIATION_FLAG             => l_instance_hist_rec.OLD_INSTANTIATION_FLAG
18880 	    ,p_NEW_INSTANTIATION_FLAG             => l_instance_hist_rec.NEW_INSTANTIATION_FLAG
18881 	    ,p_OLD_LINEAR_LOCATION_ID             => l_instance_hist_rec.OLD_LINEAR_LOCATION_ID
18882 	    ,p_NEW_LINEAR_LOCATION_ID             => l_instance_hist_rec.NEW_LINEAR_LOCATION_ID
18883 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_instance_hist_rec.OLD_OPERATIONAL_LOG_FLAG
18884 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_instance_hist_rec.NEW_OPERATIONAL_LOG_FLAG
18885 	    ,p_OLD_CHECKIN_STATUS                 => l_instance_hist_rec.OLD_CHECKIN_STATUS
18886 	    ,p_NEW_CHECKIN_STATUS                 => l_instance_hist_rec.NEW_CHECKIN_STATUS
18887 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_instance_hist_rec.OLD_SUPPLIER_WARRANTY_EXP_DATE
18888 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_instance_hist_rec.NEW_SUPPLIER_WARRANTY_EXP_DATE
18889             ,p_OLD_ATTRIBUTE16                    => l_instance_hist_rec.OLD_ATTRIBUTE16
18890             ,p_NEW_ATTRIBUTE16                    => l_instance_hist_rec.NEW_ATTRIBUTE16
18891             ,p_OLD_ATTRIBUTE17                    => l_instance_hist_rec.OLD_ATTRIBUTE17
18892             ,p_NEW_ATTRIBUTE17                    => l_instance_hist_rec.NEW_ATTRIBUTE17
18893             ,p_OLD_ATTRIBUTE18                    => l_instance_hist_rec.OLD_ATTRIBUTE18
18894             ,p_NEW_ATTRIBUTE18                    => l_instance_hist_rec.NEW_ATTRIBUTE18
18895             ,p_OLD_ATTRIBUTE19                    => l_instance_hist_rec.OLD_ATTRIBUTE19
18896             ,p_NEW_ATTRIBUTE19                    => l_instance_hist_rec.NEW_ATTRIBUTE19
18897             ,p_OLD_ATTRIBUTE20                    => l_instance_hist_rec.OLD_ATTRIBUTE20
18898             ,p_NEW_ATTRIBUTE20                    => l_instance_hist_rec.NEW_ATTRIBUTE20
18899             ,p_OLD_ATTRIBUTE21                    => l_instance_hist_rec.OLD_ATTRIBUTE21
18900             ,p_NEW_ATTRIBUTE21                    => l_instance_hist_rec.NEW_ATTRIBUTE21
18901             ,p_OLD_ATTRIBUTE22                    => l_instance_hist_rec.OLD_ATTRIBUTE22
18902             ,p_NEW_ATTRIBUTE22                    => l_instance_hist_rec.NEW_ATTRIBUTE22
18903             ,p_OLD_ATTRIBUTE23                    => l_instance_hist_rec.OLD_ATTRIBUTE23
18904             ,p_NEW_ATTRIBUTE23                    => l_instance_hist_rec.NEW_ATTRIBUTE23
18905             ,p_OLD_ATTRIBUTE24                    => l_instance_hist_rec.OLD_ATTRIBUTE24
18906             ,p_NEW_ATTRIBUTE24                    => l_instance_hist_rec.NEW_ATTRIBUTE24
18907             ,p_OLD_ATTRIBUTE25                    => l_instance_hist_rec.OLD_ATTRIBUTE25
18908             ,p_NEW_ATTRIBUTE25                    => l_instance_hist_rec.NEW_ATTRIBUTE25
18909             ,p_OLD_ATTRIBUTE26                    => l_instance_hist_rec.OLD_ATTRIBUTE26
18910             ,p_NEW_ATTRIBUTE26                    => l_instance_hist_rec.NEW_ATTRIBUTE26
18911             ,p_OLD_ATTRIBUTE27                    => l_instance_hist_rec.OLD_ATTRIBUTE27
18912             ,p_NEW_ATTRIBUTE27                    => l_instance_hist_rec.NEW_ATTRIBUTE27
18913             ,p_OLD_ATTRIBUTE28                    => l_instance_hist_rec.OLD_ATTRIBUTE28
18914             ,p_NEW_ATTRIBUTE28                    => l_instance_hist_rec.NEW_ATTRIBUTE28
18915             ,p_OLD_ATTRIBUTE29                    => l_instance_hist_rec.OLD_ATTRIBUTE29
18916             ,p_NEW_ATTRIBUTE29                    => l_instance_hist_rec.NEW_ATTRIBUTE29
18917             ,p_OLD_ATTRIBUTE30                    => l_instance_hist_rec.OLD_ATTRIBUTE30
18918             ,p_NEW_ATTRIBUTE30                    => l_instance_hist_rec.NEW_ATTRIBUTE30
18919   	    --end of parameters addition for eam integration--
18920    -- Addition of columns for FA Integration
18921             ,p_OLD_PAYABLES_UNIT_PRICE            => l_instance_hist_rec.OLD_PAYABLES_UNIT_PRICE
18922             ,p_NEW_PAYABLES_UNIT_PRICE            => l_instance_hist_rec.NEW_PAYABLES_UNIT_PRICE
18923             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_instance_hist_rec.OLD_PAYABLES_CURRENCY_CODE
18924             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_instance_hist_rec.NEW_PAYABLES_CURRENCY_CODE
18925             ,p_OLD_PURCHASE_UNIT_PRICE            => l_instance_hist_rec.OLD_PURCHASE_UNIT_PRICE
18926             ,p_NEW_PURCHASE_UNIT_PRICE            => l_instance_hist_rec.NEW_PURCHASE_UNIT_PRICE
18927             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_instance_hist_rec.OLD_PURCHASE_CURRENCY_CODE
18928             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_instance_hist_rec.NEW_PURCHASE_CURRENCY_CODE
18929             ,p_OLD_SALES_UNIT_PRICE               => l_instance_hist_rec.OLD_SALES_UNIT_PRICE
18930             ,p_NEW_SALES_UNIT_PRICE               => l_instance_hist_rec.NEW_SALES_UNIT_PRICE
18931             ,p_OLD_SALES_CURRENCY_CODE            => l_instance_hist_rec.OLD_SALES_CURRENCY_CODE
18932             ,p_NEW_SALES_CURRENCY_CODE            => l_instance_hist_rec.NEW_SALES_CURRENCY_CODE
18933             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_instance_hist_rec.OLD_OPERATIONAL_STATUS_CODE
18934             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_instance_hist_rec.NEW_OPERATIONAL_STATUS_CODE
18935     -- End addition of columns for FA Integration
18936             -- Begin Add Code for Siebel Genesis Project
18937             ,p_OLD_SOURCE_CODE                   => l_instance_hist_rec.OLD_SOURCE_CODE
18938             ,p_NEW_SOURCE_CODE                   => l_instance_hist_rec.NEW_SOURCE_CODE
18939             -- End Add Code for Siebel Genesis Project
18940             );
18941 
18942          END IF;
18943       END; -- END OF HISTORY
18944       -- End of modification for Bug#2547034 on 09/20/02 - rtalluri
18945       -- Calling eam API to log instance update event
18946        IF l_eam_item
18947        THEN
18948           IF l_ins_hist_id IS NOT NULL
18949           THEN
18950              l_instance_history_id:=l_ins_hist_id;
18951           ELSE
18952              l_instance_history_id:=l_csi_item_instance_h_id;
18953           END IF;
18954           eam_asset_log_pvt.instance_update_event
18955           (p_api_version         => p_api_version
18956           ,p_init_msg_list       => fnd_api.g_false
18957           ,p_commit              => fnd_api.g_false
18958           ,p_validation_level    => fnd_api.g_valid_level_full
18959           ,x_return_status       => x_return_status
18960           ,x_msg_count           => x_msg_count
18961           ,x_msg_data            => x_msg_data
18962           ,p_instance_id         => p_instance_rec.instance_id
18963           ,p_ref_id              => l_instance_history_id
18964           ,p_event_date          => sysdate);
18965          IF NOT(x_return_status = fnd_api.g_ret_sts_success)
18966          THEN
18967             csi_gen_utility_pvt.put_line('Error from eam_asset_log_pvt.instance_update_event API');
18968             RAISE fnd_api.g_exc_error;
18969          END IF;
18970        END IF;
18971       -- Calling eam API to log instance update event
18972 -- Check for any child instances in the csi ii relationships table by passing the parent instance id. If there exists
18973 -- any child instances then inherit the changed attributes with the changes in parent.
18974 
18975         IF  l_curr_instance_rec.active_end_date IS NULL
18976         THEN l_curr_instance_rec.active_end_date:=FND_API.G_MISS_DATE;
18977         END IF;
18978 
18979         IF  l_curr_instance_rec.location_type_code IS NULL
18980         THEN l_curr_instance_rec.location_type_code:=FND_API.G_MISS_CHAR;
18981         END IF;
18982 
18983         IF  l_curr_instance_rec.location_id IS NULL
18984         THEN l_curr_instance_rec.location_id:=FND_API.G_MISS_NUM;
18985         END IF;
18986 
18987         IF  l_curr_instance_rec.inv_organization_id IS NULL
18988         THEN l_curr_instance_rec.inv_organization_id:=FND_API.G_MISS_NUM;
18989         END IF;
18990 
18991         IF  l_curr_instance_rec.inv_subinventory_name IS NULL
18992         THEN l_curr_instance_rec.inv_subinventory_name:=FND_API.G_MISS_CHAR;
18993         END IF;
18994 
18995         IF  l_curr_instance_rec.inv_locator_id IS NULL
18996         THEN l_curr_instance_rec.inv_locator_id:=FND_API.G_MISS_NUM;
18997         END IF;
18998 
18999         IF l_curr_instance_rec.pa_project_id IS NULL
19000         THEN l_curr_instance_rec.pa_project_id:=FND_API.G_MISS_NUM;
19001         END IF;
19002 
19003         IF  l_curr_instance_rec.pa_project_task_id IS NULL
19004         THEN l_curr_instance_rec.pa_project_task_id:=FND_API.G_MISS_NUM;
19005         END IF;
19006 
19007         IF  l_curr_instance_rec.in_transit_order_line_id IS NULL
19008         THEN l_curr_instance_rec.in_transit_order_line_id:=FND_API.G_MISS_NUM;
19009         END IF;
19010 
19011         IF l_curr_instance_rec.wip_job_id IS NULL
19012         THEN l_curr_instance_rec.wip_job_id:=FND_API.G_MISS_NUM;
19013         END IF;
19014 
19015         IF  l_curr_instance_rec.po_order_line_id IS NULL
19016         THEN l_curr_instance_rec.po_order_line_id:=FND_API.G_MISS_NUM;
19017         END IF;
19018 
19019         IF  l_curr_instance_rec.install_location_type_code IS NULL --1st change
19020         THEN l_curr_instance_rec.install_location_type_code:=FND_API.G_MISS_CHAR;
19021         END IF;
19022 
19023         IF  l_curr_instance_rec.install_location_id IS NULL
19024         THEN l_curr_instance_rec.install_location_id:=FND_API.G_MISS_NUM;
19025         END IF;
19026         --
19027         -- srramakr Need to inherit Install_date to the children
19028         -- If any of the location attributes or active_end_date are changing for an instance, then check are there
19029         -- any children associated to this instance. If there exists any, then change the location attributes for child instances
19030         IF (    p_instance_rec.active_end_date IS NOT NULL
19031             AND p_instance_rec.active_end_date           <>l_curr_instance_rec.active_end_date
19032             AND p_instance_rec.active_end_date           <>FND_API.G_MISS_DATE
19033             )
19034             OR
19035            (    p_instance_rec.active_end_date IS NULL AND
19036                 nvl(p_instance_rec.active_end_date,fnd_api.g_miss_date) <> l_curr_instance_rec.active_end_date
19037            )
19038            OR
19039            (     p_instance_rec.system_id IS NOT NULL
19040              AND p_instance_rec.system_id <> FND_API.G_MISS_NUM
19041              AND p_instance_rec.system_id <> nvl(l_curr_instance_rec.system_id,FND_API.G_MISS_NUM)
19042            )
19043            OR
19044            (    p_instance_rec.system_id IS NULL
19045             AND l_curr_instance_rec.system_id IS NOT NULL
19046            )
19047            OR
19048            (    p_instance_rec.location_type_code IS NOT NULL
19049             AND p_instance_rec.location_type_code        <>FND_API.G_MISS_CHAR
19050             AND p_instance_rec.location_type_code        <>l_curr_instance_rec.location_type_code
19051             )
19052            OR
19053            (    p_instance_rec.location_id IS NOT NULL
19054             AND p_instance_rec.location_id               <>FND_API.G_MISS_NUM
19055             AND p_instance_rec.location_id               <>l_curr_instance_rec.location_id
19056             )
19057            OR
19058            (    p_instance_rec.inv_organization_id IS NOT NULL
19059             AND p_instance_rec.inv_organization_id       <>FND_API.G_MISS_NUM
19060             AND p_instance_rec.inv_organization_id       <>l_curr_instance_rec.inv_organization_id
19061             )
19062            OR
19063            (    p_instance_rec.inv_subinventory_name IS NOT NULL
19064             AND p_instance_rec.inv_subinventory_name     <>FND_API.G_MISS_CHAR
19065             AND p_instance_rec.inv_subinventory_name     <>l_curr_instance_rec.inv_subinventory_name
19066             )
19067            OR
19068            (    p_instance_rec.inv_locator_id IS NOT NULL
19069             AND p_instance_rec.inv_locator_id            <>FND_API.G_MISS_NUM
19070             AND p_instance_rec.inv_locator_id            <>l_curr_instance_rec.inv_locator_id
19071             )
19072            OR
19073            (    p_instance_rec.pa_project_id IS NOT NULL
19074             AND p_instance_rec.pa_project_id             <>FND_API.G_MISS_NUM
19075             AND p_instance_rec.pa_project_id             <>l_curr_instance_rec.pa_project_id
19076             )
19077            OR
19078            (    p_instance_rec.pa_project_task_id IS NOT NULL
19079             AND p_instance_rec.pa_project_task_id        <>FND_API.G_MISS_NUM
19080             AND p_instance_rec.pa_project_task_id        <>l_curr_instance_rec.pa_project_task_id
19081             )
19082            OR
19083            (    p_instance_rec.in_transit_order_line_id IS NOT NULL
19084             AND p_instance_rec.in_transit_order_line_id  <>FND_API.G_MISS_NUM
19085             AND p_instance_rec.in_transit_order_line_id  <>l_curr_instance_rec.in_transit_order_line_id
19086             )
19087            OR
19088            (    p_instance_rec.wip_job_id IS NOT NULL
19089             AND p_instance_rec.wip_job_id                <>FND_API.G_MISS_NUM
19090             AND p_instance_rec.wip_job_id                <>l_curr_instance_rec.wip_job_id
19091             )
19092            OR
19093            (    p_instance_rec.po_order_line_id IS NOT NULL
19094             AND p_instance_rec.po_order_line_id          <>FND_API.G_MISS_NUM
19095             AND p_instance_rec.po_order_line_id          <>l_curr_instance_rec.po_order_line_id
19096             )
19097            OR
19098            (    p_instance_rec.install_location_type_code IS NOT NULL
19099             AND p_instance_rec.install_location_type_code <>FND_API.G_MISS_CHAR
19100             AND p_instance_rec.install_location_type_code <>l_curr_instance_rec.install_location_type_code
19101             )
19102            OR
19103            (    p_instance_rec.install_location_id IS NOT NULL
19104             AND p_instance_rec.install_location_id    <>FND_API.G_MISS_NUM
19105             AND p_instance_rec.install_location_id    <>l_curr_instance_rec.install_location_id
19106             )
19107            OR
19108            (    p_instance_rec.install_location_id IS NULL AND
19109                 nvl(p_instance_rec.install_location_id,fnd_api.g_miss_num) <> l_curr_instance_rec.install_location_id AND
19110                 p_instance_rec.install_location_type_code IS NULL AND
19111                 nvl(p_instance_rec.install_location_type_code,fnd_api.g_miss_char) <> l_curr_instance_rec.install_location_type_code
19112            )
19113            OR
19114            (    p_instance_rec.instance_status_id IS NOT NULL
19115             AND p_instance_rec.instance_status_id     <>FND_API.G_MISS_NUM
19116             AND p_instance_rec.instance_status_id     <>l_curr_instance_rec.instance_status_id
19117             )
19118            OR
19119            (    (p_instance_rec.install_date IS NULL AND l_curr_instance_rec.install_date IS NOT NULL) OR
19120                 (p_instance_rec.install_date IS NOT NULL AND
19121                  p_instance_rec.install_date <> FND_API.G_MISS_DATE AND
19122                  nvl(l_curr_instance_rec.install_date,FND_API.G_MISS_DATE) <> p_instance_rec.install_date)
19123            )
19124            OR
19125            (    p_instance_rec.operational_status_code IS NOT NULL
19126             AND p_instance_rec.operational_status_code <> FND_API.G_MISS_CHAR
19127             AND p_instance_rec.operational_status_code <> NVL(l_curr_instance_rec.operational_status_code,'$$##$$')
19128             )
19129         THEN
19130        -- Added for bug 2957236
19131             IF  p_instance_rec.instance_status_id IS NOT NULL
19132             AND p_instance_rec.instance_status_id     <>FND_API.G_MISS_NUM
19133             AND p_instance_rec.instance_status_id     <>l_curr_instance_rec.instance_status_id
19134             THEN
19135               l_original_status_id:=l_curr_instance_rec.instance_status_id;
19136             ELSE
19137               l_original_status_id:=fnd_api.g_miss_num;
19138             END IF;
19139        -- End addition for bug 2957236
19140            --
19141            l_unexpire := FND_API.G_FALSE;
19142            IF l_curr_instance_rec.active_end_date <> FND_API.G_MISS_DATE AND
19143               l_curr_instance_rec.active_end_date <= sysdate THEN
19144               IF ((p_instance_rec.active_end_date IS NULL) OR
19145                   (p_instance_rec.active_end_date IS NOT NULL AND p_instance_rec.active_end_date <> FND_API.G_MISS_DATE AND
19146                     p_instance_rec.active_end_date > sysdate)) THEN
19147                  l_unexpire := FND_API.G_TRUE;
19148               END IF;
19149            END IF;
19150            -- System_id cascade
19151            l_original_system_id := fnd_api.g_miss_num;
19152            IF p_instance_rec.system_id IS NOT NULL AND
19153               p_instance_rec.system_id <> FND_API.G_MISS_NUM AND
19154               p_instance_rec.system_id <> nvl(l_curr_instance_rec.system_id,-999) THEN
19155               l_original_system_id := l_curr_instance_rec.system_id;
19156            ELSIF p_instance_rec.system_id IS NULL AND
19157                  l_curr_instance_rec.system_id IS NOT NULL THEN
19158               l_original_system_id := l_curr_instance_rec.system_id;
19159            END IF;
19160            -- End of System_id cascade
19161            -- Install Date cascade
19162            l_install_date := fnd_api.g_miss_date;
19163            IF p_instance_rec.install_date IS NOT NULL AND
19164               p_instance_rec.install_date <> FND_API.G_MISS_DATE AND
19165               p_instance_rec.install_date <> nvl(l_curr_instance_rec.install_date,fnd_api.g_miss_date) THEN
19166               l_orig_install_date := l_curr_instance_rec.install_date;
19167            ELSIF p_instance_rec.install_date IS NULL AND
19168                  l_curr_instance_rec.install_date IS NOT NULL THEN
19169               l_orig_install_date := l_curr_instance_rec.install_date;
19170            END IF;
19171            -- End of Install Date cascade
19172 
19173            update_child_instance_location(p_api_version         =>   p_api_version,
19174                                           p_commit              =>   p_commit,
19175                                           p_init_msg_list       =>   p_init_msg_list,
19176                                           p_validation_level    =>   p_validation_level,
19177                                           p_instance_rec        =>   p_instance_rec,
19178                                           p_original_status_id  =>   l_original_status_id,
19179                                           p_original_system_id  =>   l_original_system_id,
19180                                           p_txn_rec             =>   p_txn_rec,
19181                                           x_instance_id_lst     =>   x_instance_id_lst,
19182                                           p_unexpire            =>   l_unexpire,
19183                                           p_oks_txn_inst_tbl    =>   p_oks_txn_inst_tbl,
19184                                           p_child_inst_tbl      =>   p_child_inst_tbl,
19185                                           p_orig_install_date   =>   l_orig_install_date,
19186                                           x_return_status       =>   x_return_status,
19187                                           x_msg_count           =>   x_msg_count,
19188                                           x_msg_data            =>   x_msg_data
19189                                           );
19190             --
19191             --
19192             IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
19193                csi_gen_utility_pvt.put_line('Error from UPDATE_CHILD_INSTANCE_LOCATION..');
19194                RAISE FND_API.G_EXC_ERROR;
19195             END IF;
19196 
19197            --Moved the code to expire the relationships here for bug 10196982
19198            --Expiring the relationships after expiring the child instances
19199           IF (l_get_instance_rec.active_end_date <= l_sys_date) THEN
19200            -- Added code to expire relationship where the instance expired is the child, bug 8516781, FP bug 8551918
19201              csi_gen_utility_pvt.put_line('Expiring relationship for the instance id - ' || p_instance_rec.instance_id);
19202              FOR l_inst_relationship_rec in relationship_csr(p_instance_rec.instance_id)
19203              LOOP
19204                BEGIN
19205                  csi_gen_utility_pvt.put_line('Expiring relationship with id - ' || l_inst_relationship_rec.relationship_id);
19206                  l_exp_rltns_rec.relationship_id := l_inst_relationship_rec.relationship_id;
19207                  l_exp_rltns_rec.object_version_number := l_inst_relationship_rec.object_version_number;
19208 
19209                  csi_t_gen_utility_pvt.dump_api_info(
19210                    p_pkg_name => 'csi_ii_relationships_pub',
19211                    p_api_name => 'expire_relationship');
19212 
19213                  csi_ii_relationships_pub.expire_relationship(
19214                      p_api_version               => 1.0,
19215                      p_commit                    => fnd_api.g_false,
19216                      p_init_msg_list             => fnd_api.g_false,
19217                      p_validation_level          => fnd_api.g_valid_level_full,
19218                      p_relationship_rec          => l_exp_rltns_rec,
19219                      p_txn_rec                   => p_txn_rec,
19220                      x_instance_id_lst           => l_instance_id_lst,
19221                      x_return_status             => l_return_status,
19222                      x_msg_count                 => l_msg_count,
19223                      x_msg_data                  => l_msg_data);
19224 
19225                  IF l_return_status <> fnd_api.g_ret_sts_success THEN
19226                    RAISE fnd_api.g_exc_error;
19227                  END IF;
19228                END;
19229              END LOOP;
19230 
19231              csi_gen_utility_pvt.put_line('End of expiring relationships for instance with id - ' || p_instance_rec.instance_id);
19232              -- End of addition for the bug 8516781, FP bug 8551918
19233           END IF;
19234        END IF;
19235        --
19236        --
19237        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19238             RAISE FND_API.G_EXC_ERROR;
19239        END IF;
19240 
19241        --FND_File.Put_Line(Fnd_File.LOG,'Return Status is' || x_return_status);
19242        IF nvl(p_txn_rec.transaction_status_code, fnd_api.g_miss_char) = fnd_api.g_miss_char THEN
19243 
19244          p_txn_rec.transaction_status_code := l_txn_status;
19245 
19246          update_txn_status(
19247            px_txn_rec       => p_txn_rec,
19248            x_return_status  => x_return_status);
19249 
19250          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19251            RAISE FND_API.G_EXC_ERROR;
19252          END IF;
19253 
19254        END IF;
19255 
19256        END IF;
19257 
19258       -- End of API body
19259 
19260       -- Standard check of p_commit.
19261       IF FND_API.To_Boolean( p_commit ) THEN
19262             COMMIT WORK;
19263       END IF;
19264 
19265       -- Standard call to get message count and if count is  get message info.
19266       FND_MSG_PUB.Count_And_Get
19267             (p_encoded => FND_API.G_FALSE,
19268                  p_count       =>       x_msg_count ,
19269              p_data       =>       x_msg_data
19270             );
19271 
19272 EXCEPTION
19273 
19274     WHEN FND_API.G_EXC_ERROR THEN
19275            IF FND_API.To_Boolean( p_commit )
19276            THEN
19277             ROLLBACK TO update_item_instance_pvt;
19278            END IF;
19279             x_return_status := FND_API.G_RET_STS_ERROR ;
19280             FND_MSG_PUB.Count_And_Get
19281                 (   p_encoded => FND_API.G_FALSE,
19282                  p_count               =>      x_msg_count,
19283                     p_data                =>      x_msg_data
19284                 );
19285 
19286       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
19287 
19288            IF FND_API.To_Boolean( p_commit )
19289            THEN
19290             ROLLBACK TO update_item_instance_pvt;
19291            END IF;
19292             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
19293             FND_MSG_PUB.Count_And_Get
19294                 (   p_encoded => FND_API.G_FALSE,
19295                  p_count               =>      x_msg_count,
19296                     p_data                =>      x_msg_data
19297                 );
19298       WHEN OTHERS THEN
19299            IF FND_API.To_Boolean( p_commit )
19300            THEN
19301             ROLLBACK TO update_item_instance_pvt;
19302            END IF;
19303             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
19304 
19305             IF     FND_MSG_PUB.Check_Msg_Level
19306                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
19307             THEN
19308                     FND_MSG_PUB.Add_Exc_Msg
19309                     (      G_PKG_NAME            ,
19310                           l_api_name
19311                     );
19312             END IF;
19313             FND_MSG_PUB.Count_And_Get
19314                 (   p_encoded => FND_API.G_FALSE,
19315                  p_count               =>      x_msg_count,
19316                     p_data                =>      x_msg_data
19317                 );
19318 
19319 END Update_Item_Instance;
19320 
19321 /*---------------------------------------------------*/
19322 /* Procedure name: expire_child_instances            */
19323 /* Description   : procedure for                     */
19324 /*                 Expiring all child Instance       */
19325 /*                 associated with the parent        */
19326 /*---------------------------------------------------*/
19327 
19328 PROCEDURE expire_child_instances
19329    (   p_api_version         IN     NUMBER,
19330        p_commit              IN     VARCHAR2,
19331        p_init_msg_list       IN     VARCHAR2,
19332        p_validation_level    IN     NUMBER,
19333        p_instance_rec        IN     csi_datastructures_pub.instance_rec,
19334        p_expire_children     IN     VARCHAR2,
19335        p_txn_rec             IN OUT NOCOPY csi_datastructures_pub.transaction_rec,
19336        x_instance_id_lst     OUT    NOCOPY csi_datastructures_pub.id_tbl,
19337        p_oks_txn_inst_tbl    IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl,
19338        x_return_status       OUT    NOCOPY VARCHAR2,
19339        x_msg_count           OUT    NOCOPY NUMBER,
19340        x_msg_data            OUT    NOCOPY VARCHAR2
19341    ) IS
19342     l_api_name               CONSTANT VARCHAR2(30)   := 'EXPIRE_CHILD_INSTANCE_PVT';
19343     l_api_version            CONSTANT NUMBER         := 1.0;
19344     l_debug_level            NUMBER;
19345     l_instance_id            NUMBER;
19346     l_dummy                  NUMBER;
19347     l_instance_rec           csi_datastructures_pub.instance_rec:=p_instance_rec;
19348     l_object_version_number  NUMBER;
19349     l_return_value           BOOLEAN;
19350     l_csi_item_instance_h_id NUMBER;
19351     l_full_dump_frequency    NUMBER;
19352     l_mod_value              NUMBER;
19353     l_dump_flag              VARCHAR2(1);
19354     l_rel_tbl                csi_datastructures_pub.ii_relationship_tbl;
19355     p_rel_query_rec          csi_datastructures_pub.relationship_query_rec;
19356     l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
19357 
19358 CURSOR curr_instance_rec(p_instance_id IN NUMBER)  IS
19359            SELECT
19360                  INSTANCE_ID,
19361                  INSTANCE_NUMBER,
19362                  EXTERNAL_REFERENCE,
19363                  INVENTORY_ITEM_ID,
19364                  NULL VLD_ORGANIZATION_ID,
19365                  INVENTORY_REVISION,
19366                  INV_MASTER_ORGANIZATION_ID,
19367                  SERIAL_NUMBER,
19368                  MFG_SERIAL_NUMBER_FLAG,
19369                  LOT_NUMBER,
19370                  QUANTITY,
19371                  UNIT_OF_MEASURE,
19372                  ACCOUNTING_CLASS_CODE,
19373                  INSTANCE_CONDITION_ID,
19374                  INSTANCE_STATUS_ID,
19375                  CUSTOMER_VIEW_FLAG,
19376                  MERCHANT_VIEW_FLAG,
19377                  SELLABLE_FLAG,
19378                  SYSTEM_ID,
19379                  INSTANCE_TYPE_CODE,
19380                  ACTIVE_START_DATE,
19381                  ACTIVE_END_DATE,
19382                  LOCATION_TYPE_CODE,
19383                  LOCATION_ID,
19384                  INV_ORGANIZATION_ID,
19385                  INV_SUBINVENTORY_NAME,
19386                  INV_LOCATOR_ID,
19387                  PA_PROJECT_ID,
19388                  PA_PROJECT_TASK_ID,
19389                  IN_TRANSIT_ORDER_LINE_ID,
19390                  WIP_JOB_ID,
19391                  PO_ORDER_LINE_ID,
19392                  LAST_OE_ORDER_LINE_ID,
19393                  LAST_OE_RMA_LINE_ID,
19394                  LAST_PO_PO_LINE_ID,
19395                  LAST_OE_PO_NUMBER,
19396                  LAST_WIP_JOB_ID,
19397                  LAST_PA_PROJECT_ID,
19398                  LAST_PA_TASK_ID,
19399                  LAST_OE_AGREEMENT_ID,
19400                  INSTALL_DATE,
19401                  MANUALLY_CREATED_FLAG,
19402                  RETURN_BY_DATE,
19403                  ACTUAL_RETURN_DATE,
19404                  CREATION_COMPLETE_FLAG,
19405                  COMPLETENESS_FLAG,
19406                  NULL VERSION_LABEL,
19407                  NULL VERSION_LABEL_DESCRIPTION,
19408                  CONTEXT,
19409                  ATTRIBUTE1,
19410                  ATTRIBUTE2,
19411                  ATTRIBUTE3,
19412                  ATTRIBUTE4,
19413                  ATTRIBUTE5,
19414                  ATTRIBUTE6,
19415                  ATTRIBUTE7,
19416                  ATTRIBUTE8,
19417                  ATTRIBUTE9,
19418                  ATTRIBUTE10,
19419                  ATTRIBUTE11,
19420                  ATTRIBUTE12,
19421                  ATTRIBUTE13,
19422                  ATTRIBUTE14,
19423                  ATTRIBUTE15,
19424                  OBJECT_VERSION_NUMBER,
19425                  LAST_TXN_LINE_DETAIL_ID,
19426                  INSTALL_LOCATION_TYPE_CODE,
19427                  INSTALL_LOCATION_ID,
19428                  INSTANCE_USAGE_CODE,
19429                  CONFIG_INST_REV_NUM,
19430                  CONFIG_VALID_STATUS,
19431                  INSTANCE_DESCRIPTION,
19432 		 --start of column addition for eam integration--
19433 		 NETWORK_ASSET_FLAG,
19434 		 MAINTAINABLE_FLAG,
19435 		 PN_LOCATION_ID,
19436 		 ASSET_CRITICALITY_CODE,
19437 		 CATEGORY_ID,
19438 		 EQUIPMENT_GEN_OBJECT_ID,
19439 		 INSTANTIATION_FLAG,
19440 		 LINEAR_LOCATION_ID,
19441 		 OPERATIONAL_LOG_FLAG,
19442 		 CHECKIN_STATUS,
19443 		 SUPPLIER_WARRANTY_EXP_DATE,
19444 		 ATTRIBUTE16,
19445 		 ATTRIBUTE17,
19446 		 ATTRIBUTE18,
19447 		 ATTRIBUTE19,
19448 		 ATTRIBUTE20,
19449 		 ATTRIBUTE21,
19450 		 ATTRIBUTE22,
19451 		 ATTRIBUTE23,
19452 		 ATTRIBUTE24,
19453 		 ATTRIBUTE25,
19454 		 ATTRIBUTE26,
19455 		 ATTRIBUTE27,
19456 		 ATTRIBUTE28,
19457 		 ATTRIBUTE29,
19458 		 ATTRIBUTE30,
19459 		 --end of column addition for eam integration--
19460                -- Addition of columns for FA Integration
19461                  PURCHASE_UNIT_PRICE,
19462                  PURCHASE_CURRENCY_CODE,
19463                  PAYABLES_UNIT_PRICE,
19464                  PAYABLES_CURRENCY_CODE,
19465                  SALES_UNIT_PRICE,
19466                  SALES_CURRENCY_CODE,
19467                  OPERATIONAL_STATUS_CODE,
19468                -- End addition of columns for FA Integration
19469                  SOURCE_CODE -- Added Code for Siebel Genesis Project
19470            FROM  csi_item_instances
19471            WHERE instance_id = p_instance_id
19472            FOR UPDATE OF OBJECT_VERSION_NUMBER ;
19473 
19474 CURSOR instance_csr (p_ins_id IN NUMBER) IS
19475       SELECT  *
19476       FROM    csi_item_instances
19477       WHERE   instance_id = p_ins_id;
19478 
19479 l_curr_instance_rec     curr_instance_rec%ROWTYPE;
19480 l_instance_csr             instance_csr%ROWTYPE;
19481 l_temp                     VARCHAR2(1);
19482 l_temp_date                DATE;
19483 l_msg_count                NUMBER;
19484 l_msg_index                NUMBER;
19485 l_msg_dummy                NUMBER;
19486 l_oks_txn_type             VARCHAR2(3);
19487 l_eam_item                 BOOLEAN := FALSE;
19488 l_vld_org                  NUMBER;
19489 l_maintenance_object_type  NUMBER := 3;
19490 l_ins_hist_id              NUMBER;
19491 l_instance_history_id      NUMBER;
19492 l_valid                    BOOLEAN     := TRUE;
19493 l_creation_flag            VARCHAR2(1);
19494 BEGIN
19495       -- Standard Start of API savepoint
19496         SAVEPOINT   expire_child_instance_pvt;
19497 
19498       -- Standard call to check for call compatibility.
19499         IF NOT FND_API.Compatible_API_Call (l_api_version,
19500                                             p_api_version,
19501                                             l_api_name,
19502                                             G_PKG_NAME   )
19503         THEN
19504               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
19505         END IF;
19506 
19507       -- Initialize message list if p_init_msg_list is set to TRUE.
19508         IF FND_API.to_Boolean( p_init_msg_list ) THEN
19509               FND_MSG_PUB.initialize;
19510         END IF;
19511 
19512       --  Initialize API return status to success
19513         x_return_status := FND_API.G_RET_STS_SUCCESS;
19514 
19515         -- Check the profile option debug_level for debug message reporting
19516         l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
19517 
19518         -- If debug_level = 1 then dump the procedure name
19519         IF (l_debug_level > 0) THEN
19520             csi_gen_utility_pvt.put_line ( 'expire_child_instance_pvt');
19521         END IF;
19522 
19523         -- If the debug level = 2 then dump all the parameters values.
19524         IF (l_debug_level >1) THEN
19525             csi_gen_utility_pvt.put_line ( 'expire_child_instance_pvt :'||
19526                                             p_api_version          ||'-'||
19527                                             p_commit               ||'-'||
19528                                             p_init_msg_list        );
19529         END IF;
19530 
19531        -- Start API body
19532        p_rel_query_rec.object_id := p_instance_rec.instance_id;
19533        p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
19534        --
19535       IF p_rel_query_rec.object_id IS NOT NULL AND
19536          p_rel_query_rec.object_id <> FND_API.G_MISS_NUM THEN
19537          csi_ii_relationships_pvt.Get_Children
19538           ( p_relationship_query_rec   => p_rel_query_rec,
19539             p_rel_tbl                  => l_rel_tbl,
19540             p_depth                    => NULL,
19541             p_active_relationship_only => FND_API.G_TRUE,
19542             p_time_stamp               => FND_API.G_MISS_DATE,
19543             p_get_dfs                  => FND_API.G_FALSE,
19544             p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
19545             x_return_status            => x_return_status,
19546             x_msg_count                => x_msg_count,
19547             x_msg_data                 => x_msg_data
19548           );
19549          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
19550             FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
19551             FND_MSG_PUB.Add;
19552             RAISE FND_API.G_EXC_ERROR;
19553          END IF;
19554       END IF;
19555        --
19556        -- FOR l_child_instance_id IN child_instances
19557        csi_gen_utility_pvt.put_line('Child 2 count is '||to_char(l_rel_tbl.count));
19558        IF l_rel_tbl.count > 0 THEN
19559           FOR j IN l_rel_tbl.FIRST .. l_rel_tbl.LAST
19560           LOOP
19561               -- Opening Cursor to retrieve Child Id records Details
19562 
19563                     OPEN curr_instance_rec(l_rel_tbl(j).subject_id);
19564                          FETCH curr_instance_rec INTO l_curr_instance_rec;
19565                                IF curr_instance_rec%NOTFOUND THEN
19566                                        FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
19567                                        FND_MSG_PUB.ADD;
19568                                        RAISE FND_API.G_EXC_ERROR;
19569                                END IF;
19570                    CLOSE curr_instance_rec;
19571 
19572 --  Added by sk for bug 2151760
19573      IF (( p_instance_rec.active_end_date IS NOT NULL) AND (p_instance_rec.active_end_date < SYSDATE))
19574       AND p_instance_rec.active_end_date <> fnd_api.g_miss_date
19575      THEN
19576        l_temp_date:= p_instance_rec.active_end_date;
19577        BEGIN
19578         SELECT 'x'
19579         INTO   l_temp
19580         FROM   csi_inst_transactions_v
19581         WHERE  instance_id=l_curr_instance_rec.instance_id
19582         AND    transaction_date>p_instance_rec.active_end_date
19583         AND    ROWNUM=1;
19584 
19585         IF l_temp IS NOT NULL
19586         THEN
19587            x_return_status := FND_API.G_RET_STS_ERROR ;
19588            FND_MESSAGE.Set_Name('CSI', 'CSI_CHILD_HAS_TXN');
19589            FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_curr_instance_rec.instance_number);
19590            FND_MSG_PUB.ADD;
19591            RAISE FND_API.G_EXC_ERROR;
19592         END IF;
19593        EXCEPTION
19594          WHEN FND_API.G_EXC_ERROR THEN
19595               RAISE FND_API.G_EXC_ERROR;
19596          WHEN OTHERS THEN
19597            NULL;
19598        END;
19599      ELSE
19600        l_temp_date:=SYSDATE;
19601      END IF;
19602 -- End addition by sk for bug 2151760
19603        l_instance_rec.object_version_number := l_curr_instance_rec.object_version_number + 1;
19604       -- l_instance_rec.instance_status_id    := 1;
19605 
19606      -- Added by sguthiva for bug 2520978
19607      -- Modified by srramakr for enhancement 2315522.
19608      -- This will allow the user to pass a Terminable status during expiration.
19609      IF p_instance_rec.instance_status_id IS NOT NULL AND
19610         p_instance_rec.instance_status_id <> fnd_api.g_miss_num THEN
19611         IF NOT (CSI_Item_Instance_vld_pvt.val_inst_ter_flag(
19612                                             p_instance_rec.instance_status_id)) THEN
19613            FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_TERM_STATUS');
19614            FND_MSG_PUB.ADD;
19615            RAISE FND_API.G_EXC_ERROR;
19616         END IF;
19617         l_instance_rec.instance_status_id := p_instance_rec.instance_status_id;
19618      ELSE
19619         l_instance_rec.instance_status_id := fnd_profile.value('CSI_SYS_TERM_INST_STATUS_ID');
19620         IF  l_instance_rec.instance_status_id IS NULL
19621         OR l_instance_rec.instance_status_id=fnd_api.g_miss_num
19622         THEN
19623            l_instance_rec.instance_status_id := 1;
19624         END IF;
19625      END IF;
19626      -- End addition by sguthiva for bug 2520978.
19627 
19628         -- Added the following code for eam integration
19629            IF p_instance_rec.vld_organization_id IS NULL OR
19630               p_instance_rec.vld_organization_id = fnd_api.g_miss_num
19631            THEN
19632              BEGIN
19633               SELECT last_vld_organization_id
19634                 INTO l_vld_org
19635                 FROM csi_item_instances
19636                WHERE instance_id = p_instance_rec.instance_id;
19637              EXCEPTION
19638                WHEN NO_DATA_FOUND THEN
19639                 fnd_message.set_name('CSI','CSI_API_INVALID_INSTANCE_ID');
19640                 fnd_message.set_token('INSTANCE_ID',p_instance_rec.instance_id);
19641                 fnd_msg_pub.ADD;
19642              END;
19643            ELSE
19644              l_vld_org := p_instance_rec.vld_organization_id;
19645            END IF;
19646 
19647            IF csi_item_instance_vld_pvt.Check_for_eam_item
19648               (p_inventory_item_id  => l_curr_instance_rec.inventory_item_id,
19649                p_organization_id    => l_vld_org)
19650            THEN
19651              l_eam_item := TRUE;
19652            END IF;
19653 
19654            IF l_eam_item AND
19655              (l_temp_date IS NOT NULL AND
19656               l_temp_date <> fnd_api.g_miss_date)
19657            THEN
19658             IF NOT eam_common_utilities_pvt.check_deactivate
19659               (p_maintenance_object_id   => p_instance_rec.instance_id
19660               ,p_maintenance_object_type => l_maintenance_object_type)
19661             THEN
19662               csi_gen_utility_pvt.put_line('Error from eam_common_utilities_pvt.check_deactivate API ');
19663               RAISE fnd_api.g_exc_error;
19664             END IF;
19665            END IF;
19666         -- End code addition for eam integration
19667     -- validate instance status id
19668        IF NVL(l_instance_rec.instance_status_id,fnd_api.g_miss_num) <> fnd_api.g_miss_num
19669        THEN
19670          csi_item_instance_vld_pvt.is_valid_status(
19671            p_instance_status_id     => l_instance_rec.instance_status_id,
19672            p_creation_complete_flag => l_creation_flag,
19673            l_return_value           => l_valid);
19674           IF NOT(l_valid)
19675           THEN
19676              RAISE fnd_api.g_exc_error;
19677           END IF;
19678         END IF;
19679 
19680         IF l_instance_rec.instance_status_id IS NOT NULL AND
19681            l_instance_rec.instance_status_id <> FND_API.G_MISS_NUM AND
19682            l_instance_rec.instance_status_id <> l_curr_instance_rec.instance_status_id
19683         THEN
19684            IF NOT csi_item_instance_vld_pvt.is_status_updateable
19685                   (p_instance_status => l_instance_rec.instance_status_id
19686                   ,p_current_status  => l_curr_instance_rec.instance_status_id)
19687            THEN
19688              RAISE fnd_api.g_exc_error;
19689            END IF;
19690         END IF;
19691 
19692        CSI_ITEM_INSTANCES_PKG.Update_Row
19693        (  p_INSTANCE_ID                 => l_rel_tbl(j).subject_id,
19694           p_INSTANCE_NUMBER             => FND_API.G_MISS_CHAR,
19695           p_EXTERNAL_REFERENCE          => FND_API.G_MISS_CHAR,
19696           p_INVENTORY_ITEM_ID           => FND_API.G_MISS_NUM,
19697           p_INVENTORY_REVISION          => FND_API.G_MISS_CHAR,
19698           p_INV_MASTER_ORGANIZATION_ID  => FND_API.G_MISS_NUM,
19699           p_SERIAL_NUMBER               => FND_API.G_MISS_CHAR,
19700           p_MFG_SERIAL_NUMBER_FLAG      => FND_API.G_MISS_CHAR,
19701           p_LOT_NUMBER                  => FND_API.G_MISS_CHAR,
19702           p_QUANTITY                    => FND_API.G_MISS_NUM,
19703           p_UNIT_OF_MEASURE             => FND_API.G_MISS_CHAR,
19704           p_ACCOUNTING_CLASS_CODE       => FND_API.G_MISS_CHAR,
19705           p_INSTANCE_CONDITION_ID       => FND_API.G_MISS_NUM,
19706           p_INSTANCE_STATUS_ID          => l_instance_rec.instance_status_id,
19707           p_CUSTOMER_VIEW_FLAG          => FND_API.G_MISS_CHAR,
19708           p_MERCHANT_VIEW_FLAG          => FND_API.G_MISS_CHAR,
19709           p_SELLABLE_FLAG               => FND_API.G_MISS_CHAR,
19710           p_SYSTEM_ID                   => FND_API.G_MISS_NUM,
19711           p_INSTANCE_TYPE_CODE          => FND_API.G_MISS_CHAR,
19712           p_ACTIVE_START_DATE           => FND_API.G_MISS_DATE,
19713           p_ACTIVE_END_DATE             => l_temp_date,--SYSDATE, --p_instance_rec.active_end_date,
19714           p_LOCATION_TYPE_CODE          => FND_API.G_MISS_CHAR,
19715           p_LOCATION_ID                 => FND_API.G_MISS_NUM,
19716           p_INV_ORGANIZATION_ID         => FND_API.G_MISS_NUM,
19717           p_INV_SUBINVENTORY_NAME       => FND_API.G_MISS_CHAR,
19718           p_INV_LOCATOR_ID              => FND_API.G_MISS_NUM,
19719           p_PA_PROJECT_ID               => FND_API.G_MISS_NUM,
19720           p_PA_PROJECT_TASK_ID          => FND_API.G_MISS_NUM,
19721           p_IN_TRANSIT_ORDER_LINE_ID    => FND_API.G_MISS_NUM,
19722           p_WIP_JOB_ID                  => FND_API.G_MISS_NUM,
19723           p_PO_ORDER_LINE_ID            => FND_API.G_MISS_NUM,
19724           p_LAST_OE_ORDER_LINE_ID       => FND_API.G_MISS_NUM,
19725           p_LAST_OE_RMA_LINE_ID         => FND_API.G_MISS_NUM,
19726           p_LAST_PO_PO_LINE_ID          => FND_API.G_MISS_NUM,
19727           p_LAST_OE_PO_NUMBER           => FND_API.G_MISS_CHAR,
19728           p_LAST_WIP_JOB_ID             => FND_API.G_MISS_NUM,
19729           p_LAST_PA_PROJECT_ID          => FND_API.G_MISS_NUM,
19730           p_LAST_PA_TASK_ID             => FND_API.G_MISS_NUM,
19731           p_LAST_OE_AGREEMENT_ID        => FND_API.G_MISS_NUM,
19732           p_INSTALL_DATE                => FND_API.G_MISS_DATE,
19733           p_MANUALLY_CREATED_FLAG       => FND_API.G_MISS_CHAR,
19734           p_RETURN_BY_DATE              => FND_API.G_MISS_DATE,
19735           p_ACTUAL_RETURN_DATE          => FND_API.G_MISS_DATE,
19736           p_CREATION_COMPLETE_FLAG      => FND_API.G_MISS_CHAR,
19737           p_COMPLETENESS_FLAG           => FND_API.G_MISS_CHAR,
19738           p_CONTEXT                     => FND_API.G_MISS_CHAR,
19739           p_ATTRIBUTE1                  => FND_API.G_MISS_CHAR,
19740           p_ATTRIBUTE2                  => FND_API.G_MISS_CHAR,
19741           p_ATTRIBUTE3                  => FND_API.G_MISS_CHAR,
19742           p_ATTRIBUTE4                  => FND_API.G_MISS_CHAR,
19743           p_ATTRIBUTE5                  => FND_API.G_MISS_CHAR,
19744           p_ATTRIBUTE6                  => FND_API.G_MISS_CHAR,
19745           p_ATTRIBUTE7                  => FND_API.G_MISS_CHAR,
19746           p_ATTRIBUTE8                  => FND_API.G_MISS_CHAR,
19747           p_ATTRIBUTE9                  => FND_API.G_MISS_CHAR,
19748           p_ATTRIBUTE10                 => FND_API.G_MISS_CHAR,
19749           p_ATTRIBUTE11                 => FND_API.G_MISS_CHAR,
19750           p_ATTRIBUTE12                 => FND_API.G_MISS_CHAR,
19751           p_ATTRIBUTE13                 => FND_API.G_MISS_CHAR,
19752           p_ATTRIBUTE14                 => FND_API.G_MISS_CHAR,
19753           p_ATTRIBUTE15                 => FND_API.G_MISS_CHAR,
19754           p_CREATED_BY                  => fnd_api.g_miss_num,
19755           p_CREATION_DATE               => fnd_api.g_miss_date,
19756           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID,
19757           p_LAST_UPDATE_DATE            => SYSDATE,
19758           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.CONC_LOGIN_ID,
19759           p_OBJECT_VERSION_NUMBER       => l_instance_rec.OBJECT_VERSION_NUMBER,
19760           p_LAST_TXN_LINE_DETAIL_ID     => FND_API.G_MISS_NUM,
19761           p_INSTALL_LOCATION_TYPE_CODE  => FND_API.G_MISS_CHAR,
19762           p_INSTALL_LOCATION_ID         => FND_API.G_MISS_NUM,
19763           p_INSTANCE_USAGE_CODE         => FND_API.G_MISS_CHAR,
19764           p_CONFIG_INST_HDR_ID          => NULL, -- FND_API.G_MISS_NUM,
19765           p_CONFIG_INST_REV_NUM         => NULL, -- FND_API.G_MISS_NUM,
19766           p_CONFIG_INST_ITEM_ID         => NULL, -- FND_API.G_MISS_NUM,
19767           p_CONFIG_VALID_STATUS         => NULL, -- FND_API.G_MISS_CHAR,
19768           p_INSTANCE_DESCRIPTION        => FND_API.G_MISS_CHAR,
19769           p_REQUEST_ID                  => FND_API.G_MISS_NUM,
19770           p_PROGRAM_APPLICATION_ID      => FND_API.G_MISS_NUM,
19771           p_PROGRAM_ID                  => FND_API.G_MISS_NUM,
19772           p_PROGRAM_UPDATE_DATE         => FND_API.G_MISS_DATE,
19773 	  --start of parameters addition for eam integration--
19774           p_NETWORK_ASSET_FLAG          => FND_API.G_MISS_CHAR,
19775           p_MAINTAINABLE_FLAG           => FND_API.G_MISS_CHAR,
19776           p_PN_LOCATION_ID              => FND_API.G_MISS_NUM,
19777           p_ASSET_CRITICALITY_CODE      => FND_API.G_MISS_CHAR,
19778           p_CATEGORY_ID                 => FND_API.G_MISS_NUM,
19779           p_EQUIPMENT_GEN_OBJECT_ID     => FND_API.G_MISS_NUM,
19780           p_INSTANTIATION_FLAG          => FND_API.G_MISS_CHAR,
19781           p_LINEAR_LOCATION_ID          => FND_API.G_MISS_NUM,
19782           p_OPERATIONAL_LOG_FLAG        => FND_API.G_MISS_CHAR,
19783           p_CHECKIN_STATUS              => FND_API.G_MISS_NUM,
19784           p_SUPPLIER_WARRANTY_EXP_DATE  => FND_API.G_MISS_DATE,
19785           p_ATTRIBUTE16                 => FND_API.G_MISS_CHAR,
19786           p_ATTRIBUTE17                 => FND_API.G_MISS_CHAR,
19787           p_ATTRIBUTE18                 => FND_API.G_MISS_CHAR,
19788           p_ATTRIBUTE19                 => FND_API.G_MISS_CHAR,
19789           p_ATTRIBUTE20                 => FND_API.G_MISS_CHAR,
19790           p_ATTRIBUTE21                 => FND_API.G_MISS_CHAR,
19791           p_ATTRIBUTE22                 => FND_API.G_MISS_CHAR,
19792           p_ATTRIBUTE23                 => FND_API.G_MISS_CHAR,
19793           p_ATTRIBUTE24                 => FND_API.G_MISS_CHAR,
19794           p_ATTRIBUTE25                 => FND_API.G_MISS_CHAR,
19795           p_ATTRIBUTE26                 => FND_API.G_MISS_CHAR,
19796           p_ATTRIBUTE27                 => FND_API.G_MISS_CHAR,
19797           p_ATTRIBUTE28                 => FND_API.G_MISS_CHAR,
19798           p_ATTRIBUTE29                 => FND_API.G_MISS_CHAR,
19799           p_ATTRIBUTE30                 => FND_API.G_MISS_CHAR,
19800 	  --end of parameters addition for eam integration--
19801    -- Addition of columns for FA Integration
19802           p_PURCHASE_UNIT_PRICE         => FND_API.G_MISS_NUM,
19803           p_PURCHASE_CURRENCY_CODE      => FND_API.G_MISS_CHAR,
19804           p_PAYABLES_UNIT_PRICE         => FND_API.G_MISS_NUM,
19805           p_PAYABLES_CURRENCY_CODE      => FND_API.G_MISS_CHAR,
19806           p_SALES_UNIT_PRICE            => FND_API.G_MISS_NUM,
19807           p_SALES_CURRENCY_CODE         => FND_API.G_MISS_CHAR,
19808           p_OPERATIONAL_STATUS_CODE     => FND_API.G_MISS_CHAR,
19809     -- End addition of columns for FA Integration
19810           p_SOURCE_CODE                 => FND_API.G_MISS_CHAR -- Added Code for Siebel Genesis Project
19811            );
19812 
19813            CSI_TRANSACTIONS_PVT.Create_transaction
19814           (
19815              p_api_version            => p_api_version
19816             ,p_commit                 => p_commit
19817             ,p_init_msg_list          => p_init_msg_list
19818             ,p_validation_level       => p_validation_level
19819             ,p_Success_IF_Exists_Flag => 'Y'
19820             ,p_transaction_rec        => p_txn_rec
19821             ,x_return_status          => x_return_status
19822             ,x_msg_count              => x_msg_count
19823             ,x_msg_data               => x_msg_data
19824           );
19825 
19826          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
19827 
19828               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
19829               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
19830               FND_MSG_PUB.Add;
19831               RAISE FND_API.G_EXC_ERROR;
19832          END IF;
19833 
19834 -- Get the full_dump_frequency from csi_install_parameter
19835       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
19836           csi_gen_utility_pvt.populate_install_param_rec;
19837        END IF;
19838        --
19839        l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
19840        --
19841        IF l_full_dump_frequency IS NULL THEN
19842           FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
19843           FND_MSG_PUB.ADD;
19844           RAISE FND_API.G_EXC_ERROR;
19845        END IF;
19846 
19847  -- Get a unique history item instance id from the sequence
19848           l_csi_item_instance_h_id :=
19849                                  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
19850 
19851        SELECT MOD(p_instance_rec.object_version_number,l_full_dump_frequency)
19852        INTO   l_mod_value
19853        FROM   dual;
19854 
19855 
19856      IF (l_mod_value = 0) THEN
19857           -- If the mod value is 0 then dump all the columns both changed and unchanged
19858           -- changed columns have old and new values while the unchanged values have old and new values
19859           -- exactly same
19860 
19861        CSI_ITEM_INSTANCES_H_PKG.Insert_Row
19862            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
19863             ,p_INSTANCE_ID                       => l_rel_tbl(j).subject_id
19864             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
19865             ,p_OLD_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
19866             ,p_NEW_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
19867             ,p_OLD_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
19868             ,p_NEW_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
19869             ,p_OLD_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
19870             ,p_NEW_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
19871             ,p_OLD_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
19872             ,p_NEW_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
19873             ,p_OLD_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
19874             ,p_NEW_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
19875             ,p_OLD_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
19876             ,p_NEW_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
19877             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
19878             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
19879             ,p_OLD_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
19880             ,p_NEW_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
19881             ,p_OLD_QUANTITY                      => l_curr_instance_rec.QUANTITY
19882             ,p_NEW_QUANTITY                      => l_curr_instance_rec.QUANTITY
19883             ,p_OLD_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
19884             ,p_NEW_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
19885             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
19886             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
19887             ,p_OLD_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
19888             ,p_NEW_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
19889             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
19890             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_rec.INSTANCE_STATUS_ID
19891             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
19892             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
19893             ,p_OLD_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
19894             ,p_NEW_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
19895             ,p_OLD_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
19896             ,p_NEW_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
19897             ,p_OLD_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
19898             ,p_NEW_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
19899             ,p_OLD_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
19900             ,p_NEW_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
19901             ,p_OLD_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
19902             ,p_NEW_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
19903             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
19904             ,p_NEW_ACTIVE_END_DATE               => l_temp_date --SYSDATE
19905             ,p_OLD_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
19906             ,p_NEW_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
19907             ,p_OLD_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
19908             ,p_NEW_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
19909             ,p_OLD_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
19910             ,p_NEW_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
19911             ,p_OLD_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
19912             ,p_NEW_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
19913             ,p_OLD_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
19914             ,p_NEW_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
19915             ,p_OLD_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
19916             ,p_NEW_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
19917             ,p_OLD_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
19918             ,p_NEW_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
19919             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
19920             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
19921             ,p_OLD_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
19922             ,p_NEW_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
19923             ,p_OLD_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
19924             ,p_NEW_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
19925             ,p_OLD_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
19926             ,p_NEW_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
19927             ,p_FULL_DUMP_FLAG                    => 'Y'
19928             ,p_NEW_CONTEXT                       => l_curr_instance_rec.CONTEXT
19929             ,P_OLD_CONTEXT                       => l_curr_instance_rec.CONTEXT
19930             ,p_NEW_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
19931             ,p_OLD_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
19932             ,p_NEW_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
19933             ,p_OLD_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
19934             ,p_NEW_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
19935             ,p_OLD_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
19936             ,p_NEW_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
19937             ,p_OLD_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
19938             ,p_NEW_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
19939             ,p_OLD_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
19940             ,p_NEW_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
19941             ,p_OLD_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
19942             ,p_NEW_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
19943             ,p_OLD_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
19944             ,p_NEW_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
19945             ,p_OLD_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
19946             ,p_NEW_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
19947             ,p_OLD_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
19948             ,p_NEW_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
19949             ,p_OLD_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
19950             ,p_NEW_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
19951             ,p_OLD_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
19952             ,p_NEW_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
19953             ,p_OLD_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
19954             ,p_NEW_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
19955             ,p_OLD_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
19956             ,p_NEW_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
19957             ,p_OLD_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
19958             ,p_NEW_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
19959             ,p_OLD_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
19960             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
19961             ,p_CREATION_DATE                     => SYSDATE
19962             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
19963             ,p_LAST_UPDATE_DATE                  => SYSDATE
19964             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
19965             ,p_OBJECT_VERSION_NUMBER             => 1
19966             ,p_OLD_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
19967             ,p_NEW_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
19968             ,p_OLD_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
19969             ,p_NEW_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
19970             ,p_OLD_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
19971             ,p_NEW_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
19972             ,p_OLD_CONFIG_INST_REV_NUM           => l_curr_instance_rec.CONFIG_INST_REV_NUM
19973             ,p_NEW_CONFIG_INST_REV_NUM           => NULL -- l_curr_instance_rec.CONFIG_INST_REV_NUM
19974             ,p_OLD_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
19975             ,p_NEW_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
19976             ,p_OLD_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
19977             ,p_NEW_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
19978             ,p_OLD_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
19979             ,p_NEW_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
19980             ,p_OLD_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
19981             ,p_NEW_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
19982             ,p_OLD_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
19983             ,p_NEW_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
19984             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
19985             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
19986 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
19987 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
19988 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
19989 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
19990 	    ,p_OLD_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
19991 	    ,p_NEW_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
19992 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
19993 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
19994 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
19995 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
19996 	    ,p_OLD_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
19997 	    ,p_NEW_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
19998 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
19999 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
20000 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
20001 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
20002  	    --start of parameters addition for eam integration--
20003 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
20004 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
20005 	    ,p_OLD_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
20006 	    ,p_NEW_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
20007 	    ,p_OLD_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
20008 	    ,p_NEW_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
20009 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
20010 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
20011 	    ,p_OLD_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
20012 	    ,p_NEW_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
20013 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
20014 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
20015 	    ,p_OLD_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
20016 	    ,p_NEW_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
20017 	    ,p_OLD_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
20018 	    ,p_NEW_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
20019 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
20020 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
20021 	    ,p_OLD_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
20022 	    ,p_NEW_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
20023 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
20024 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
20025             ,p_OLD_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
20026             ,p_NEW_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
20027             ,p_OLD_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
20028             ,p_NEW_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
20029             ,p_OLD_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
20030             ,p_NEW_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
20031             ,p_OLD_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
20032             ,p_NEW_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
20033             ,p_OLD_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
20034             ,p_NEW_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
20035             ,p_OLD_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
20036             ,p_NEW_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
20037             ,p_OLD_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
20038             ,p_NEW_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
20039             ,p_OLD_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
20040             ,p_NEW_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
20041             ,p_OLD_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
20042             ,p_NEW_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
20043             ,p_OLD_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
20044             ,p_NEW_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
20045             ,p_OLD_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
20046             ,p_NEW_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
20047             ,p_OLD_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
20048             ,p_NEW_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
20049             ,p_OLD_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
20050             ,p_NEW_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
20051             ,p_OLD_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
20052             ,p_NEW_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
20053             ,p_OLD_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
20054             ,p_NEW_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
20055   	    --end of parameters addition for eam integration--
20056    -- Addition of columns for FA Integration
20057             ,p_OLD_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
20058             ,p_NEW_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
20059             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
20060             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
20061             ,p_OLD_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
20062             ,p_NEW_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
20063             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
20064             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
20065             ,p_OLD_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
20066             ,p_NEW_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
20067             ,p_OLD_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
20068             ,p_NEW_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
20069             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
20070             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
20071     -- End addition of columns for FA Integration
20072             -- Begin Add Code for Siebel Genesis Project
20073             ,p_OLD_SOURCE_CODE                   => l_curr_instance_rec.SOURCE_CODE
20074             ,p_NEW_SOURCE_CODE                   => l_curr_instance_rec.SOURCE_CODE
20075             -- End Add Code for Siebel Genesis Project
20076             );
20077 
20078     ELSE
20079           -- If the mod value is not equal to zero then dump only the changed columns
20080           -- while the unchanged values have old and new values as null
20081 
20082        CSI_ITEM_INSTANCES_H_PKG.Insert_Row
20083            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
20084             ,p_INSTANCE_ID                       => l_rel_tbl(j).subject_id
20085             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
20086             ,p_OLD_INSTANCE_NUMBER               => FND_API.G_MISS_CHAR
20087             ,p_NEW_INSTANCE_NUMBER               => FND_API.G_MISS_CHAR
20088             ,p_OLD_EXTERNAL_REFERENCE            => FND_API.G_MISS_CHAR
20089             ,p_NEW_EXTERNAL_REFERENCE            => FND_API.G_MISS_CHAR
20090             ,p_OLD_INVENTORY_ITEM_ID             => FND_API.G_MISS_NUM
20091             ,p_NEW_INVENTORY_ITEM_ID             => FND_API.G_MISS_NUM
20092             ,p_OLD_INVENTORY_REVISION            => FND_API.G_MISS_CHAR
20093             ,p_NEW_INVENTORY_REVISION            => FND_API.G_MISS_CHAR
20094             ,p_OLD_INV_MASTER_ORGZN_ID           => FND_API.G_MISS_NUM
20095             ,p_NEW_INV_MASTER_ORGZN_ID           => FND_API.G_MISS_NUM
20096             ,p_OLD_SERIAL_NUMBER                 => FND_API.G_MISS_CHAR
20097             ,p_NEW_SERIAL_NUMBER                 => FND_API.G_MISS_CHAR
20098             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => FND_API.G_MISS_CHAR
20099             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => FND_API.G_MISS_CHAR
20100             ,p_OLD_LOT_NUMBER                    => FND_API.G_MISS_CHAR
20101             ,p_NEW_LOT_NUMBER                    => FND_API.G_MISS_CHAR
20102             ,p_OLD_QUANTITY                      => FND_API.G_MISS_NUM
20103             ,p_NEW_QUANTITY                      => FND_API.G_MISS_NUM
20104             ,p_OLD_UNIT_OF_MEASURE               => FND_API.G_MISS_CHAR
20105             ,p_NEW_UNIT_OF_MEASURE               => FND_API.G_MISS_CHAR
20106             ,p_OLD_ACCOUNTING_CLASS_CODE         => FND_API.G_MISS_CHAR
20107             ,p_NEW_ACCOUNTING_CLASS_CODE         => FND_API.G_MISS_CHAR
20108             ,p_OLD_INSTANCE_CONDITION_ID         => FND_API.G_MISS_NUM
20109             ,p_NEW_INSTANCE_CONDITION_ID         => FND_API.G_MISS_NUM
20110             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
20111             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_rec.INSTANCE_STATUS_ID
20112             ,p_OLD_CUSTOMER_VIEW_FLAG            => FND_API.G_MISS_CHAR
20113             ,p_NEW_CUSTOMER_VIEW_FLAG            => FND_API.G_MISS_CHAR
20114             ,p_OLD_MERCHANT_VIEW_FLAG            => FND_API.G_MISS_CHAR
20115             ,p_NEW_MERCHANT_VIEW_FLAG            => FND_API.G_MISS_CHAR
20116             ,p_OLD_SELLABLE_FLAG                 => FND_API.G_MISS_CHAR
20117             ,p_NEW_SELLABLE_FLAG                 => FND_API.G_MISS_CHAR
20118             ,p_OLD_SYSTEM_ID                     => FND_API.G_MISS_NUM
20119             ,p_NEW_SYSTEM_ID                     => FND_API.G_MISS_NUM
20120             ,p_OLD_INSTANCE_TYPE_CODE            => FND_API.G_MISS_CHAR
20121             ,p_NEW_INSTANCE_TYPE_CODE            => FND_API.G_MISS_CHAR
20122             ,p_OLD_ACTIVE_START_DATE             => FND_API.G_MISS_DATE
20123             ,p_NEW_ACTIVE_START_DATE             => FND_API.G_MISS_DATE
20124             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
20125             ,p_NEW_ACTIVE_END_DATE               => l_temp_date --SYSDATE
20126             ,p_OLD_LOCATION_TYPE_CODE            => FND_API.G_MISS_CHAR
20127             ,p_NEW_LOCATION_TYPE_CODE            => FND_API.G_MISS_CHAR
20128             ,p_OLD_LOCATION_ID                   => FND_API.G_MISS_NUM
20129             ,p_NEW_LOCATION_ID                   => FND_API.G_MISS_NUM
20130             ,p_OLD_INV_ORGANIZATION_ID           => FND_API.G_MISS_NUM
20131             ,p_NEW_INV_ORGANIZATION_ID           => FND_API.G_MISS_NUM
20132             ,p_OLD_INV_SUBINVENTORY_NAME         => FND_API.G_MISS_CHAR
20133             ,p_NEW_INV_SUBINVENTORY_NAME         => FND_API.G_MISS_CHAR
20134             ,p_OLD_INV_LOCATOR_ID                => FND_API.G_MISS_NUM
20135             ,p_NEW_INV_LOCATOR_ID                => FND_API.G_MISS_NUM
20136             ,p_OLD_PA_PROJECT_ID                 => FND_API.G_MISS_NUM
20137             ,p_NEW_PA_PROJECT_ID                 => FND_API.G_MISS_NUM
20138             ,p_OLD_PA_PROJECT_TASK_ID            => FND_API.G_MISS_NUM
20139             ,p_NEW_PA_PROJECT_TASK_ID            => FND_API.G_MISS_NUM
20140             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => FND_API.G_MISS_NUM
20141             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => FND_API.G_MISS_NUM
20142             ,p_OLD_WIP_JOB_ID                    => FND_API.G_MISS_NUM
20143             ,p_NEW_WIP_JOB_ID                    => FND_API.G_MISS_NUM
20144             ,p_OLD_PO_ORDER_LINE_ID              => FND_API.G_MISS_NUM
20145             ,p_NEW_PO_ORDER_LINE_ID              => FND_API.G_MISS_NUM
20146             ,p_OLD_COMPLETENESS_FLAG             => FND_API.G_MISS_CHAR
20147             ,p_NEW_COMPLETENESS_FLAG             => FND_API.G_MISS_CHAR
20148             ,p_FULL_DUMP_FLAG                    => 'N'
20149             ,p_NEW_CONTEXT                       => FND_API.G_MISS_CHAR
20150             ,P_OLD_CONTEXT                       => FND_API.G_MISS_CHAR
20151             ,p_NEW_ATTRIBUTE1                    => FND_API.G_MISS_CHAR
20152             ,p_OLD_ATTRIBUTE1                    => FND_API.G_MISS_CHAR
20153             ,p_NEW_ATTRIBUTE2                    => FND_API.G_MISS_CHAR
20154             ,p_OLD_ATTRIBUTE2                    => FND_API.G_MISS_CHAR
20155             ,p_NEW_ATTRIBUTE3                    => FND_API.G_MISS_CHAR
20156             ,p_OLD_ATTRIBUTE3                    => FND_API.G_MISS_CHAR
20157             ,p_NEW_ATTRIBUTE4                    => FND_API.G_MISS_CHAR
20158             ,p_OLD_ATTRIBUTE4                    => FND_API.G_MISS_CHAR
20159             ,p_NEW_ATTRIBUTE5                    => FND_API.G_MISS_CHAR
20160             ,p_OLD_ATTRIBUTE5                    => FND_API.G_MISS_CHAR
20161             ,p_NEW_ATTRIBUTE6                    => FND_API.G_MISS_CHAR
20162             ,p_OLD_ATTRIBUTE6                    => FND_API.G_MISS_CHAR
20163             ,p_NEW_ATTRIBUTE7                    => FND_API.G_MISS_CHAR
20164             ,p_OLD_ATTRIBUTE7                    => FND_API.G_MISS_CHAR
20165             ,p_NEW_ATTRIBUTE8                    => FND_API.G_MISS_CHAR
20166             ,p_OLD_ATTRIBUTE8                    => FND_API.G_MISS_CHAR
20167             ,p_NEW_ATTRIBUTE9                    => FND_API.G_MISS_CHAR
20168             ,p_OLD_ATTRIBUTE9                    => FND_API.G_MISS_CHAR
20169             ,p_NEW_ATTRIBUTE10                   => FND_API.G_MISS_CHAR
20170             ,p_OLD_ATTRIBUTE10                   => FND_API.G_MISS_CHAR
20171             ,p_NEW_ATTRIBUTE11                   => FND_API.G_MISS_CHAR
20172             ,p_OLD_ATTRIBUTE11                   => FND_API.G_MISS_CHAR
20173             ,p_NEW_ATTRIBUTE12                   => FND_API.G_MISS_CHAR
20174             ,p_OLD_ATTRIBUTE12                   => FND_API.G_MISS_CHAR
20175             ,p_NEW_ATTRIBUTE13                   => FND_API.G_MISS_CHAR
20176             ,p_OLD_ATTRIBUTE13                   => FND_API.G_MISS_CHAR
20177             ,p_NEW_ATTRIBUTE14                   => FND_API.G_MISS_CHAR
20178             ,p_OLD_ATTRIBUTE14                   => FND_API.G_MISS_CHAR
20179             ,p_NEW_ATTRIBUTE15                   => FND_API.G_MISS_CHAR
20180             ,p_OLD_ATTRIBUTE15                   => FND_API.G_MISS_CHAR
20181             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
20182             ,p_CREATION_DATE                     => SYSDATE
20183             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
20184             ,p_LAST_UPDATE_DATE                  => SYSDATE
20185             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
20186             ,p_OBJECT_VERSION_NUMBER             => 1
20187             ,p_OLD_INST_LOC_TYPE_CODE            => FND_API.G_MISS_CHAR
20188             ,p_NEW_INST_LOC_TYPE_CODE            => FND_API.G_MISS_CHAR
20189             ,p_OLD_INST_LOC_ID                   => FND_API.G_MISS_NUM
20190             ,p_NEW_INST_LOC_ID                   => FND_API.G_MISS_NUM
20191             ,p_OLD_INST_USAGE_CODE               => FND_API.G_MISS_CHAR
20192             ,p_NEW_INST_USAGE_CODE               => FND_API.G_MISS_CHAR
20193             ,p_OLD_CONFIG_INST_REV_NUM           => FND_API.G_MISS_NUM
20194             ,p_NEW_CONFIG_INST_REV_NUM           => NULL -- FND_API.G_MISS_NUM
20195             ,p_OLD_CONFIG_VALID_STATUS           => FND_API.G_MISS_CHAR
20196             ,p_NEW_CONFIG_VALID_STATUS           => FND_API.G_MISS_CHAR
20197             ,p_OLD_INSTANCE_DESCRIPTION          => FND_API.G_MISS_CHAR
20198             ,p_NEW_INSTANCE_DESCRIPTION          => FND_API.G_MISS_CHAR
20199             ,p_OLD_INSTALL_DATE                  => FND_API.G_MISS_DATE
20200             ,p_NEW_INSTALL_DATE                  => FND_API.G_MISS_DATE
20201             ,p_OLD_RETURN_BY_DATE                => FND_API.G_MISS_DATE
20202             ,p_NEW_RETURN_BY_DATE                => FND_API.G_MISS_DATE
20203             ,p_OLD_ACTUAL_RETURN_DATE            => FND_API.G_MISS_DATE
20204             ,p_NEW_ACTUAL_RETURN_DATE            => FND_API.G_MISS_DATE
20205             ,p_OLD_LAST_OE_AGREEMENT_ID          => FND_API.G_MISS_NUM
20206             ,p_NEW_LAST_OE_AGREEMENT_ID          => FND_API.G_MISS_NUM
20207 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => FND_API.G_MISS_NUM
20208 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => FND_API.G_MISS_NUM
20209 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => FND_API.G_MISS_NUM
20210 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => FND_API.G_MISS_NUM
20211 	    ,p_OLD_LAST_WIP_JOB_ID               => FND_API.G_MISS_NUM
20212 	    ,p_NEW_LAST_WIP_JOB_ID               => FND_API.G_MISS_NUM
20213 	    ,p_OLD_LAST_PO_PO_LINE_ID            => FND_API.G_MISS_NUM
20214 	    ,p_NEW_LAST_PO_PO_LINE_ID            => FND_API.G_MISS_NUM
20215 	    ,p_OLD_LAST_PA_PROJECT_ID            => FND_API.G_MISS_NUM
20216 	    ,p_NEW_LAST_PA_PROJECT_ID            => FND_API.G_MISS_NUM
20217 	    ,p_OLD_LAST_PA_TASK_ID          => FND_API.G_MISS_NUM
20218 	    ,p_NEW_LAST_PA_TASK_ID          => FND_API.G_MISS_NUM
20219 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => FND_API.G_MISS_NUM
20220 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => FND_API.G_MISS_NUM
20221 	    ,p_OLD_LAST_OE_PO_NUMBER             => FND_API.G_MISS_CHAR
20222 	    ,p_NEW_LAST_OE_PO_NUMBER             => FND_API.G_MISS_CHAR
20223  	    --start of parameters addition for eam integration--
20224 	    ,p_OLD_NETWORK_ASSET_FLAG             => FND_API.G_MISS_CHAR
20225 	    ,p_NEW_NETWORK_ASSET_FLAG             => FND_API.G_MISS_CHAR
20226 	    ,p_OLD_MAINTAINABLE_FLAG              => FND_API.G_MISS_CHAR
20227 	    ,p_NEW_MAINTAINABLE_FLAG              => FND_API.G_MISS_CHAR
20228 	    ,p_OLD_PN_LOCATION_ID                 => FND_API.G_MISS_NUM
20229 	    ,p_NEW_PN_LOCATION_ID                 => FND_API.G_MISS_NUM
20230 	    ,p_OLD_ASSET_CRITICALITY_CODE         => FND_API.G_MISS_CHAR
20231 	    ,p_NEW_ASSET_CRITICALITY_CODE         => FND_API.G_MISS_CHAR
20232 	    ,p_OLD_CATEGORY_ID                    => FND_API.G_MISS_NUM
20233 	    ,p_NEW_CATEGORY_ID                    => FND_API.G_MISS_NUM
20234 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => FND_API.G_MISS_NUM
20235 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => FND_API.G_MISS_NUM
20236 	    ,p_OLD_INSTANTIATION_FLAG             => FND_API.G_MISS_CHAR
20237 	    ,p_NEW_INSTANTIATION_FLAG             => FND_API.G_MISS_CHAR
20238 	    ,p_OLD_LINEAR_LOCATION_ID             => FND_API.G_MISS_NUM
20239 	    ,p_NEW_LINEAR_LOCATION_ID             => FND_API.G_MISS_NUM
20240 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => FND_API.G_MISS_CHAR
20241 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => FND_API.G_MISS_CHAR
20242 	    ,p_OLD_CHECKIN_STATUS                 => FND_API.G_MISS_NUM
20243 	    ,p_NEW_CHECKIN_STATUS                 => FND_API.G_MISS_NUM
20244 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => FND_API.G_MISS_DATE
20245 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => FND_API.G_MISS_DATE
20246             ,p_OLD_ATTRIBUTE16                    => FND_API.G_MISS_CHAR
20247             ,p_NEW_ATTRIBUTE16                    => FND_API.G_MISS_CHAR
20248             ,p_OLD_ATTRIBUTE17                    => FND_API.G_MISS_CHAR
20249             ,p_NEW_ATTRIBUTE17                    => FND_API.G_MISS_CHAR
20250             ,p_OLD_ATTRIBUTE18                    => FND_API.G_MISS_CHAR
20251             ,p_NEW_ATTRIBUTE18                    => FND_API.G_MISS_CHAR
20252             ,p_OLD_ATTRIBUTE19                    => FND_API.G_MISS_CHAR
20253             ,p_NEW_ATTRIBUTE19                    => FND_API.G_MISS_CHAR
20254             ,p_OLD_ATTRIBUTE20                    => FND_API.G_MISS_CHAR
20255             ,p_NEW_ATTRIBUTE20                    => FND_API.G_MISS_CHAR
20256             ,p_OLD_ATTRIBUTE21                    => FND_API.G_MISS_CHAR
20257             ,p_NEW_ATTRIBUTE21                    => FND_API.G_MISS_CHAR
20258             ,p_OLD_ATTRIBUTE22                    => FND_API.G_MISS_CHAR
20259             ,p_NEW_ATTRIBUTE22                    => FND_API.G_MISS_CHAR
20260             ,p_OLD_ATTRIBUTE23                    => FND_API.G_MISS_CHAR
20261             ,p_NEW_ATTRIBUTE23                    => FND_API.G_MISS_CHAR
20262             ,p_OLD_ATTRIBUTE24                    => FND_API.G_MISS_CHAR
20263             ,p_NEW_ATTRIBUTE24                    => FND_API.G_MISS_CHAR
20264             ,p_OLD_ATTRIBUTE25                    => FND_API.G_MISS_CHAR
20265             ,p_NEW_ATTRIBUTE25                    => FND_API.G_MISS_CHAR
20266             ,p_OLD_ATTRIBUTE26                    => FND_API.G_MISS_CHAR
20267             ,p_NEW_ATTRIBUTE26                    => FND_API.G_MISS_CHAR
20268             ,p_OLD_ATTRIBUTE27                    => FND_API.G_MISS_CHAR
20269             ,p_NEW_ATTRIBUTE27                    => FND_API.G_MISS_CHAR
20270             ,p_OLD_ATTRIBUTE28                    => FND_API.G_MISS_CHAR
20271             ,p_NEW_ATTRIBUTE28                    => FND_API.G_MISS_CHAR
20272             ,p_OLD_ATTRIBUTE29                    => FND_API.G_MISS_CHAR
20273             ,p_NEW_ATTRIBUTE29                    => FND_API.G_MISS_CHAR
20274             ,p_OLD_ATTRIBUTE30                    => FND_API.G_MISS_CHAR
20275             ,p_NEW_ATTRIBUTE30                    => FND_API.G_MISS_CHAR
20276   	    --end of parameters addition for eam integration--
20277        -- Addition of columns for FA Integration
20278             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
20279             ,p_NEW_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
20280             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
20281             ,p_NEW_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
20282             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
20283             ,p_NEW_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
20284             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
20285             ,p_NEW_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
20286             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
20287             ,p_NEW_SALES_UNIT_PRICE               => fnd_api.g_miss_num
20288             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
20289             ,p_NEW_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
20290             ,p_OLD_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
20291             ,p_NEW_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
20292         -- End addition of columns for FA Integration
20293             -- Begin Add Code for Siebel Genesis Project
20294             ,p_OLD_SOURCE_CODE                   => FND_API.G_MISS_CHAR
20295             ,p_NEW_SOURCE_CODE                   => FND_API.G_MISS_CHAR
20296             -- End Add Code for Siebel Genesis Project
20297             );
20298 
20299 
20300       END IF;
20301 
20302 
20303       -- Calling eam API to log instance update event
20304        IF l_eam_item
20305        THEN
20306           IF l_ins_hist_id IS NOT NULL
20307           THEN
20308              l_instance_history_id:=l_ins_hist_id;
20309           ELSE
20310              l_instance_history_id:=l_csi_item_instance_h_id;
20311           END IF;
20312           eam_asset_log_pvt.instance_update_event
20313           (p_api_version         => p_api_version
20314           ,p_init_msg_list       => fnd_api.g_false
20315           ,p_commit              => fnd_api.g_false
20316           ,p_validation_level    => fnd_api.g_valid_level_full
20317           ,x_return_status       => x_return_status
20318           ,x_msg_count           => x_msg_count
20319           ,x_msg_data            => x_msg_data
20320           ,p_instance_id         => l_rel_tbl(j).subject_id
20321           ,p_ref_id              => l_instance_history_id
20322           ,p_event_date          => sysdate);
20323          IF NOT(x_return_status = fnd_api.g_ret_sts_success)
20324          THEN
20325             csi_gen_utility_pvt.put_line('Error from eam_asset_log_pvt.instance_update_event API');
20326             RAISE fnd_api.g_exc_error;
20327          END IF;
20328        END IF;
20329       -- Calling eam API to log instance update event
20330 
20331        -- srramakr Bug # 3945813 We no longer look for service_order_allowed_flag to decide
20332        -- whether contracts should be terminated or not. Instead, we look for terminated_flag.
20333        -- Before terminating the contract check whether the terminated_flag is set to 'Y'
20334        -- for the instance_status passed. If set to 'N' dont make call to contracts.
20335        OPEN  instance_csr (l_rel_tbl(j).subject_id);
20336        FETCH instance_csr INTO l_instance_csr;
20337        CLOSE instance_csr;
20338 
20339        IF csi_item_instance_vld_pvt.termination_status
20340           ( p_instance_status_id => l_instance_csr.instance_status_id )
20341        THEN
20342          IF p_txn_rec.transaction_type_id in (53,54) THEN
20343             l_oks_txn_type := 'RET';
20344          ELSE
20345             l_oks_txn_type := 'TRM';
20346          END IF;
20347         csi_item_instance_pvt.Call_to_Contracts
20348          ( p_transaction_type   =>   l_oks_txn_type
20349           ,p_instance_id        =>   l_rel_tbl(j).subject_id
20350           ,p_new_instance_id    =>   NULL
20351           ,p_vld_org_id         =>   l_instance_csr.last_vld_organization_id
20352           ,p_quantity           =>   NULL
20353           ,p_party_account_id1  =>   NULL
20354           ,p_party_account_id2  =>   NULL
20355           ,p_transaction_date   =>   p_txn_rec.transaction_date --l_temp_date
20356           ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date --l_temp_date
20357 	  ,p_txn_type_id        => p_txn_rec.transaction_type_id --added for  BUG  5752271
20358           ,p_grp_call_contracts =>   p_instance_rec.grp_call_contracts
20359           ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
20360           ,x_return_status      =>   x_return_status
20361           ,x_msg_count          =>   x_msg_count
20362           ,x_msg_data           =>   x_msg_data
20363           );
20364 
20365            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
20366                   l_msg_index := 1;
20367                   l_msg_count := x_msg_count;
20368               WHILE l_msg_count > 0 LOOP
20369                 x_msg_data := FND_MSG_PUB.GET
20370                               (  l_msg_index,
20371                                  FND_API.G_FALSE
20372                                );
20373                 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
20374                     l_msg_index := l_msg_index + 1;
20375                     l_msg_count := l_msg_count - 1;
20376               END LOOP;
20377                 RAISE FND_API.G_EXC_ERROR;
20378            END IF;
20379         END IF;
20380 
20381     END LOOP;
20382  END IF; -- l_rel_tbl count check
20383       -- Standard call to get message count and if count is  get message info.
20384       FND_MSG_PUB.Count_And_Get
20385             (p_encoded => FND_API.G_FALSE,
20386                  p_count   =>   x_msg_count ,
20387              p_data    =>   x_msg_data
20388             );
20389 
20390 EXCEPTION
20391 
20392     WHEN FND_API.G_EXC_ERROR THEN
20393             ROLLBACK TO expire_child_instance_pvt;
20394             x_return_status := FND_API.G_RET_STS_ERROR ;
20395             FND_MSG_PUB.Count_And_Get
20396                 (p_encoded => FND_API.G_FALSE,
20397                  p_count  =>  x_msg_count,
20398                  p_data   =>  x_msg_data
20399                 );
20400 
20401     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
20402             ROLLBACK TO expire_child_instance_pvt;
20403             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
20404             FND_MSG_PUB.Count_And_Get
20405                 (p_encoded => FND_API.G_FALSE,
20406                  p_count   =>  x_msg_count,
20407                  p_data    =>  x_msg_data
20408                 );
20409     WHEN OTHERS THEN
20410             ROLLBACK TO expire_child_instance_pvt;
20411             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
20412               IF FND_MSG_PUB.Check_Msg_Level
20413                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
20414               THEN
20415                   FND_MSG_PUB.Add_Exc_Msg
20416                  ( G_PKG_NAME, l_api_name );
20417               END IF;
20418                   FND_MSG_PUB.Count_And_Get
20419                  ( p_encoded => FND_API.G_FALSE,
20420                  p_count  =>  x_msg_count,
20421                    p_data   =>  x_msg_data
20422                 );
20423 
20424 END expire_child_instances;
20425 
20426 /*---------------------------------------------------*/
20427 /* Procedure name: expire_item_instance              */
20428 /* Description   : procedure for                     */
20429 /*                 Expiring an Item Instance         */
20430 /*---------------------------------------------------*/
20431 
20432 PROCEDURE expire_item_instance
20433  (
20434       p_api_version       IN      NUMBER
20435      ,p_commit            IN      VARCHAR2
20436      ,p_init_msg_list     IN      VARCHAR2
20437      ,p_validation_level  IN      NUMBER
20438      ,p_instance_rec      IN      csi_datastructures_pub.instance_rec
20439      ,p_expire_children   IN      VARCHAR2
20440      ,p_txn_rec           IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
20441      ,x_instance_id_lst   OUT     NOCOPY csi_datastructures_pub.id_tbl
20442      ,p_oks_txn_inst_tbl  IN OUT NOCOPY oks_ibint_pub.txn_instance_tbl
20443      ,x_return_status     OUT     NOCOPY VARCHAR2
20444      ,x_msg_count         OUT     NOCOPY NUMBER
20445      ,x_msg_data          OUT     NOCOPY VARCHAR2
20446  )
20447 
20448 IS
20449     l_api_name                  CONSTANT VARCHAR2(30)   := 'EXPIRE_ITEM_NSTANCE';
20450     l_api_version               CONSTANT NUMBER         := 1.0;
20451     l_debug_level               NUMBER;
20452     l_instance_id               NUMBER;
20453     l_instance_rec              csi_datastructures_pub.instance_rec;
20454     l_temp_instance_rec         csi_datastructures_pub.instance_rec;
20455     l_csi_item_instance_h_id    NUMBER;
20456     l_full_dump_frequency       NUMBER;
20457     l_mod_value                 NUMBER;
20458     l_dump_flag                 VARCHAR2(1);
20459     l_dummy                     NUMBER;
20460     -- Added variables for bug 6788183
20461     l_exp_rltns_rec             csi_datastructures_pub.ii_relationship_rec;
20462     l_instance_id_lst           csi_datastructures_pub.id_tbl;
20463     l_return_status             VARCHAR2(1) := fnd_api.g_ret_sts_success;
20464     l_msg_data                  VARCHAR2(2000);
20465 
20466     CURSOR get_instance_rec(p_instance_id IN NUMBER)  IS
20467         SELECT
20468          INSTANCE_ID,
20469          INSTANCE_NUMBER,
20470          EXTERNAL_REFERENCE,
20471          INVENTORY_ITEM_ID,
20472          NULL VLD_ORGANIZATION_ID,
20473          INVENTORY_REVISION,
20474          INV_MASTER_ORGANIZATION_ID,
20475          SERIAL_NUMBER,
20476          MFG_SERIAL_NUMBER_FLAG,
20477          LOT_NUMBER,
20478          QUANTITY,
20479          UNIT_OF_MEASURE,
20480          ACCOUNTING_CLASS_CODE,
20481          INSTANCE_CONDITION_ID,
20482          INSTANCE_STATUS_ID,
20483          CUSTOMER_VIEW_FLAG,
20484          MERCHANT_VIEW_FLAG,
20485          SELLABLE_FLAG,
20486          SYSTEM_ID,
20487          INSTANCE_TYPE_CODE,
20488          ACTIVE_START_DATE,
20489          ACTIVE_END_DATE,
20490          LOCATION_TYPE_CODE,
20491          LOCATION_ID,
20492          INV_ORGANIZATION_ID,
20493          INV_SUBINVENTORY_NAME,
20494          INV_LOCATOR_ID,
20495          PA_PROJECT_ID,
20496          PA_PROJECT_TASK_ID,
20497          IN_TRANSIT_ORDER_LINE_ID,
20498          WIP_JOB_ID,
20499          PO_ORDER_LINE_ID,
20500          LAST_OE_ORDER_LINE_ID,
20501          LAST_OE_RMA_LINE_ID,
20502          LAST_PO_PO_LINE_ID,
20503          LAST_OE_PO_NUMBER,
20504          LAST_WIP_JOB_ID,
20505          LAST_PA_PROJECT_ID,
20506          LAST_PA_TASK_ID,
20507          LAST_OE_AGREEMENT_ID,
20508          INSTALL_DATE,
20509          MANUALLY_CREATED_FLAG,
20510          RETURN_BY_DATE,
20511          ACTUAL_RETURN_DATE,
20512          CREATION_COMPLETE_FLAG,
20513          COMPLETENESS_FLAG,
20514          NULL VERSION_LABEL,
20515          NULL VERSION_LABEL_DESCRIPTION,
20516          CONTEXT,
20517          ATTRIBUTE1,
20518          ATTRIBUTE2,
20519          ATTRIBUTE3,
20520          ATTRIBUTE4,
20521          ATTRIBUTE5,
20522          ATTRIBUTE6,
20523          ATTRIBUTE7,
20524          ATTRIBUTE8,
20525          ATTRIBUTE9,
20526          ATTRIBUTE10,
20527          ATTRIBUTE11,
20528          ATTRIBUTE12,
20529          ATTRIBUTE13,
20530          ATTRIBUTE14,
20531          ATTRIBUTE15,
20532          OBJECT_VERSION_NUMBER,
20533          LAST_TXN_LINE_DETAIL_ID,
20534          INSTALL_LOCATION_TYPE_CODE,
20535          INSTALL_LOCATION_ID,
20536          INSTANCE_USAGE_CODE,
20537          CONFIG_INST_HDR_ID,
20538          CONFIG_INST_REV_NUM,
20539          CONFIG_INST_ITEM_ID,
20540          CONFIG_VALID_STATUS,
20541          INSTANCE_DESCRIPTION,
20542 	 --start of column addition for eam integration--
20543          NETWORK_ASSET_FLAG,
20544          MAINTAINABLE_FLAG,
20545          PN_LOCATION_ID,
20546          ASSET_CRITICALITY_CODE,
20547          CATEGORY_ID,
20548          EQUIPMENT_GEN_OBJECT_ID,
20549          INSTANTIATION_FLAG,
20550          LINEAR_LOCATION_ID,
20551          OPERATIONAL_LOG_FLAG,
20552          CHECKIN_STATUS,
20553          SUPPLIER_WARRANTY_EXP_DATE,
20554          ATTRIBUTE16,
20555          ATTRIBUTE17,
20556          ATTRIBUTE18,
20557          ATTRIBUTE19,
20558          ATTRIBUTE20,
20559          ATTRIBUTE21,
20560          ATTRIBUTE22,
20561          ATTRIBUTE23,
20562          ATTRIBUTE24,
20563          ATTRIBUTE25,
20564          ATTRIBUTE26,
20565          ATTRIBUTE27,
20566          ATTRIBUTE28,
20567          ATTRIBUTE29,
20568          ATTRIBUTE30,
20569        --end of column addition for eam integration--
20570    -- Addition of columns for FA Integration
20571          PURCHASE_UNIT_PRICE,
20572          PURCHASE_CURRENCY_CODE,
20573          PAYABLES_UNIT_PRICE,
20574          PAYABLES_CURRENCY_CODE,
20575          SALES_UNIT_PRICE,
20576          SALES_CURRENCY_CODE,
20577          OPERATIONAL_STATUS_CODE,
20578     -- End addition of columns for FA Integration
20579          SOURCE_CODE -- Added Code for Siebel Genesis Project
20580        FROM   csi_item_instances
20581        WHERE  instance_id = p_instance_id ;
20582       -- AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE)); -- COMMENTED BY SK bug 2151760
20583      l_curr_instance_rec    get_instance_rec%ROWTYPE;
20584 
20585     CURSOR instance_csr (p_ins_id IN NUMBER) IS
20586       SELECT  *
20587       FROM    csi_item_instances
20588       WHERE   instance_id = p_ins_id;
20589 
20590     -- Added cursor for bug 6788183
20591     CURSOR relationship_csr (p_subject_id IN NUMBER) IS
20592       SELECT relationship_id,object_version_number
20593       FROM csi_ii_relationships
20594       WHERE (subject_id = p_subject_id
20595       or    object_id = p_subject_id)    -- added bug 8661671
20596 	  AND   (active_end_date IS NULL OR active_end_date > SYSDATE); --Bug 9207673 FP Bug 9287115
20597 
20598      l_instance_csr           instance_csr%ROWTYPE;
20599 
20600 l_temp                     VARCHAR2(1);
20601 l_temp_date                DATE;
20602 l_txn_date                 DATE;
20603 l_msg_count                NUMBER;
20604 l_msg_index                NUMBER;
20605 l_msg_dummy                NUMBER;
20606 l_open_service             VARCHAR2(1);
20607 l_oks_txn_type             VARCHAR2(3);
20608 l_eam_item                 BOOLEAN := FALSE;
20609 l_vld_org                  NUMBER;
20610 l_maintenance_object_type  NUMBER := 3;
20611 l_ins_hist_id              NUMBER;
20612 l_instance_history_id      NUMBER;
20613 l_valid                    BOOLEAN     := TRUE;
20614 l_creation_flag            VARCHAR2(1);
20615 l_parent_found             VARCHAR2(1); -- Added for bug#14559620
20616 
20617 BEGIN
20618 
20619       -- Standard Start of API savepoint
20620         SAVEPOINT      expire_item_instance_pvt;
20621 
20622       -- Standard call to check for call compatibility.
20623         IF NOT FND_API.Compatible_API_Call (l_api_version,
20624                                             p_api_version,
20625                                             l_api_name,
20626                                             G_PKG_NAME   )
20627         THEN
20628               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
20629         END IF;
20630 
20631       -- Initialize message list if p_init_msg_list is set to TRUE.
20632         IF FND_API.to_Boolean( p_init_msg_list ) THEN
20633               FND_MSG_PUB.initialize;
20634         END IF;
20635 
20636       --  Initialize API return status to success
20637         x_return_status := FND_API.G_RET_STS_SUCCESS;
20638 
20639         -- Check the profile option debug_level for debug message reporting
20640         l_debug_level:=fnd_profile.value('DEBUG_LEVEL');
20641 
20642         -- If debug_level = 1 then dump the procedure name
20643         IF (l_debug_level > 0) THEN
20644             csi_gen_utility_pvt.put_line ( 'expire_item_instance_pvt');
20645         END IF;
20646 
20647         -- If the debug level = 2 then dump all the parameters values.
20648         IF (l_debug_level > 1) THEN
20649             csi_gen_utility_pvt.put_line ( 'expire_item_instance_pvt :'||
20650                                             p_api_version         ||'-'||
20651                                             p_commit              ||'-'||
20652                                             p_init_msg_list       );
20653 
20654          --dump the records in to a log file
20655          csi_gen_utility_pvt.dump_instance_rec(p_instance_rec);
20656          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
20657         END IF;
20658 
20659         -- Start API body
20660 -- Check if all the required parameters are passed
20661          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_num
20662              (    p_instance_rec.instance_id ,
20663                '  p_instance_rec.instance_id ',
20664                   l_api_name       );
20665 
20666          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_num
20667              (    p_instance_rec.object_version_number ,
20668                '  p_instance_rec.object_version_number  ',
20669                   l_api_name       );
20670 
20671 -- Check if the instance id  is valid
20672         IF NOT(CSI_Item_Instance_vld_pvt.Is_InstanceID_Valid
20673                                                      (p_instance_rec.instance_id,
20674                                                       TRUE         )) THEN
20675               RAISE FND_API.G_EXC_ERROR;
20676         END IF;
20677 
20678 -- check if the object_version_number passed matches with the one
20679 -- in the database else raise error
20680         OPEN get_instance_rec(p_instance_rec.instance_id);
20681         FETCH get_instance_rec INTO l_curr_instance_rec;
20682                 IF  (l_curr_instance_rec.object_version_number <> nvl(p_instance_rec.OBJECT_VERSION_NUMBER,0)) THEN
20683                         FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
20684                         FND_MSG_PUB.ADD;
20685                         RAISE FND_API.G_EXC_ERROR;
20686                 END IF;
20687 
20688                 IF get_instance_rec%NOTFOUND THEN
20689                     FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
20690                     FND_MSG_PUB.ADD;
20691                        RAISE FND_API.G_EXC_ERROR;
20692                 END IF;
20693         CLOSE get_instance_rec;
20694 
20695 --  checking for any unexpired children in csi_ii_relationships table
20696 
20697 --  Added by sk for bug 2151760
20698      IF (( p_instance_rec.active_end_date IS NOT NULL) AND (p_instance_rec.active_end_date < SYSDATE))
20699       AND  p_instance_rec.active_end_date <> fnd_api.g_miss_date
20700      THEN
20701        l_temp_date:= p_instance_rec.active_end_date;
20702        BEGIN
20703         SELECT MAX(transaction_date)
20704         INTO   l_txn_date
20705         FROM   csi_inst_transactions_v
20706         WHERE  instance_id=p_instance_rec.instance_id
20707         AND    transaction_date>p_instance_rec.active_end_date;
20708 
20709         IF l_txn_date IS NOT NULL
20710         THEN
20711 
20712 	   -- Added for bug#14559620
20713 	   -- Standard Concurrent Job: End-dated Instances Process expiring child instances before parent
20714 	   -- by leaving future transactions in csi_inst_transactions_v, which was causing an
20715 	   -- error, added below code to over come this situation
20716 	     l_parent_found := 'Y';
20717 	   IF p_txn_rec.transaction_type_id = 5 THEN
20718 	   BEGIN
20719 
20720 	       SELECT 'Y'
20721             INTO   l_parent_found
20722             FROM   csi_ii_relationships
20723             WHERE  (subject_id             = p_instance_rec.instance_id
20724 		     OR   object_id              = p_instance_rec.instance_id)
20725             AND    relationship_type_code = 'COMPONENT_OF'
20726 		  AND    sysdate between nvl(active_start_date, sysdate -1)
20727                            and     nvl(active_end_date, sysdate + 1);
20728           EXCEPTION
20729 		WHEN no_data_found THEN
20730               l_parent_found := 'N';
20731             WHEN too_many_rows THEN
20732               l_parent_found := 'Y';
20733           END;
20734 
20735 	   END IF;
20736 
20737 
20738         IF  l_parent_found = 'Y' THEN
20739 	   -- Added for bug#14559620
20740            x_return_status := FND_API.G_RET_STS_ERROR ;
20741            FND_MESSAGE.Set_Name('CSI', 'CSI_PARENT_HAS_TXN');
20742            FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_curr_instance_rec.instance_number );
20743            FND_MESSAGE.SET_TOKEN('TXN_DATE',to_char(l_txn_date, 'DD-MON-YYYY HH24:MI:SS'));
20744            FND_MSG_PUB.ADD;
20745            RAISE FND_API.G_EXC_ERROR;
20746         END IF;
20747 	   END IF;
20748        EXCEPTION
20749          WHEN FND_API.G_EXC_ERROR THEN
20750               RAISE FND_API.G_EXC_ERROR;
20751          WHEN OTHERS THEN
20752            NULL;
20753        END;
20754      ELSE
20755        l_temp_date:= SYSDATE;
20756      END IF;
20757 -- End addition by sk for bug 2151760
20758 
20759     DECLARE
20760        l_dummy  NUMBER;
20761        l_has_unexpired_children BOOLEAN;
20762        p_rel_query_rec csi_datastructures_pub.relationship_query_rec;
20763        l_rel_tbl       csi_datastructures_pub.ii_relationship_tbl;
20764        l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
20765     BEGIN
20766        p_rel_query_rec.object_id := p_instance_rec.instance_id;
20767        p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
20768        --
20769       IF p_rel_query_rec.object_id IS NOT NULL AND
20770          p_rel_query_rec.object_id <> FND_API.G_MISS_NUM THEN
20771          csi_ii_relationships_pvt.Get_Children
20772 	  ( p_relationship_query_rec   => p_rel_query_rec,
20773 	    p_rel_tbl                  => l_rel_tbl,
20774             p_depth                    => NULL,
20775 	    p_active_relationship_only => FND_API.G_TRUE,
20776 	    p_time_stamp               => FND_API.G_MISS_DATE,
20777             p_get_dfs                  => FND_API.G_FALSE,
20778             p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
20779 	    x_return_status            => x_return_status,
20780 	    x_msg_count                => x_msg_count,
20781 	    x_msg_data                 => x_msg_data
20782 	  );
20783 	 --
20784   	 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
20785             FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
20786             FND_MSG_PUB.Add;
20787 	    RAISE FND_API.G_EXC_ERROR;
20788 	 END IF;
20789       END IF;
20790 	--
20791       csi_gen_utility_pvt.put_line('Child count is ..'||to_char(l_rel_tbl.count));
20792         l_dummy := l_rel_tbl.count;
20793         IF l_dummy > 0 THEN
20794            l_has_unexpired_children := TRUE;
20795         ELSE
20796            l_has_unexpired_children := FALSE;
20797         END IF;
20798 
20799        IF l_has_unexpired_children = TRUE THEN
20800           IF p_expire_children = 'F' THEN
20801             FND_MESSAGE.SET_NAME('CSI','CSI_API_CANT_EXPIRE_INSTANCE');
20802             FND_MSG_PUB.Add;
20803             RAISE FND_API.G_EXC_ERROR;
20804 
20805           ELSE
20806              -- Call the expire_child_instances api
20807              expire_child_instances(p_api_version         => p_api_version,
20808                                     p_commit              => p_commit,
20809                                     p_init_msg_list       => p_init_msg_list,
20810                                     p_validation_level    => p_validation_level,
20811                                     p_instance_rec        => p_instance_rec,
20812                                     p_expire_children     => fnd_api.g_true,
20813                                     p_txn_rec             => p_txn_rec,
20814                                     x_instance_id_lst     => x_instance_id_lst,
20815                                     p_oks_txn_inst_tbl    => p_oks_txn_inst_tbl,
20816                                     x_return_status       => x_return_status,
20817                                     x_msg_count           => x_msg_count,
20818                                     x_msg_data            => x_msg_data
20819                                     );
20820 
20821           END IF;
20822        END IF;
20823     END;
20824      -- Added by sguthiva for bug 2520978
20825      -- Modified by srramakr for enhancement 2315522.
20826      -- This will allow the user to pass a Terminable status during expiration.
20827      IF p_instance_rec.instance_status_id IS NOT NULL AND
20828         p_instance_rec.instance_status_id <> fnd_api.g_miss_num THEN
20829         IF NOT (CSI_Item_Instance_vld_pvt.val_inst_ter_flag(
20830                                             p_instance_rec.instance_status_id)) THEN
20831            FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_TERM_STATUS');
20832            FND_MSG_PUB.ADD;
20833            RAISE FND_API.G_EXC_ERROR;
20834         END IF;
20835         l_instance_rec.instance_status_id := p_instance_rec.instance_status_id;
20836      ELSE
20837         l_instance_rec.instance_status_id := fnd_profile.value('CSI_SYS_TERM_INST_STATUS_ID');
20838         IF  l_instance_rec.instance_status_id IS NULL
20839         OR l_instance_rec.instance_status_id=fnd_api.g_miss_num
20840         THEN
20841            l_instance_rec.instance_status_id := 1;
20842         END IF;
20843      END IF;
20844      -- End addition by sguthiva for bug 2520978.
20845      -- l_instance_rec.instance_status_id    := 1; -- '1' for expired instances defined in the csi instance statuses
20846       l_instance_rec.object_version_number := l_curr_instance_rec.object_version_number + 1;
20847 
20848       -- Start addition by sguthiva for bug 2416193
20849            -- Relaxing this check for RMA Receipt transaction
20850 		-- Bug 8998695 - Checking for open SR should happen when
20851  	       -- Expired instances is processed for transaction type 5
20852       IF p_txn_rec.transaction_type_id in (1,5)
20853       THEN
20854       BEGIN
20855             SELECT 'x'
20856             INTO   l_open_service
20857             FROM   cs_incidents_all csi,
20858                    cs_incident_statuses_b csb
20859             WHERE  csi.incident_status_id = csb.incident_status_id
20860             AND    csi.customer_product_id = p_instance_rec.instance_id
20861             AND    NVL(close_flag,'N')<>'Y';
20862 
20863              FND_MESSAGE.SET_NAME('CSI','CSI_IB_HAS_OPEN_SR');
20864              FND_MSG_PUB.ADD;
20865              RAISE FND_API.G_EXC_ERROR;
20866 
20867       EXCEPTION
20868            WHEN TOO_MANY_ROWS THEN
20869              FND_MESSAGE.SET_NAME('CSI','CSI_IB_HAS_OPEN_SR');
20870              FND_MSG_PUB.ADD;
20871              RAISE FND_API.G_EXC_ERROR;
20872 
20873            WHEN NO_DATA_FOUND THEN -- modfied for bug 3693511
20874             NULL;
20875       END;
20876       END IF;
20877       -- End addition for bug 2416193
20878 
20879       -- Added code to expire relationship where the instance expired is the child, bug 6788183
20880       csi_gen_utility_pvt.put_line('Expiring relationship for the instance id - ' || p_instance_rec.instance_id);
20881       FOR l_inst_relationship_rec in relationship_csr(p_instance_rec.instance_id)
20882       LOOP
20883         BEGIN
20884           csi_gen_utility_pvt.put_line('Expiring relationship with id - ' || l_inst_relationship_rec.relationship_id);
20885           l_exp_rltns_rec.relationship_id := l_inst_relationship_rec.relationship_id;
20886           l_exp_rltns_rec.object_version_number := l_inst_relationship_rec.object_version_number;
20887 
20888           csi_t_gen_utility_pvt.dump_api_info(
20889             p_pkg_name => 'csi_ii_relationships_pub',
20890             p_api_name => 'expire_relationship');
20891 
20892           csi_ii_relationships_pub.expire_relationship(
20893               p_api_version               => 1.0,
20894               p_commit                    => fnd_api.g_false,
20895               p_init_msg_list             => fnd_api.g_false,
20896               p_validation_level          => fnd_api.g_valid_level_full,
20897               p_relationship_rec          => l_exp_rltns_rec,
20898               p_txn_rec                   => p_txn_rec,
20899               x_instance_id_lst           => l_instance_id_lst,
20900               x_return_status             => l_return_status,
20901               x_msg_count                 => l_msg_count,
20902               x_msg_data                  => l_msg_data);
20903 
20904           IF l_return_status <> fnd_api.g_ret_sts_success THEN
20905             RAISE fnd_api.g_exc_error;
20906           END IF;
20907         END;
20908       END LOOP;
20909 
20910       csi_gen_utility_pvt.put_line('End of expiring relationships for instance with id - ' || p_instance_rec.instance_id);
20911       -- End of addition for the bug 6788183
20912 
20913 
20914         -- Added the following code for eam integration
20915            IF p_instance_rec.vld_organization_id IS NULL OR
20916               p_instance_rec.vld_organization_id = fnd_api.g_miss_num
20917            THEN
20918              BEGIN
20919               SELECT last_vld_organization_id
20920                 INTO l_vld_org
20921                 FROM csi_item_instances
20922                WHERE instance_id = p_instance_rec.instance_id;
20923              EXCEPTION
20924                WHEN NO_DATA_FOUND THEN
20925                 fnd_message.set_name('CSI','CSI_API_INVALID_INSTANCE_ID');
20926                 fnd_message.set_token('INSTANCE_ID',p_instance_rec.instance_id);
20927                 fnd_msg_pub.ADD;
20928              END;
20929            ELSE
20930              l_vld_org := p_instance_rec.vld_organization_id;
20931            END IF;
20932 
20933            IF csi_item_instance_vld_pvt.Check_for_eam_item
20934               (p_inventory_item_id  => l_curr_instance_rec.inventory_item_id,
20935                p_organization_id    => l_vld_org)
20936            THEN
20937              l_eam_item := TRUE;
20938            END IF;
20939 
20940            IF l_eam_item AND
20941              (p_instance_rec.active_end_date IS NOT NULL AND
20942               p_instance_rec.active_end_date <> fnd_api.g_miss_date)
20943            THEN
20944             IF NOT eam_common_utilities_pvt.check_deactivate
20945               (p_maintenance_object_id   => p_instance_rec.instance_id
20946               ,p_maintenance_object_type => l_maintenance_object_type)
20947             THEN
20948               csi_gen_utility_pvt.put_line('Error from eam_common_utilities_pvt.check_deactivate API ');
20949               RAISE fnd_api.g_exc_error;
20950             END IF;
20951            END IF;
20952         -- End code addition for eam integration
20953     -- validate instance status id
20954        IF NVL(l_instance_rec.INSTANCE_STATUS_ID,fnd_api.g_miss_num) <> fnd_api.g_miss_num
20955        THEN
20956          csi_item_instance_vld_pvt.is_valid_status(
20957            p_instance_status_id     => l_instance_rec.INSTANCE_STATUS_ID,
20958            p_creation_complete_flag => l_creation_flag,
20959            l_return_value           => l_valid);
20960           IF NOT(l_valid)
20961           THEN
20962              RAISE fnd_api.g_exc_error;
20963           END IF;
20964         END IF;
20965 
20966         IF l_instance_rec.INSTANCE_STATUS_ID IS NOT NULL AND
20967            l_instance_rec.INSTANCE_STATUS_ID <> FND_API.G_MISS_NUM AND
20968            l_instance_rec.INSTANCE_STATUS_ID <> l_curr_instance_rec.INSTANCE_STATUS_ID
20969         THEN
20970            IF NOT csi_item_instance_vld_pvt.is_status_updateable
20971                   (p_instance_status => l_instance_rec.INSTANCE_STATUS_ID
20972                   ,p_current_status  => l_curr_instance_rec.INSTANCE_STATUS_ID)
20973            THEN
20974              RAISE fnd_api.g_exc_error;
20975            END IF;
20976         END IF;
20977 
20978     CSI_ITEM_INSTANCES_PKG.Update_Row
20979        (  p_INSTANCE_ID                 => p_instance_rec.INSTANCE_ID,
20980           p_INSTANCE_NUMBER             => l_instance_rec.INSTANCE_NUMBER,
20981           p_EXTERNAL_REFERENCE          => l_instance_rec.EXTERNAL_REFERENCE,
20982           p_INVENTORY_ITEM_ID           => l_instance_rec.INVENTORY_ITEM_ID,
20983           p_INVENTORY_REVISION          => l_instance_rec.INVENTORY_REVISION,
20984           p_INV_MASTER_ORGANIZATION_ID  => l_instance_rec.INV_MASTER_ORGANIZATION_ID,
20985           p_SERIAL_NUMBER               => l_instance_rec.SERIAL_NUMBER,
20986           p_MFG_SERIAL_NUMBER_FLAG      => l_instance_rec.MFG_SERIAL_NUMBER_FLAG,
20987           p_LOT_NUMBER                  => l_instance_rec.LOT_NUMBER,
20988           p_QUANTITY                    => l_instance_rec.QUANTITY,
20989           p_UNIT_OF_MEASURE             => l_instance_rec.UNIT_OF_MEASURE,
20990           p_ACCOUNTING_CLASS_CODE       => l_instance_rec.ACCOUNTING_CLASS_CODE,
20991           p_INSTANCE_CONDITION_ID       => l_instance_rec.INSTANCE_CONDITION_ID,
20992           p_INSTANCE_STATUS_ID          => l_instance_rec.INSTANCE_STATUS_ID,
20993           p_CUSTOMER_VIEW_FLAG          => l_instance_rec.CUSTOMER_VIEW_FLAG,
20994           p_MERCHANT_VIEW_FLAG          => l_instance_rec.MERCHANT_VIEW_FLAG,
20995           p_SELLABLE_FLAG               => l_instance_rec.SELLABLE_FLAG,
20996           p_SYSTEM_ID                   => l_instance_rec.SYSTEM_ID,
20997           p_INSTANCE_TYPE_CODE          => l_instance_rec.INSTANCE_TYPE_CODE,
20998           p_ACTIVE_START_DATE           => l_instance_rec.ACTIVE_START_DATE,
20999           p_ACTIVE_END_DATE             => l_temp_date,--SYSDATE,
21000           p_LOCATION_TYPE_CODE          => l_instance_rec.LOCATION_TYPE_CODE,
21001           p_LOCATION_ID                 => l_instance_rec.LOCATION_ID,
21002           p_INV_ORGANIZATION_ID         => l_instance_rec.INV_ORGANIZATION_ID,
21003           p_INV_SUBINVENTORY_NAME       => l_instance_rec.INV_SUBINVENTORY_NAME,
21004           p_INV_LOCATOR_ID              => l_instance_rec.INV_LOCATOR_ID,
21005           p_PA_PROJECT_ID               => l_instance_rec.PA_PROJECT_ID,
21006           p_PA_PROJECT_TASK_ID          => l_instance_rec.PA_PROJECT_TASK_ID,
21007           p_IN_TRANSIT_ORDER_LINE_ID    => l_instance_rec.IN_TRANSIT_ORDER_LINE_ID,
21008           p_WIP_JOB_ID                  => l_instance_rec.WIP_JOB_ID,
21009           p_PO_ORDER_LINE_ID            => l_instance_rec.PO_ORDER_LINE_ID,
21010           p_LAST_OE_ORDER_LINE_ID       => l_instance_rec.LAST_OE_ORDER_LINE_ID,
21011           p_LAST_OE_RMA_LINE_ID         => l_instance_rec.LAST_OE_RMA_LINE_ID,
21012           p_LAST_PO_PO_LINE_ID          => l_instance_rec.LAST_PO_PO_LINE_ID,
21013           p_LAST_OE_PO_NUMBER           => l_instance_rec.LAST_OE_PO_NUMBER,
21014           p_LAST_WIP_JOB_ID             => l_instance_rec.LAST_WIP_JOB_ID,
21015           p_LAST_PA_PROJECT_ID          => l_instance_rec.LAST_PA_PROJECT_ID,
21016           p_LAST_PA_TASK_ID             => l_instance_rec.LAST_PA_TASK_ID,
21017           p_LAST_OE_AGREEMENT_ID        => l_instance_rec.LAST_OE_AGREEMENT_ID,
21018           p_INSTALL_DATE                => l_instance_rec.INSTALL_DATE,
21019           p_MANUALLY_CREATED_FLAG       => l_instance_rec.MANUALLY_CREATED_FLAG,
21020           p_RETURN_BY_DATE              => l_instance_rec.RETURN_BY_DATE,
21021           p_ACTUAL_RETURN_DATE          => l_instance_rec.ACTUAL_RETURN_DATE,
21022           p_CREATION_COMPLETE_FLAG      => l_instance_rec.CREATION_COMPLETE_FLAG,
21023           p_COMPLETENESS_FLAG           => l_instance_rec.COMPLETENESS_FLAG,
21024           p_CONTEXT                     => l_instance_rec.CONTEXT,
21025           p_ATTRIBUTE1                  => l_instance_rec.ATTRIBUTE1,
21026           p_ATTRIBUTE2                  => l_instance_rec.ATTRIBUTE2,
21027           p_ATTRIBUTE3                  => l_instance_rec.ATTRIBUTE3,
21028           p_ATTRIBUTE4                  => l_instance_rec.ATTRIBUTE4,
21029           p_ATTRIBUTE5                  => l_instance_rec.ATTRIBUTE5,
21030           p_ATTRIBUTE6                  => l_instance_rec.ATTRIBUTE6,
21031           p_ATTRIBUTE7                  => l_instance_rec.ATTRIBUTE7,
21032           p_ATTRIBUTE8                  => l_instance_rec.ATTRIBUTE8,
21033           p_ATTRIBUTE9                  => l_instance_rec.ATTRIBUTE9,
21034           p_ATTRIBUTE10                 => l_instance_rec.ATTRIBUTE10,
21035           p_ATTRIBUTE11                 => l_instance_rec.ATTRIBUTE11,
21036           p_ATTRIBUTE12                 => l_instance_rec.ATTRIBUTE12,
21037           p_ATTRIBUTE13                 => l_instance_rec.ATTRIBUTE13,
21038           p_ATTRIBUTE14                 => l_instance_rec.ATTRIBUTE14,
21039           p_ATTRIBUTE15                 => l_instance_rec.ATTRIBUTE15,
21040           p_CREATED_BY                  => fnd_api.g_miss_num,
21041           p_CREATION_DATE               => fnd_api.g_miss_date,
21042           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID,
21043           p_LAST_UPDATE_DATE            => SYSDATE,
21044           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.CONC_LOGIN_ID,
21045           p_OBJECT_VERSION_NUMBER       => l_instance_rec.OBJECT_VERSION_NUMBER,
21046           p_LAST_TXN_LINE_DETAIL_ID     => l_instance_rec.LAST_TXN_LINE_DETAIL_ID,
21047           p_INSTALL_LOCATION_TYPE_CODE  => l_instance_rec.INSTALL_LOCATION_TYPE_CODE,
21048           p_INSTALL_LOCATION_ID         => l_instance_rec.INSTALL_LOCATION_ID,
21049           p_INSTANCE_USAGE_CODE         => l_instance_rec.INSTANCE_USAGE_CODE,
21050           p_CONFIG_INST_HDR_ID          => NULL, -- l_instance_rec.CONFIG_INST_HDR_ID,
21051           p_CONFIG_INST_REV_NUM         => NULL, -- l_instance_rec.CONFIG_INST_REV_NUM,
21052           p_CONFIG_INST_ITEM_ID         => NULL, -- l_instance_rec.CONFIG_INST_ITEM_ID,
21053           p_CONFIG_VALID_STATUS         => NULL, -- l_instance_rec.CONFIG_VALID_STATUS,
21054           p_INSTANCE_DESCRIPTION        => l_instance_rec.INSTANCE_DESCRIPTION,
21055           p_REQUEST_ID                  => l_instance_rec.REQUEST_ID,
21056           p_PROGRAM_APPLICATION_ID      => l_instance_rec.PROGRAM_APPLICATION_ID,
21057           p_PROGRAM_ID                  => l_instance_rec.PROGRAM_ID,
21058           p_PROGRAM_UPDATE_DATE         => l_instance_rec.PROGRAM_UPDATE_DATE,
21059 	  --start of parameters addition for eam integration--
21060           p_NETWORK_ASSET_FLAG          => l_instance_rec.NETWORK_ASSET_FLAG,
21061           p_MAINTAINABLE_FLAG           => l_instance_rec.MAINTAINABLE_FLAG,
21062           p_PN_LOCATION_ID              => l_instance_rec.PN_LOCATION_ID,
21063           p_ASSET_CRITICALITY_CODE      => l_instance_rec.ASSET_CRITICALITY_CODE,
21064           p_CATEGORY_ID                 => l_instance_rec.CATEGORY_ID,
21065           p_EQUIPMENT_GEN_OBJECT_ID     => l_instance_rec.EQUIPMENT_GEN_OBJECT_ID,
21066           p_INSTANTIATION_FLAG          => l_instance_rec.INSTANTIATION_FLAG,
21067           p_LINEAR_LOCATION_ID          => l_instance_rec.LINEAR_LOCATION_ID,
21068           p_OPERATIONAL_LOG_FLAG        => l_instance_rec.OPERATIONAL_LOG_FLAG,
21069           p_CHECKIN_STATUS              => l_instance_rec.CHECKIN_STATUS,
21070           p_SUPPLIER_WARRANTY_EXP_DATE  => l_instance_rec.SUPPLIER_WARRANTY_EXP_DATE,
21071           p_ATTRIBUTE16                 => l_instance_rec.ATTRIBUTE16,
21072           p_ATTRIBUTE17                 => l_instance_rec.ATTRIBUTE17,
21073           p_ATTRIBUTE18                 => l_instance_rec.ATTRIBUTE18,
21074           p_ATTRIBUTE19                 => l_instance_rec.ATTRIBUTE19,
21075           p_ATTRIBUTE20                 => l_instance_rec.ATTRIBUTE20,
21076           p_ATTRIBUTE21                 => l_instance_rec.ATTRIBUTE21,
21077           p_ATTRIBUTE22                 => l_instance_rec.ATTRIBUTE22,
21078           p_ATTRIBUTE23                 => l_instance_rec.ATTRIBUTE23,
21079           p_ATTRIBUTE24                 => l_instance_rec.ATTRIBUTE24,
21080           p_ATTRIBUTE25                 => l_instance_rec.ATTRIBUTE25,
21081           p_ATTRIBUTE26                 => l_instance_rec.ATTRIBUTE26,
21082           p_ATTRIBUTE27                 => l_instance_rec.ATTRIBUTE27,
21083           p_ATTRIBUTE28                 => l_instance_rec.ATTRIBUTE28,
21084           p_ATTRIBUTE29                 => l_instance_rec.ATTRIBUTE29,
21085           p_ATTRIBUTE30                 => l_instance_rec.ATTRIBUTE30,
21086 	  --end of parameters addition for eam integration--
21087    -- Addition of columns for FA Integration
21088           p_PURCHASE_UNIT_PRICE         => l_instance_rec.PURCHASE_UNIT_PRICE,
21089           p_PURCHASE_CURRENCY_CODE      => l_instance_rec.PURCHASE_CURRENCY_CODE,
21090           p_PAYABLES_UNIT_PRICE         => l_instance_rec.PAYABLES_UNIT_PRICE,
21091           p_PAYABLES_CURRENCY_CODE      => l_instance_rec.PAYABLES_CURRENCY_CODE,
21092           p_SALES_UNIT_PRICE            => l_instance_rec.SALES_UNIT_PRICE,
21093           p_SALES_CURRENCY_CODE         => l_instance_rec.SALES_CURRENCY_CODE,
21094           p_OPERATIONAL_STATUS_CODE     => l_instance_rec.OPERATIONAL_STATUS_CODE,
21095     -- End addition of columns for FA Integration
21096           p_SOURCE_CODE                 => l_instance_rec.SOURCE_CODE -- Added Code for Siebel Genesis Project
21097           );
21098 
21099 
21100 -- calling the transaction api
21101 --IF CSI_Item_Instance_vld_pvt.Is_Inst_creation_complete( l_instance_rec.INSTANCE_ID ) THEN
21102 
21103    -- Call create_transaction to create txn log
21104         CSI_TRANSACTIONS_PVT.Create_transaction
21105           (
21106              p_api_version            => p_api_version
21107             ,p_commit                 => p_commit
21108             ,p_init_msg_list          => p_init_msg_list
21109             ,p_validation_level       => p_validation_level
21110             ,p_Success_IF_Exists_Flag => 'Y'
21111             ,p_transaction_rec        => p_txn_rec
21112             ,x_return_status          => x_return_status
21113             ,x_msg_count              => x_msg_count
21114             ,x_msg_data               => x_msg_data
21115           );
21116 
21117          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
21118 
21119               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
21120               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
21121               FND_MSG_PUB.Add;
21122               RAISE FND_API.G_EXC_ERROR;
21123          END IF;
21124 -- END IF;
21125 
21126 -- Get a unique history item instance id from the sequence
21127           l_csi_item_instance_h_id :=
21128                                  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
21129 
21130 -- Get the full_dump_frequency from csi_install_parameter
21131        --
21132       IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
21133           csi_gen_utility_pvt.populate_install_param_rec;
21134        END IF;
21135        --
21136        l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
21137        --
21138        IF l_full_dump_frequency IS NULL THEN
21139           FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
21140           FND_MSG_PUB.ADD;
21141           RAISE FND_API.G_EXC_ERROR;
21142        END IF;
21143 
21144        SELECT MOD(l_instance_rec.object_version_number,l_full_dump_frequency)
21145        INTO   l_mod_value
21146        FROM   dual;
21147 
21148      -- Added for the bug 6788183
21149      BEGIN
21150         SELECT  instance_history_id
21151         INTO    l_ins_hist_id
21152         FROM    csi_item_instances_h h
21153         WHERE   h.transaction_id = p_txn_rec.transaction_id
21154         AND     h.instance_id = p_instance_rec.instance_id;
21155 
21156          CSI_ITEM_INSTANCES_H_PKG.Update_Row
21157            ( p_INSTANCE_HISTORY_ID              => l_ins_hist_id
21158             ,p_INSTANCE_ID                       => fnd_api.g_miss_num
21159             ,p_TRANSACTION_ID                    => fnd_api.g_miss_num
21160             ,p_OLD_INSTANCE_NUMBER               => fnd_api.g_miss_char
21161             ,p_NEW_INSTANCE_NUMBER               => p_instance_rec.INSTANCE_NUMBER
21162             ,p_OLD_EXTERNAL_REFERENCE            => fnd_api.g_miss_char
21163             ,p_NEW_EXTERNAL_REFERENCE            => p_instance_rec.EXTERNAL_REFERENCE
21164             ,p_OLD_INVENTORY_ITEM_ID             => fnd_api.g_miss_num
21165             ,p_NEW_INVENTORY_ITEM_ID             => p_instance_rec.INVENTORY_ITEM_ID
21166             ,p_OLD_INVENTORY_REVISION            => fnd_api.g_miss_char
21167             ,p_NEW_INVENTORY_REVISION            => p_instance_rec.INVENTORY_REVISION
21168             ,p_OLD_INV_MASTER_ORGZN_ID           => fnd_api.g_miss_num
21169             ,p_NEW_INV_MASTER_ORGZN_ID           => p_instance_rec.INV_MASTER_ORGANIZATION_ID
21170             ,p_OLD_SERIAL_NUMBER                 => fnd_api.g_miss_char
21171             ,p_NEW_SERIAL_NUMBER                 => p_instance_rec.SERIAL_NUMBER
21172             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => fnd_api.g_miss_char
21173             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => p_instance_rec.MFG_SERIAL_NUMBER_FLAG
21174             ,p_OLD_LOT_NUMBER                    => fnd_api.g_miss_char
21175             ,p_NEW_LOT_NUMBER                    => p_instance_rec.LOT_NUMBER
21176             ,p_OLD_QUANTITY                      => fnd_api.g_miss_num
21177             ,p_NEW_QUANTITY                      => p_instance_rec.QUANTITY
21178             ,p_OLD_UNIT_OF_MEASURE               => fnd_api.g_miss_char
21179             ,p_NEW_UNIT_OF_MEASURE               => p_instance_rec.UNIT_OF_MEASURE
21180             ,p_OLD_ACCOUNTING_CLASS_CODE         => fnd_api.g_miss_char
21181             ,p_NEW_ACCOUNTING_CLASS_CODE         => p_instance_rec.ACCOUNTING_CLASS_CODE
21182             ,p_OLD_INSTANCE_CONDITION_ID         => fnd_api.g_miss_num
21183             ,p_NEW_INSTANCE_CONDITION_ID         => p_instance_rec.INSTANCE_CONDITION_ID
21184             ,p_OLD_INSTANCE_STATUS_ID            => fnd_api.g_miss_num
21185             ,p_NEW_INSTANCE_STATUS_ID            => p_instance_rec.INSTANCE_STATUS_ID
21186             ,p_OLD_CUSTOMER_VIEW_FLAG            => fnd_api.g_miss_char
21187             ,p_NEW_CUSTOMER_VIEW_FLAG            => p_instance_rec.CUSTOMER_VIEW_FLAG
21188             ,p_OLD_MERCHANT_VIEW_FLAG            => fnd_api.g_miss_char
21189             ,p_NEW_MERCHANT_VIEW_FLAG            => p_instance_rec.MERCHANT_VIEW_FLAG
21190             ,p_OLD_SELLABLE_FLAG                 => fnd_api.g_miss_char
21191             ,p_NEW_SELLABLE_FLAG                 => p_instance_rec.SELLABLE_FLAG
21192             ,p_OLD_SYSTEM_ID                     => fnd_api.g_miss_num
21193             ,p_NEW_SYSTEM_ID                     => p_instance_rec.SYSTEM_ID
21194             ,p_OLD_INSTANCE_TYPE_CODE            => fnd_api.g_miss_char
21195             ,p_NEW_INSTANCE_TYPE_CODE            => p_instance_rec.INSTANCE_TYPE_CODE
21196             ,p_OLD_ACTIVE_START_DATE             => fnd_api.g_miss_date
21197             ,p_NEW_ACTIVE_START_DATE             => p_instance_rec.ACTIVE_START_DATE
21198             ,p_OLD_ACTIVE_END_DATE               => fnd_api.g_miss_date
21199             ,p_NEW_ACTIVE_END_DATE               => l_temp_date
21200             ,p_OLD_LOCATION_TYPE_CODE            => fnd_api.g_miss_char
21201             ,p_NEW_LOCATION_TYPE_CODE            => p_instance_rec.LOCATION_TYPE_CODE
21202             ,p_OLD_LOCATION_ID                   => fnd_api.g_miss_num
21203             ,p_NEW_LOCATION_ID                   => p_instance_rec.LOCATION_ID
21204             ,p_OLD_INV_ORGANIZATION_ID           => fnd_api.g_miss_num
21205             ,p_NEW_INV_ORGANIZATION_ID           => p_instance_rec.INV_ORGANIZATION_ID
21206             ,p_OLD_INV_SUBINVENTORY_NAME         => fnd_api.g_miss_char
21207             ,p_NEW_INV_SUBINVENTORY_NAME         => p_instance_rec.INV_SUBINVENTORY_NAME
21208             ,p_OLD_INV_LOCATOR_ID                => fnd_api.g_miss_num
21209             ,p_NEW_INV_LOCATOR_ID                => p_instance_rec.INV_LOCATOR_ID
21210             ,p_OLD_PA_PROJECT_ID                 => fnd_api.g_miss_num
21211             ,p_NEW_PA_PROJECT_ID                 => p_instance_rec.PA_PROJECT_ID
21212             ,p_OLD_PA_PROJECT_TASK_ID            => fnd_api.g_miss_num
21213             ,p_NEW_PA_PROJECT_TASK_ID            => p_instance_rec.PA_PROJECT_TASK_ID
21214             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => fnd_api.g_miss_num
21215             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => p_instance_rec.IN_TRANSIT_ORDER_LINE_ID
21216             ,p_OLD_WIP_JOB_ID                    => fnd_api.g_miss_num
21217             ,p_NEW_WIP_JOB_ID                    => p_instance_rec.WIP_JOB_ID
21218             ,p_OLD_PO_ORDER_LINE_ID              => fnd_api.g_miss_num
21219             ,p_NEW_PO_ORDER_LINE_ID              => p_instance_rec.PO_ORDER_LINE_ID
21220             ,p_OLD_COMPLETENESS_FLAG             => fnd_api.g_miss_char
21221             ,p_NEW_COMPLETENESS_FLAG             => p_instance_rec.COMPLETENESS_FLAG
21222             ,p_FULL_DUMP_FLAG                    => fnd_api.g_miss_char
21223             ,p_NEW_CONTEXT                       => p_instance_rec.CONTEXT
21224             ,P_OLD_CONTEXT                       => fnd_api.g_miss_char
21225             ,p_NEW_ATTRIBUTE1                    => p_instance_rec.ATTRIBUTE1
21226             ,p_OLD_ATTRIBUTE1                    => fnd_api.g_miss_char
21227             ,p_NEW_ATTRIBUTE2                    => p_instance_rec.ATTRIBUTE2
21228             ,p_OLD_ATTRIBUTE2                    => fnd_api.g_miss_char
21229             ,p_NEW_ATTRIBUTE3                    => p_instance_rec.ATTRIBUTE3
21230             ,p_OLD_ATTRIBUTE3                    => fnd_api.g_miss_char
21231             ,p_NEW_ATTRIBUTE4                    => p_instance_rec.ATTRIBUTE4
21232             ,p_OLD_ATTRIBUTE4                    => fnd_api.g_miss_char
21233             ,p_NEW_ATTRIBUTE5                    => p_instance_rec.ATTRIBUTE5
21234             ,p_OLD_ATTRIBUTE5                    => fnd_api.g_miss_char
21235             ,p_NEW_ATTRIBUTE6                    => p_instance_rec.ATTRIBUTE6
21236             ,p_OLD_ATTRIBUTE6                    => fnd_api.g_miss_char
21237             ,p_NEW_ATTRIBUTE7                    => p_instance_rec.ATTRIBUTE7
21238             ,p_OLD_ATTRIBUTE7                    => fnd_api.g_miss_char
21239             ,p_NEW_ATTRIBUTE8                    => p_instance_rec.ATTRIBUTE8
21240             ,p_OLD_ATTRIBUTE8                    => fnd_api.g_miss_char
21241             ,p_NEW_ATTRIBUTE9                    => p_instance_rec.ATTRIBUTE9
21242             ,p_OLD_ATTRIBUTE9                    => fnd_api.g_miss_char
21243             ,p_NEW_ATTRIBUTE10                   => p_instance_rec.ATTRIBUTE10
21244             ,p_OLD_ATTRIBUTE10                   => fnd_api.g_miss_char
21245             ,p_NEW_ATTRIBUTE11                   => p_instance_rec.ATTRIBUTE11
21246             ,p_OLD_ATTRIBUTE11                   => fnd_api.g_miss_char
21247             ,p_NEW_ATTRIBUTE12                   => p_instance_rec.ATTRIBUTE12
21248             ,p_OLD_ATTRIBUTE12                   => fnd_api.g_miss_char
21249             ,p_NEW_ATTRIBUTE13                   => p_instance_rec.ATTRIBUTE13
21250             ,p_OLD_ATTRIBUTE13                   => fnd_api.g_miss_char
21251             ,p_NEW_ATTRIBUTE14                   => p_instance_rec.ATTRIBUTE14
21252             ,p_OLD_ATTRIBUTE14                   => fnd_api.g_miss_char
21253             ,p_NEW_ATTRIBUTE15                   => p_instance_rec.ATTRIBUTE15
21254             ,p_OLD_ATTRIBUTE15                   => fnd_api.g_miss_char
21255             ,p_CREATED_BY                        => fnd_api.g_miss_num
21256             ,p_CREATION_DATE                     => fnd_api.g_miss_date
21257             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
21258             ,p_LAST_UPDATE_DATE                  => SYSDATE
21259             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
21260             ,p_OBJECT_VERSION_NUMBER             => fnd_api.g_miss_num
21261             ,p_OLD_INST_LOC_TYPE_CODE            => fnd_api.g_miss_char
21262             ,p_NEW_INST_LOC_TYPE_CODE            => p_instance_rec.INSTALL_LOCATION_TYPE_CODE
21263             ,p_OLD_INST_LOC_ID                   => fnd_api.g_miss_num
21264             ,p_NEW_INST_LOC_ID                   => p_instance_rec.INSTALL_LOCATION_ID
21265             ,p_OLD_INST_USAGE_CODE               => fnd_api.g_miss_char
21266             ,p_NEW_INST_USAGE_CODE               => p_instance_rec.INSTANCE_USAGE_CODE
21267             ,p_OLD_LAST_VLD_ORGANIZATION_ID      => fnd_api.g_miss_num
21268             ,p_NEW_LAST_VLD_ORGANIZATION_ID      => p_instance_rec.vld_organization_id
21269             ,p_OLD_CONFIG_INST_REV_NUM           => fnd_api.g_miss_num
21270             ,p_NEW_CONFIG_INST_REV_NUM           => p_instance_rec.CONFIG_INST_REV_NUM
21271             ,p_OLD_CONFIG_VALID_STATUS           => fnd_api.g_miss_char
21272             ,p_NEW_CONFIG_VALID_STATUS           => p_instance_rec.CONFIG_VALID_STATUS
21273             ,p_OLD_INSTANCE_DESCRIPTION          => fnd_api.g_miss_char
21274             ,p_NEW_INSTANCE_DESCRIPTION          => p_instance_rec.INSTANCE_DESCRIPTION
21275             ,p_OLD_INSTALL_DATE                  => fnd_api.g_miss_date
21276             ,p_NEW_INSTALL_DATE                  => p_instance_rec.INSTALL_DATE
21277             ,p_OLD_RETURN_BY_DATE                => fnd_api.g_miss_date
21278             ,p_NEW_RETURN_BY_DATE                => p_instance_rec.RETURN_BY_DATE
21279             ,p_OLD_ACTUAL_RETURN_DATE            => fnd_api.g_miss_date
21280             ,p_NEW_ACTUAL_RETURN_DATE            => p_instance_rec.ACTUAL_RETURN_DATE
21281             ,p_OLD_LAST_OE_AGREEMENT_ID          => fnd_api.g_miss_num
21282             ,p_NEW_LAST_OE_AGREEMENT_ID          => p_instance_rec.LAST_OE_AGREEMENT_ID
21283 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => fnd_api.g_miss_num
21284 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => p_instance_rec.LAST_OE_ORDER_LINE_ID
21285 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => fnd_api.g_miss_num
21286 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => p_instance_rec.LAST_OE_RMA_LINE_ID
21287 	    ,p_OLD_LAST_WIP_JOB_ID               => fnd_api.g_miss_num
21288 	    ,p_NEW_LAST_WIP_JOB_ID               => p_instance_rec.LAST_WIP_JOB_ID
21289 	    ,p_OLD_LAST_PO_PO_LINE_ID            => fnd_api.g_miss_num
21290 	    ,p_NEW_LAST_PO_PO_LINE_ID            => p_instance_rec.LAST_PO_PO_LINE_ID
21291 	    ,p_OLD_LAST_PA_PROJECT_ID            => fnd_api.g_miss_num
21292 	    ,p_NEW_LAST_PA_PROJECT_ID            => p_instance_rec.LAST_PA_PROJECT_ID
21293 	    ,p_OLD_LAST_PA_TASK_ID          => fnd_api.g_miss_num
21294 	    ,p_NEW_LAST_PA_TASK_ID          => p_instance_rec.LAST_PA_TASK_ID
21295 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => fnd_api.g_miss_num
21296 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => p_instance_rec.LAST_TXN_LINE_DETAIL_ID
21297 	    ,p_OLD_LAST_OE_PO_NUMBER             => fnd_api.g_miss_char
21298 	    ,p_NEW_LAST_OE_PO_NUMBER             => p_instance_rec.LAST_OE_PO_NUMBER
21299  	    --start of parameters addition for eam integration--
21300 	    ,p_OLD_NETWORK_ASSET_FLAG             => fnd_api.g_miss_char
21301 	    ,p_NEW_NETWORK_ASSET_FLAG             => p_instance_rec.NETWORK_ASSET_FLAG
21302 	    ,p_OLD_MAINTAINABLE_FLAG              => fnd_api.g_miss_char
21303 	    ,p_NEW_MAINTAINABLE_FLAG              => p_instance_rec.MAINTAINABLE_FLAG
21304 	    ,p_OLD_PN_LOCATION_ID                 => fnd_api.g_miss_num
21305 	    ,p_NEW_PN_LOCATION_ID                 => p_instance_rec.PN_LOCATION_ID
21306 	    ,p_OLD_ASSET_CRITICALITY_CODE         => fnd_api.g_miss_char
21307 	    ,p_NEW_ASSET_CRITICALITY_CODE         => p_instance_rec.ASSET_CRITICALITY_CODE
21308 	    ,p_OLD_CATEGORY_ID                    => fnd_api.g_miss_num
21309 	    ,p_NEW_CATEGORY_ID                    => p_instance_rec.CATEGORY_ID
21310 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => fnd_api.g_miss_num
21311 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => p_instance_rec.EQUIPMENT_GEN_OBJECT_ID
21312 	    ,p_OLD_INSTANTIATION_FLAG             => fnd_api.g_miss_char
21313 	    ,p_NEW_INSTANTIATION_FLAG             => p_instance_rec.INSTANTIATION_FLAG
21314 	    ,p_OLD_LINEAR_LOCATION_ID             => fnd_api.g_miss_num
21315 	    ,p_NEW_LINEAR_LOCATION_ID             => p_instance_rec.LINEAR_LOCATION_ID
21316 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => fnd_api.g_miss_char
21317 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => p_instance_rec.OPERATIONAL_LOG_FLAG
21318 	    ,p_OLD_CHECKIN_STATUS                 => fnd_api.g_miss_num
21319 	    ,p_NEW_CHECKIN_STATUS                 => p_instance_rec.CHECKIN_STATUS
21320 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => fnd_api.g_miss_date
21321 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => p_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
21322             ,p_OLD_ATTRIBUTE16                    => fnd_api.g_miss_char
21323             ,p_NEW_ATTRIBUTE16                    => p_instance_rec.ATTRIBUTE16
21324             ,p_OLD_ATTRIBUTE17                    => fnd_api.g_miss_char
21325             ,p_NEW_ATTRIBUTE17                    => p_instance_rec.ATTRIBUTE17
21326             ,p_OLD_ATTRIBUTE18                    => fnd_api.g_miss_char
21327             ,p_NEW_ATTRIBUTE18                    => p_instance_rec.ATTRIBUTE18
21328             ,p_OLD_ATTRIBUTE19                    => fnd_api.g_miss_char
21329             ,p_NEW_ATTRIBUTE19                    => p_instance_rec.ATTRIBUTE19
21330             ,p_OLD_ATTRIBUTE20                    => fnd_api.g_miss_char
21331             ,p_NEW_ATTRIBUTE20                    => p_instance_rec.ATTRIBUTE20
21332             ,p_OLD_ATTRIBUTE21                    => fnd_api.g_miss_char
21333             ,p_NEW_ATTRIBUTE21                    => p_instance_rec.ATTRIBUTE21
21334             ,p_OLD_ATTRIBUTE22                    => fnd_api.g_miss_char
21335             ,p_NEW_ATTRIBUTE22                    => p_instance_rec.ATTRIBUTE22
21336             ,p_OLD_ATTRIBUTE23                    => fnd_api.g_miss_char
21337             ,p_NEW_ATTRIBUTE23                    => p_instance_rec.ATTRIBUTE23
21338             ,p_OLD_ATTRIBUTE24                    => fnd_api.g_miss_char
21339             ,p_NEW_ATTRIBUTE24                    => p_instance_rec.ATTRIBUTE24
21340             ,p_OLD_ATTRIBUTE25                    => fnd_api.g_miss_char
21341             ,p_NEW_ATTRIBUTE25                    => p_instance_rec.ATTRIBUTE25
21342             ,p_OLD_ATTRIBUTE26                    => fnd_api.g_miss_char
21343             ,p_NEW_ATTRIBUTE26                    => p_instance_rec.ATTRIBUTE26
21344             ,p_OLD_ATTRIBUTE27                    => fnd_api.g_miss_char
21345             ,p_NEW_ATTRIBUTE27                    => p_instance_rec.ATTRIBUTE27
21346             ,p_OLD_ATTRIBUTE28                    => fnd_api.g_miss_char
21347             ,p_NEW_ATTRIBUTE28                    => p_instance_rec.ATTRIBUTE28
21348             ,p_OLD_ATTRIBUTE29                    => fnd_api.g_miss_char
21349             ,p_NEW_ATTRIBUTE29                    => p_instance_rec.ATTRIBUTE29
21350             ,p_OLD_ATTRIBUTE30                    => fnd_api.g_miss_char
21351             ,p_NEW_ATTRIBUTE30                    => p_instance_rec.ATTRIBUTE30
21352   	    --end of parameters addition for eam integration--
21353         -- Addition of columns for FA Integration
21354             ,p_OLD_PAYABLES_UNIT_PRICE            => fnd_api.g_miss_num
21355             ,p_NEW_PAYABLES_UNIT_PRICE            => p_instance_rec.PAYABLES_UNIT_PRICE
21356             ,p_OLD_PAYABLES_CURRENCY_CODE         => fnd_api.g_miss_char
21357             ,p_NEW_PAYABLES_CURRENCY_CODE         => p_instance_rec.PAYABLES_CURRENCY_CODE
21358             ,p_OLD_PURCHASE_UNIT_PRICE            => fnd_api.g_miss_num
21359             ,p_NEW_PURCHASE_UNIT_PRICE            => p_instance_rec.PURCHASE_UNIT_PRICE
21360             ,p_OLD_PURCHASE_CURRENCY_CODE         => fnd_api.g_miss_char
21361             ,p_NEW_PURCHASE_CURRENCY_CODE         => p_instance_rec.PURCHASE_CURRENCY_CODE
21362             ,p_OLD_SALES_UNIT_PRICE               => fnd_api.g_miss_num
21363             ,p_NEW_SALES_UNIT_PRICE               => p_instance_rec.SALES_UNIT_PRICE
21364             ,p_OLD_SALES_CURRENCY_CODE            => fnd_api.g_miss_char
21365             ,p_NEW_SALES_CURRENCY_CODE            => p_instance_rec.SALES_CURRENCY_CODE
21366             ,p_OLD_OPERATIONAL_STATUS_CODE        => fnd_api.g_miss_char
21367             ,p_NEW_OPERATIONAL_STATUS_CODE        => p_instance_rec.OPERATIONAL_STATUS_CODE
21368         -- End addition of columns for FA Integration
21369             ,p_OLD_SOURCE_CODE                    => fnd_api.g_miss_char
21370             ,p_NEW_SOURCE_CODE                    => p_instance_rec.SOURCE_CODE
21371             );
21372 
21373       EXCEPTION
21374         WHEN NO_DATA_FOUND THEN
21375 -- Get a unique history item instance id from the sequence
21376           l_csi_item_instance_h_id :=
21377                                  csi_item_instance_vld_pvt.get_csi_item_instance_h_id;
21378 
21379      IF (l_mod_value = 0) THEN
21380           -- If the mod value is 0 then dump all the columns both changed and unchanged
21381           -- changed columns have old and new values while the unchanged values have old and new values
21382           -- exactly same
21383        CSI_ITEM_INSTANCES_H_PKG.Insert_Row
21384            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
21385             ,p_INSTANCE_ID                       => p_instance_rec.instance_id
21386             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
21387             ,p_OLD_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
21388             ,p_NEW_INSTANCE_NUMBER               => l_curr_instance_rec.INSTANCE_NUMBER
21389             ,p_OLD_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
21390             ,p_NEW_EXTERNAL_REFERENCE            => l_curr_instance_rec.EXTERNAL_REFERENCE
21391             ,p_OLD_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
21392             ,p_NEW_INVENTORY_ITEM_ID             => l_curr_instance_rec.INVENTORY_ITEM_ID
21393             ,p_OLD_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
21394             ,p_NEW_INVENTORY_REVISION            => l_curr_instance_rec.INVENTORY_REVISION
21395             ,p_OLD_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
21396             ,p_NEW_INV_MASTER_ORGZN_ID           => l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID
21397             ,p_OLD_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
21398             ,p_NEW_SERIAL_NUMBER                 => l_curr_instance_rec.SERIAL_NUMBER
21399             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
21400             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG
21401             ,p_OLD_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
21402             ,p_NEW_LOT_NUMBER                    => l_curr_instance_rec.LOT_NUMBER
21403             ,p_OLD_QUANTITY                      => l_curr_instance_rec.QUANTITY
21404             ,p_NEW_QUANTITY                      => l_curr_instance_rec.QUANTITY
21405             ,p_OLD_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
21406             ,p_NEW_UNIT_OF_MEASURE               => l_curr_instance_rec.UNIT_OF_MEASURE
21407             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
21408             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_curr_instance_rec.ACCOUNTING_CLASS_CODE
21409             ,p_OLD_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
21410             ,p_NEW_INSTANCE_CONDITION_ID         => l_curr_instance_rec.INSTANCE_CONDITION_ID
21411             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
21412             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_rec.INSTANCE_STATUS_ID
21413             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
21414             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_curr_instance_rec.CUSTOMER_VIEW_FLAG
21415             ,p_OLD_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
21416             ,p_NEW_MERCHANT_VIEW_FLAG            => l_curr_instance_rec.MERCHANT_VIEW_FLAG
21417             ,p_OLD_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
21418             ,p_NEW_SELLABLE_FLAG                 => l_curr_instance_rec.SELLABLE_FLAG
21419             ,p_OLD_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
21420             ,p_NEW_SYSTEM_ID                     => l_curr_instance_rec.SYSTEM_ID
21421             ,p_OLD_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
21422             ,p_NEW_INSTANCE_TYPE_CODE            => l_curr_instance_rec.INSTANCE_TYPE_CODE
21423             ,p_OLD_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
21424             ,p_NEW_ACTIVE_START_DATE             => l_curr_instance_rec.ACTIVE_START_DATE
21425             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
21426             ,p_NEW_ACTIVE_END_DATE               => l_temp_date --SYSDATE
21427             ,p_OLD_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
21428             ,p_NEW_LOCATION_TYPE_CODE            => l_curr_instance_rec.LOCATION_TYPE_CODE
21429             ,p_OLD_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
21430             ,p_NEW_LOCATION_ID                   => l_curr_instance_rec.LOCATION_ID
21431             ,p_OLD_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
21432             ,p_NEW_INV_ORGANIZATION_ID           => l_curr_instance_rec.INV_ORGANIZATION_ID
21433             ,p_OLD_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
21434             ,p_NEW_INV_SUBINVENTORY_NAME         => l_curr_instance_rec.INV_SUBINVENTORY_NAME
21435             ,p_OLD_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
21436             ,p_NEW_INV_LOCATOR_ID                => l_curr_instance_rec.INV_LOCATOR_ID
21437             ,p_OLD_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
21438             ,p_NEW_PA_PROJECT_ID                 => l_curr_instance_rec.PA_PROJECT_ID
21439             ,p_OLD_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
21440             ,p_NEW_PA_PROJECT_TASK_ID            => l_curr_instance_rec.PA_PROJECT_TASK_ID
21441             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
21442             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID
21443             ,p_OLD_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
21444             ,p_NEW_WIP_JOB_ID                    => l_curr_instance_rec.WIP_JOB_ID
21445             ,p_OLD_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
21446             ,p_NEW_PO_ORDER_LINE_ID              => l_curr_instance_rec.PO_ORDER_LINE_ID
21447             ,p_OLD_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
21448             ,p_NEW_COMPLETENESS_FLAG             => l_curr_instance_rec.COMPLETENESS_FLAG
21449             ,p_FULL_DUMP_FLAG                    => 'Y'
21450             ,p_NEW_CONTEXT                       => l_curr_instance_rec.CONTEXT
21451             ,P_OLD_CONTEXT                       => l_curr_instance_rec.CONTEXT
21452             ,p_NEW_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
21453             ,p_OLD_ATTRIBUTE1                    => l_curr_instance_rec.ATTRIBUTE1
21454             ,p_NEW_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
21455             ,p_OLD_ATTRIBUTE2                    => l_curr_instance_rec.ATTRIBUTE2
21456             ,p_NEW_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
21457             ,p_OLD_ATTRIBUTE3                    => l_curr_instance_rec.ATTRIBUTE3
21458             ,p_NEW_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
21459             ,p_OLD_ATTRIBUTE4                    => l_curr_instance_rec.ATTRIBUTE4
21460             ,p_NEW_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
21461             ,p_OLD_ATTRIBUTE5                    => l_curr_instance_rec.ATTRIBUTE5
21462             ,p_NEW_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
21463             ,p_OLD_ATTRIBUTE6                    => l_curr_instance_rec.ATTRIBUTE6
21464             ,p_NEW_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
21465             ,p_OLD_ATTRIBUTE7                    => l_curr_instance_rec.ATTRIBUTE7
21466             ,p_NEW_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
21467             ,p_OLD_ATTRIBUTE8                    => l_curr_instance_rec.ATTRIBUTE8
21468             ,p_NEW_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
21469             ,p_OLD_ATTRIBUTE9                    => l_curr_instance_rec.ATTRIBUTE9
21470             ,p_NEW_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
21471             ,p_OLD_ATTRIBUTE10                   => l_curr_instance_rec.ATTRIBUTE10
21472             ,p_NEW_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
21473             ,p_OLD_ATTRIBUTE11                   => l_curr_instance_rec.ATTRIBUTE11
21474             ,p_NEW_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
21475             ,p_OLD_ATTRIBUTE12                   => l_curr_instance_rec.ATTRIBUTE12
21476             ,p_NEW_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
21477             ,p_OLD_ATTRIBUTE13                   => l_curr_instance_rec.ATTRIBUTE13
21478             ,p_NEW_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
21479             ,p_OLD_ATTRIBUTE14                   => l_curr_instance_rec.ATTRIBUTE14
21480             ,p_NEW_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
21481             ,p_OLD_ATTRIBUTE15                   => l_curr_instance_rec.ATTRIBUTE15
21482             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
21483             ,p_CREATION_DATE                     => SYSDATE
21484             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
21485             ,p_LAST_UPDATE_DATE                  => SYSDATE
21486             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
21487             ,p_OBJECT_VERSION_NUMBER             => 1
21488             ,p_OLD_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
21489             ,p_NEW_INST_LOC_TYPE_CODE            => l_curr_instance_rec.INSTALL_LOCATION_TYPE_CODE
21490             ,p_OLD_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
21491             ,p_NEW_INST_LOC_ID                   => l_curr_instance_rec.INSTALL_LOCATION_ID
21492             ,p_OLD_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
21493             ,p_NEW_INST_USAGE_CODE               => l_curr_instance_rec.INSTANCE_USAGE_CODE
21494             ,p_OLD_CONFIG_INST_REV_NUM           => l_curr_instance_rec.CONFIG_INST_REV_NUM
21495             ,p_NEW_CONFIG_INST_REV_NUM           => NULL -- l_curr_instance_rec.CONFIG_INST_REV_NUM
21496             ,p_OLD_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
21497             ,p_NEW_CONFIG_VALID_STATUS           => l_curr_instance_rec.CONFIG_VALID_STATUS
21498             ,p_OLD_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
21499             ,p_NEW_INSTANCE_DESCRIPTION          => l_curr_instance_rec.INSTANCE_DESCRIPTION
21500             ,p_OLD_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
21501             ,p_NEW_INSTALL_DATE                  => l_curr_instance_rec.INSTALL_DATE
21502             ,p_OLD_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
21503             ,p_NEW_RETURN_BY_DATE                => l_curr_instance_rec.RETURN_BY_DATE
21504             ,p_OLD_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
21505             ,p_NEW_ACTUAL_RETURN_DATE            => l_curr_instance_rec.ACTUAL_RETURN_DATE
21506             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
21507             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_curr_instance_rec.LAST_OE_AGREEMENT_ID
21508 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
21509 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_curr_instance_rec.LAST_OE_ORDER_LINE_ID
21510 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
21511 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_curr_instance_rec.LAST_OE_RMA_LINE_ID
21512 	    ,p_OLD_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
21513 	    ,p_NEW_LAST_WIP_JOB_ID               => l_curr_instance_rec.LAST_WIP_JOB_ID
21514 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
21515 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_curr_instance_rec.LAST_PO_PO_LINE_ID
21516 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
21517 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_curr_instance_rec.LAST_PA_PROJECT_ID
21518 	    ,p_OLD_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
21519 	    ,p_NEW_LAST_PA_TASK_ID          => l_curr_instance_rec.LAST_PA_TASK_ID
21520 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
21521 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID
21522 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
21523 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_curr_instance_rec.LAST_OE_PO_NUMBER
21524  	    --start of parameters addition for eam integration--
21525 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
21526 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_curr_instance_rec.NETWORK_ASSET_FLAG
21527 	    ,p_OLD_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
21528 	    ,p_NEW_MAINTAINABLE_FLAG              => l_curr_instance_rec.MAINTAINABLE_FLAG
21529 	    ,p_OLD_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
21530 	    ,p_NEW_PN_LOCATION_ID                 => l_curr_instance_rec.PN_LOCATION_ID
21531 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
21532 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_curr_instance_rec.ASSET_CRITICALITY_CODE
21533 	    ,p_OLD_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
21534 	    ,p_NEW_CATEGORY_ID                    => l_curr_instance_rec.CATEGORY_ID
21535 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
21536 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID
21537 	    ,p_OLD_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
21538 	    ,p_NEW_INSTANTIATION_FLAG             => l_curr_instance_rec.INSTANTIATION_FLAG
21539 	    ,p_OLD_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
21540 	    ,p_NEW_LINEAR_LOCATION_ID             => l_curr_instance_rec.LINEAR_LOCATION_ID
21541 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
21542 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_curr_instance_rec.OPERATIONAL_LOG_FLAG
21543 	    ,p_OLD_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
21544 	    ,p_NEW_CHECKIN_STATUS                 => l_curr_instance_rec.CHECKIN_STATUS
21545 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
21546 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
21547             ,p_OLD_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
21548             ,p_NEW_ATTRIBUTE16                    => l_curr_instance_rec.ATTRIBUTE16
21549             ,p_OLD_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
21550             ,p_NEW_ATTRIBUTE17                    => l_curr_instance_rec.ATTRIBUTE17
21551             ,p_OLD_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
21552             ,p_NEW_ATTRIBUTE18                    => l_curr_instance_rec.ATTRIBUTE18
21553             ,p_OLD_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
21554             ,p_NEW_ATTRIBUTE19                    => l_curr_instance_rec.ATTRIBUTE19
21555             ,p_OLD_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
21556             ,p_NEW_ATTRIBUTE20                    => l_curr_instance_rec.ATTRIBUTE20
21557             ,p_OLD_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
21558             ,p_NEW_ATTRIBUTE21                    => l_curr_instance_rec.ATTRIBUTE21
21559             ,p_OLD_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
21560             ,p_NEW_ATTRIBUTE22                    => l_curr_instance_rec.ATTRIBUTE22
21561             ,p_OLD_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
21562             ,p_NEW_ATTRIBUTE23                    => l_curr_instance_rec.ATTRIBUTE23
21563             ,p_OLD_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
21564             ,p_NEW_ATTRIBUTE24                    => l_curr_instance_rec.ATTRIBUTE24
21565             ,p_OLD_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
21566             ,p_NEW_ATTRIBUTE25                    => l_curr_instance_rec.ATTRIBUTE25
21567             ,p_OLD_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
21568             ,p_NEW_ATTRIBUTE26                    => l_curr_instance_rec.ATTRIBUTE26
21569             ,p_OLD_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
21570             ,p_NEW_ATTRIBUTE27                    => l_curr_instance_rec.ATTRIBUTE27
21571             ,p_OLD_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
21572             ,p_NEW_ATTRIBUTE28                    => l_curr_instance_rec.ATTRIBUTE28
21573             ,p_OLD_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
21574             ,p_NEW_ATTRIBUTE29                    => l_curr_instance_rec.ATTRIBUTE29
21575             ,p_OLD_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
21576             ,p_NEW_ATTRIBUTE30                    => l_curr_instance_rec.ATTRIBUTE30
21577   	    --end of parameters addition for eam integration--
21578 
21579    -- Addition of columns for FA Integration
21580             ,p_OLD_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
21581             ,p_NEW_PAYABLES_UNIT_PRICE            => l_curr_instance_rec.PAYABLES_UNIT_PRICE
21582             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
21583             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_curr_instance_rec.PAYABLES_CURRENCY_CODE
21584             ,p_OLD_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
21585             ,p_NEW_PURCHASE_UNIT_PRICE            => l_curr_instance_rec.PURCHASE_UNIT_PRICE
21586             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
21587             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_curr_instance_rec.PURCHASE_CURRENCY_CODE
21588             ,p_OLD_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
21589             ,p_NEW_SALES_UNIT_PRICE               => l_curr_instance_rec.SALES_UNIT_PRICE
21590             ,p_OLD_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
21591             ,p_NEW_SALES_CURRENCY_CODE            => l_curr_instance_rec.SALES_CURRENCY_CODE
21592             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
21593             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_curr_instance_rec.OPERATIONAL_STATUS_CODE
21594     -- End addition of columns for FA Integration
21595             -- Begin Add Code for Siebel Genesis Project
21596             ,p_OLD_SOURCE_CODE                    => l_curr_instance_rec.SOURCE_CODE
21597             ,p_NEW_SOURCE_CODE                    => l_instance_rec.SOURCE_CODE
21598             -- End Add Code for Siebel Genesis Project
21599             );
21600 
21601 
21602     ELSE
21603           -- If the mod value is not equal to zero then dump only the changed columns
21604           -- while the unchanged values have old and new values as null
21605        CSI_ITEM_INSTANCES_H_PKG.Insert_Row
21606            ( px_INSTANCE_HISTORY_ID              => l_csi_item_instance_h_id
21607             ,p_INSTANCE_ID                       => p_instance_rec.instance_id
21608             ,p_TRANSACTION_ID                    => p_txn_rec.TRANSACTION_ID
21609             ,p_OLD_INSTANCE_NUMBER               => l_instance_rec.INSTANCE_NUMBER
21610             ,p_NEW_INSTANCE_NUMBER               => l_instance_rec.INSTANCE_NUMBER
21611             ,p_OLD_EXTERNAL_REFERENCE            => l_instance_rec.EXTERNAL_REFERENCE
21612             ,p_NEW_EXTERNAL_REFERENCE            => l_instance_rec.EXTERNAL_REFERENCE
21613             ,p_OLD_INVENTORY_ITEM_ID             => l_instance_rec.INVENTORY_ITEM_ID
21614             ,p_NEW_INVENTORY_ITEM_ID             => l_instance_rec.INVENTORY_ITEM_ID
21615             ,p_OLD_INVENTORY_REVISION            => l_instance_rec.INVENTORY_REVISION
21616             ,p_NEW_INVENTORY_REVISION            => l_instance_rec.INVENTORY_REVISION
21617             ,p_OLD_INV_MASTER_ORGZN_ID           => l_instance_rec.INV_MASTER_ORGANIZATION_ID
21618             ,p_NEW_INV_MASTER_ORGZN_ID           => l_instance_rec.INV_MASTER_ORGANIZATION_ID
21619             ,p_OLD_SERIAL_NUMBER                 => l_instance_rec.SERIAL_NUMBER
21620             ,p_NEW_SERIAL_NUMBER                 => l_instance_rec.SERIAL_NUMBER
21621             ,p_OLD_MFG_SERIAL_NUMBER_FLAG        => l_instance_rec.MFG_SERIAL_NUMBER_FLAG
21622             ,p_NEW_MFG_SERIAL_NUMBER_FLAG        => l_instance_rec.MFG_SERIAL_NUMBER_FLAG
21623             ,p_OLD_LOT_NUMBER                    => l_instance_rec.LOT_NUMBER
21624             ,p_NEW_LOT_NUMBER                    => l_instance_rec.LOT_NUMBER
21625             ,p_OLD_QUANTITY                      => l_instance_rec.QUANTITY
21626             ,p_NEW_QUANTITY                      => l_instance_rec.QUANTITY
21627             ,p_OLD_UNIT_OF_MEASURE               => l_instance_rec.UNIT_OF_MEASURE
21628             ,p_NEW_UNIT_OF_MEASURE               => l_instance_rec.UNIT_OF_MEASURE
21629             ,p_OLD_ACCOUNTING_CLASS_CODE         => l_instance_rec.ACCOUNTING_CLASS_CODE
21630             ,p_NEW_ACCOUNTING_CLASS_CODE         => l_instance_rec.ACCOUNTING_CLASS_CODE
21631             ,p_OLD_INSTANCE_CONDITION_ID         => l_instance_rec.INSTANCE_CONDITION_ID
21632             ,p_NEW_INSTANCE_CONDITION_ID         => l_instance_rec.INSTANCE_CONDITION_ID
21633             ,p_OLD_INSTANCE_STATUS_ID            => l_curr_instance_rec.INSTANCE_STATUS_ID
21634             ,p_NEW_INSTANCE_STATUS_ID            => l_instance_rec.INSTANCE_STATUS_ID
21635             ,p_OLD_CUSTOMER_VIEW_FLAG            => l_instance_rec.CUSTOMER_VIEW_FLAG
21636             ,p_NEW_CUSTOMER_VIEW_FLAG            => l_instance_rec.CUSTOMER_VIEW_FLAG
21637             ,p_OLD_MERCHANT_VIEW_FLAG            => l_instance_rec.MERCHANT_VIEW_FLAG
21638             ,p_NEW_MERCHANT_VIEW_FLAG            => l_instance_rec.MERCHANT_VIEW_FLAG
21639             ,p_OLD_SELLABLE_FLAG                 => l_instance_rec.SELLABLE_FLAG
21640             ,p_NEW_SELLABLE_FLAG                 => l_instance_rec.SELLABLE_FLAG
21641             ,p_OLD_SYSTEM_ID                     => l_instance_rec.SYSTEM_ID
21642             ,p_NEW_SYSTEM_ID                     => l_instance_rec.SYSTEM_ID
21643             ,p_OLD_INSTANCE_TYPE_CODE            => l_instance_rec.INSTANCE_TYPE_CODE
21644             ,p_NEW_INSTANCE_TYPE_CODE            => l_instance_rec.INSTANCE_TYPE_CODE
21645             ,p_OLD_ACTIVE_START_DATE             => l_instance_rec.ACTIVE_START_DATE
21646             ,p_NEW_ACTIVE_START_DATE             => l_instance_rec.ACTIVE_START_DATE
21647             ,p_OLD_ACTIVE_END_DATE               => l_curr_instance_rec.ACTIVE_END_DATE
21648             ,p_NEW_ACTIVE_END_DATE               => l_temp_date--SYSDATE
21649             ,p_OLD_LOCATION_TYPE_CODE            => l_instance_rec.LOCATION_TYPE_CODE
21650             ,p_NEW_LOCATION_TYPE_CODE            => l_instance_rec.LOCATION_TYPE_CODE
21651             ,p_OLD_LOCATION_ID                   => l_instance_rec.LOCATION_ID
21652             ,p_NEW_LOCATION_ID                   => l_instance_rec.LOCATION_ID
21653             ,p_OLD_INV_ORGANIZATION_ID           => l_instance_rec.INV_ORGANIZATION_ID
21654             ,p_NEW_INV_ORGANIZATION_ID           => l_instance_rec.INV_ORGANIZATION_ID
21655             ,p_OLD_INV_SUBINVENTORY_NAME         => l_instance_rec.INV_SUBINVENTORY_NAME
21656             ,p_NEW_INV_SUBINVENTORY_NAME         => l_instance_rec.INV_SUBINVENTORY_NAME
21657             ,p_OLD_INV_LOCATOR_ID                => l_instance_rec.INV_LOCATOR_ID
21658             ,p_NEW_INV_LOCATOR_ID                => l_instance_rec.INV_LOCATOR_ID
21659             ,p_OLD_PA_PROJECT_ID                 => l_instance_rec.PA_PROJECT_ID
21660             ,p_NEW_PA_PROJECT_ID                 => l_instance_rec.PA_PROJECT_ID
21661             ,p_OLD_PA_PROJECT_TASK_ID            => l_instance_rec.PA_PROJECT_TASK_ID
21662             ,p_NEW_PA_PROJECT_TASK_ID            => l_instance_rec.PA_PROJECT_TASK_ID
21663             ,p_OLD_IN_TRANSIT_ORDER_LINE_ID      => l_instance_rec.IN_TRANSIT_ORDER_LINE_ID
21664             ,p_NEW_IN_TRANSIT_ORDER_LINE_ID      => l_instance_rec.IN_TRANSIT_ORDER_LINE_ID
21665             ,p_OLD_WIP_JOB_ID                    => l_instance_rec.WIP_JOB_ID
21666             ,p_NEW_WIP_JOB_ID                    => l_instance_rec.WIP_JOB_ID
21667             ,p_OLD_PO_ORDER_LINE_ID              => l_instance_rec.PO_ORDER_LINE_ID
21668             ,p_NEW_PO_ORDER_LINE_ID              => l_instance_rec.PO_ORDER_LINE_ID
21669             ,p_OLD_COMPLETENESS_FLAG             => l_instance_rec.COMPLETENESS_FLAG
21670             ,p_NEW_COMPLETENESS_FLAG             => l_instance_rec.COMPLETENESS_FLAG
21671             ,p_FULL_DUMP_FLAG                    => 'N'
21672             ,p_NEW_CONTEXT                       => l_instance_rec.CONTEXT
21673             ,P_OLD_CONTEXT                       => l_instance_rec.CONTEXT
21674             ,p_NEW_ATTRIBUTE1                    => l_instance_rec.ATTRIBUTE1
21675             ,p_OLD_ATTRIBUTE1                    => l_instance_rec.ATTRIBUTE1
21676             ,p_NEW_ATTRIBUTE2                    => l_instance_rec.ATTRIBUTE2
21677             ,p_OLD_ATTRIBUTE2                    => l_instance_rec.ATTRIBUTE2
21678             ,p_NEW_ATTRIBUTE3                    => l_instance_rec.ATTRIBUTE3
21679             ,p_OLD_ATTRIBUTE3                    => l_instance_rec.ATTRIBUTE3
21680             ,p_NEW_ATTRIBUTE4                    => l_instance_rec.ATTRIBUTE4
21681             ,p_OLD_ATTRIBUTE4                    => l_instance_rec.ATTRIBUTE4
21682             ,p_NEW_ATTRIBUTE5                    => l_instance_rec.ATTRIBUTE5
21683             ,p_OLD_ATTRIBUTE5                    => l_instance_rec.ATTRIBUTE5
21684             ,p_NEW_ATTRIBUTE6                    => l_instance_rec.ATTRIBUTE6
21685             ,p_OLD_ATTRIBUTE6                    => l_instance_rec.ATTRIBUTE6
21686             ,p_NEW_ATTRIBUTE7                    => l_instance_rec.ATTRIBUTE7
21687             ,p_OLD_ATTRIBUTE7                    => l_instance_rec.ATTRIBUTE7
21688             ,p_NEW_ATTRIBUTE8                    => l_instance_rec.ATTRIBUTE8
21689             ,p_OLD_ATTRIBUTE8                    => l_instance_rec.ATTRIBUTE8
21690             ,p_NEW_ATTRIBUTE9                    => l_instance_rec.ATTRIBUTE9
21691             ,p_OLD_ATTRIBUTE9                    => l_instance_rec.ATTRIBUTE9
21692             ,p_NEW_ATTRIBUTE10                   => l_instance_rec.ATTRIBUTE10
21693             ,p_OLD_ATTRIBUTE10                   => l_instance_rec.ATTRIBUTE10
21694             ,p_NEW_ATTRIBUTE11                   => l_instance_rec.ATTRIBUTE11
21695             ,p_OLD_ATTRIBUTE11                   => l_instance_rec.ATTRIBUTE11
21696             ,p_NEW_ATTRIBUTE12                   => l_instance_rec.ATTRIBUTE12
21697             ,p_OLD_ATTRIBUTE12                   => l_instance_rec.ATTRIBUTE12
21698             ,p_NEW_ATTRIBUTE13                   => l_instance_rec.ATTRIBUTE13
21699             ,p_OLD_ATTRIBUTE13                   => l_instance_rec.ATTRIBUTE13
21700             ,p_NEW_ATTRIBUTE14                   => l_instance_rec.ATTRIBUTE14
21701             ,p_OLD_ATTRIBUTE14                   => l_instance_rec.ATTRIBUTE14
21702             ,p_NEW_ATTRIBUTE15                   => l_instance_rec.ATTRIBUTE15
21703             ,p_OLD_ATTRIBUTE15                   => l_instance_rec.ATTRIBUTE15
21704             ,p_CREATED_BY                        => FND_GLOBAL.USER_ID
21705             ,p_CREATION_DATE                     => SYSDATE
21706             ,p_LAST_UPDATED_BY                   => FND_GLOBAL.USER_ID
21707             ,p_LAST_UPDATE_DATE                  => SYSDATE
21708             ,p_LAST_UPDATE_LOGIN                 => FND_GLOBAL.CONC_LOGIN_ID
21709             ,p_OBJECT_VERSION_NUMBER             => 1
21710             ,p_OLD_INST_LOC_TYPE_CODE            => l_instance_rec.INSTALL_LOCATION_TYPE_CODE
21711             ,p_NEW_INST_LOC_TYPE_CODE            => l_instance_rec.INSTALL_LOCATION_TYPE_CODE
21712             ,p_OLD_INST_LOC_ID                   => l_instance_rec.INSTALL_LOCATION_ID
21713             ,p_NEW_INST_LOC_ID                   => l_instance_rec.INSTALL_LOCATION_ID
21714             ,p_OLD_INST_USAGE_CODE               => l_instance_rec.INSTANCE_USAGE_CODE
21715             ,p_NEW_INST_USAGE_CODE               => l_instance_rec.INSTANCE_USAGE_CODE
21716             ,p_OLD_CONFIG_INST_REV_NUM           => l_instance_rec.CONFIG_INST_REV_NUM
21717             ,p_NEW_CONFIG_INST_REV_NUM           => NULL -- l_instance_rec.CONFIG_INST_REV_NUM
21718             ,p_OLD_CONFIG_VALID_STATUS           => l_instance_rec.CONFIG_VALID_STATUS
21719             ,p_NEW_CONFIG_VALID_STATUS           => l_instance_rec.CONFIG_VALID_STATUS
21720             ,p_OLD_INSTANCE_DESCRIPTION          => l_instance_rec.INSTANCE_DESCRIPTION
21721             ,p_NEW_INSTANCE_DESCRIPTION          => l_instance_rec.INSTANCE_DESCRIPTION
21722             ,p_OLD_INSTALL_DATE                  => l_instance_rec.INSTALL_DATE
21723             ,p_NEW_INSTALL_DATE                  => l_instance_rec.INSTALL_DATE
21724             ,p_OLD_RETURN_BY_DATE                => l_instance_rec.RETURN_BY_DATE
21725             ,p_NEW_RETURN_BY_DATE                => l_instance_rec.RETURN_BY_DATE
21726             ,p_OLD_ACTUAL_RETURN_DATE            => l_instance_rec.ACTUAL_RETURN_DATE
21727             ,p_NEW_ACTUAL_RETURN_DATE            => l_instance_rec.ACTUAL_RETURN_DATE
21728             ,p_OLD_LAST_OE_AGREEMENT_ID          => l_instance_rec.LAST_OE_AGREEMENT_ID
21729             ,p_NEW_LAST_OE_AGREEMENT_ID          => l_instance_rec.LAST_OE_AGREEMENT_ID
21730 	    ,p_OLD_LAST_OE_ORDER_LINE_ID         => l_instance_rec.LAST_OE_ORDER_LINE_ID
21731 	    ,p_NEW_LAST_OE_ORDER_LINE_ID         => l_instance_rec.LAST_OE_ORDER_LINE_ID
21732 	    ,p_OLD_LAST_OE_RMA_LINE_ID        => l_instance_rec.LAST_OE_RMA_LINE_ID
21733 	    ,p_NEW_LAST_OE_RMA_LINE_ID        => l_instance_rec.LAST_OE_RMA_LINE_ID
21734 	    ,p_OLD_LAST_WIP_JOB_ID               => l_instance_rec.LAST_WIP_JOB_ID
21735 	    ,p_NEW_LAST_WIP_JOB_ID               => l_instance_rec.LAST_WIP_JOB_ID
21736 	    ,p_OLD_LAST_PO_PO_LINE_ID            => l_instance_rec.LAST_PO_PO_LINE_ID
21737 	    ,p_NEW_LAST_PO_PO_LINE_ID            => l_instance_rec.LAST_PO_PO_LINE_ID
21738 	    ,p_OLD_LAST_PA_PROJECT_ID            => l_instance_rec.LAST_PA_PROJECT_ID
21739 	    ,p_NEW_LAST_PA_PROJECT_ID            => l_instance_rec.LAST_PA_PROJECT_ID
21740 	    ,p_OLD_LAST_PA_TASK_ID          => l_instance_rec.LAST_PA_TASK_ID
21741 	    ,p_NEW_LAST_PA_TASK_ID          => l_instance_rec.LAST_PA_TASK_ID
21742 	    ,p_OLD_LAST_TXN_LINE_DETAIL_ID       => l_instance_rec.LAST_TXN_LINE_DETAIL_ID
21743 	    ,p_NEW_LAST_TXN_LINE_DETAIL_ID       => l_instance_rec.LAST_TXN_LINE_DETAIL_ID
21744 	    ,p_OLD_LAST_OE_PO_NUMBER             => l_instance_rec.LAST_OE_PO_NUMBER
21745 	    ,p_NEW_LAST_OE_PO_NUMBER             => l_instance_rec.LAST_OE_PO_NUMBER
21746  	    --start of parameters addition for eam integration--
21747 	    ,p_OLD_NETWORK_ASSET_FLAG             => l_instance_rec.NETWORK_ASSET_FLAG
21748 	    ,p_NEW_NETWORK_ASSET_FLAG             => l_instance_rec.NETWORK_ASSET_FLAG
21749 	    ,p_OLD_MAINTAINABLE_FLAG              => l_instance_rec.MAINTAINABLE_FLAG
21750 	    ,p_NEW_MAINTAINABLE_FLAG              => l_instance_rec.MAINTAINABLE_FLAG
21751 	    ,p_OLD_PN_LOCATION_ID                 => l_instance_rec.PN_LOCATION_ID
21752 	    ,p_NEW_PN_LOCATION_ID                 => l_instance_rec.PN_LOCATION_ID
21753 	    ,p_OLD_ASSET_CRITICALITY_CODE         => l_instance_rec.ASSET_CRITICALITY_CODE
21754 	    ,p_NEW_ASSET_CRITICALITY_CODE         => l_instance_rec.ASSET_CRITICALITY_CODE
21755 	    ,p_OLD_CATEGORY_ID                    => l_instance_rec.CATEGORY_ID
21756 	    ,p_NEW_CATEGORY_ID                    => l_instance_rec.CATEGORY_ID
21757 	    ,p_OLD_EQUIPMENT_GEN_OBJECT_ID        => l_instance_rec.EQUIPMENT_GEN_OBJECT_ID
21758 	    ,p_NEW_EQUIPMENT_GEN_OBJECT_ID        => l_instance_rec.EQUIPMENT_GEN_OBJECT_ID
21759 	    ,p_OLD_INSTANTIATION_FLAG             => l_instance_rec.INSTANTIATION_FLAG
21760 	    ,p_NEW_INSTANTIATION_FLAG             => l_instance_rec.INSTANTIATION_FLAG
21761 	    ,p_OLD_LINEAR_LOCATION_ID             => l_instance_rec.LINEAR_LOCATION_ID
21762 	    ,p_NEW_LINEAR_LOCATION_ID             => l_instance_rec.LINEAR_LOCATION_ID
21763 	    ,p_OLD_OPERATIONAL_LOG_FLAG           => l_instance_rec.OPERATIONAL_LOG_FLAG
21764 	    ,p_NEW_OPERATIONAL_LOG_FLAG           => l_instance_rec.OPERATIONAL_LOG_FLAG
21765 	    ,p_OLD_CHECKIN_STATUS                 => l_instance_rec.CHECKIN_STATUS
21766 	    ,p_NEW_CHECKIN_STATUS                 => l_instance_rec.CHECKIN_STATUS
21767 	    ,p_OLD_SUP_WARRANTY_EXP_DATE          => l_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
21768 	    ,p_NEW_SUP_WARRANTY_EXP_DATE          => l_instance_rec.SUPPLIER_WARRANTY_EXP_DATE
21769             ,p_OLD_ATTRIBUTE16                    => l_instance_rec.ATTRIBUTE16
21770             ,p_NEW_ATTRIBUTE16                    => l_instance_rec.ATTRIBUTE16
21771             ,p_OLD_ATTRIBUTE17                    => l_instance_rec.ATTRIBUTE17
21772             ,p_NEW_ATTRIBUTE17                    => l_instance_rec.ATTRIBUTE17
21773             ,p_OLD_ATTRIBUTE18                    => l_instance_rec.ATTRIBUTE18
21774             ,p_NEW_ATTRIBUTE18                    => l_instance_rec.ATTRIBUTE18
21775             ,p_OLD_ATTRIBUTE19                    => l_instance_rec.ATTRIBUTE19
21776             ,p_NEW_ATTRIBUTE19                    => l_instance_rec.ATTRIBUTE19
21777             ,p_OLD_ATTRIBUTE20                    => l_instance_rec.ATTRIBUTE20
21778             ,p_NEW_ATTRIBUTE20                    => l_instance_rec.ATTRIBUTE20
21779             ,p_OLD_ATTRIBUTE21                    => l_instance_rec.ATTRIBUTE21
21780             ,p_NEW_ATTRIBUTE21                    => l_instance_rec.ATTRIBUTE21
21781             ,p_OLD_ATTRIBUTE22                    => l_instance_rec.ATTRIBUTE22
21782             ,p_NEW_ATTRIBUTE22                    => l_instance_rec.ATTRIBUTE22
21783             ,p_OLD_ATTRIBUTE23                    => l_instance_rec.ATTRIBUTE23
21784             ,p_NEW_ATTRIBUTE23                    => l_instance_rec.ATTRIBUTE23
21785             ,p_OLD_ATTRIBUTE24                    => l_instance_rec.ATTRIBUTE24
21786             ,p_NEW_ATTRIBUTE24                    => l_instance_rec.ATTRIBUTE24
21787             ,p_OLD_ATTRIBUTE25                    => l_instance_rec.ATTRIBUTE25
21788             ,p_NEW_ATTRIBUTE25                    => l_instance_rec.ATTRIBUTE25
21789             ,p_OLD_ATTRIBUTE26                    => l_instance_rec.ATTRIBUTE26
21790             ,p_NEW_ATTRIBUTE26                    => l_instance_rec.ATTRIBUTE26
21791             ,p_OLD_ATTRIBUTE27                    => l_instance_rec.ATTRIBUTE27
21792             ,p_NEW_ATTRIBUTE27                    => l_instance_rec.ATTRIBUTE27
21793             ,p_OLD_ATTRIBUTE28                    => l_instance_rec.ATTRIBUTE28
21794             ,p_NEW_ATTRIBUTE28                    => l_instance_rec.ATTRIBUTE28
21795             ,p_OLD_ATTRIBUTE29                    => l_instance_rec.ATTRIBUTE29
21796             ,p_NEW_ATTRIBUTE29                    => l_instance_rec.ATTRIBUTE29
21797             ,p_OLD_ATTRIBUTE30                    => l_instance_rec.ATTRIBUTE30
21798             ,p_NEW_ATTRIBUTE30                    => l_instance_rec.ATTRIBUTE30
21799   	    --end of parameters addition for eam integration--
21800    -- Addition of columns for FA Integration
21801             ,p_OLD_PAYABLES_UNIT_PRICE            => l_instance_rec.PAYABLES_UNIT_PRICE
21802             ,p_NEW_PAYABLES_UNIT_PRICE            => l_instance_rec.PAYABLES_UNIT_PRICE
21803             ,p_OLD_PAYABLES_CURRENCY_CODE         => l_instance_rec.PAYABLES_CURRENCY_CODE
21804             ,p_NEW_PAYABLES_CURRENCY_CODE         => l_instance_rec.PAYABLES_CURRENCY_CODE
21805             ,p_OLD_PURCHASE_UNIT_PRICE            => l_instance_rec.PURCHASE_UNIT_PRICE
21806             ,p_NEW_PURCHASE_UNIT_PRICE            => l_instance_rec.PURCHASE_UNIT_PRICE
21807             ,p_OLD_PURCHASE_CURRENCY_CODE         => l_instance_rec.PURCHASE_CURRENCY_CODE
21808             ,p_NEW_PURCHASE_CURRENCY_CODE         => l_instance_rec.PURCHASE_CURRENCY_CODE
21809             ,p_OLD_SALES_UNIT_PRICE               => l_instance_rec.SALES_UNIT_PRICE
21810             ,p_NEW_SALES_UNIT_PRICE               => l_instance_rec.SALES_UNIT_PRICE
21811             ,p_OLD_SALES_CURRENCY_CODE            => l_instance_rec.SALES_CURRENCY_CODE
21812             ,p_NEW_SALES_CURRENCY_CODE            => l_instance_rec.SALES_CURRENCY_CODE
21813             ,p_OLD_OPERATIONAL_STATUS_CODE        => l_instance_rec.OPERATIONAL_STATUS_CODE
21814             ,p_NEW_OPERATIONAL_STATUS_CODE        => l_instance_rec.OPERATIONAL_STATUS_CODE
21815     -- End addition of columns for FA Integration
21816             -- Begin Add Code for Siebel Genesis Project
21817             ,p_OLD_SOURCE_CODE                   => l_curr_instance_rec.SOURCE_CODE
21818             ,p_NEW_SOURCE_CODE                   => l_instance_rec.SOURCE_CODE
21819             -- End Add Code for Siebel Genesis Project
21820             );
21821 
21822 
21823      END IF;
21824       END; -- End for update row, bug 6788183
21825        IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
21826             RAISE FND_API.G_EXC_ERROR;
21827 
21828        END IF;
21829 
21830       -- Calling eam API to log instance update event
21831        IF l_eam_item
21832        THEN
21833           IF l_ins_hist_id IS NOT NULL
21834           THEN
21835              l_instance_history_id:=l_ins_hist_id;
21836           ELSE
21837              l_instance_history_id:=l_csi_item_instance_h_id;
21838           END IF;
21839           eam_asset_log_pvt.instance_update_event
21840           (p_api_version         => p_api_version
21841           ,p_init_msg_list       => fnd_api.g_false
21842           ,p_commit              => fnd_api.g_false
21843           ,p_validation_level    => fnd_api.g_valid_level_full
21844           ,x_return_status       => x_return_status
21845           ,x_msg_count           => x_msg_count
21846           ,x_msg_data            => x_msg_data
21847           ,p_instance_id         => p_instance_rec.instance_id
21848           ,p_ref_id              => l_instance_history_id
21849           ,p_event_date          => sysdate);
21850          IF NOT(x_return_status = fnd_api.g_ret_sts_success)
21851          THEN
21852             csi_gen_utility_pvt.put_line('Error from eam_asset_log_pvt.instance_update_event API');
21853             RAISE fnd_api.g_exc_error;
21854          END IF;
21855        END IF;
21856       -- Calling eam API to log instance update event
21857 
21858        -- srramakr Bug # 3945813 We no longer look for service_order_allowed_flag to decide
21859        -- whether contracts should be terminated or not. Instead, we look for terminated_flag.
21860        -- Before terminating the contract check whether the service_order_allowed_flag is set to 'N'
21861        -- for the instance_status passed. If set to 'Y' there will be no call  to contracts.
21862        OPEN  instance_csr (p_instance_rec.instance_id);
21863        FETCH instance_csr INTO l_instance_csr;
21864        CLOSE instance_csr;
21865 
21866        IF csi_item_instance_vld_pvt.termination_status
21867           ( p_instance_status_id => l_instance_csr.instance_status_id )
21868        THEN
21869          IF p_txn_rec.transaction_type_id in (53,54) THEN
21870             l_oks_txn_type := 'RET';
21871          ELSE
21872             l_oks_txn_type := 'TRM';
21873          END IF;
21874          csi_item_instance_pvt.Call_to_Contracts
21875          ( p_transaction_type   =>   l_oks_txn_type
21876           ,p_instance_id        =>   p_instance_rec.instance_id
21877           ,p_new_instance_id    =>   NULL
21878           ,p_vld_org_id         =>   p_instance_rec.vld_organization_id
21879           ,p_quantity           =>   NULL
21880           ,p_party_account_id1  =>   NULL
21881           ,p_party_account_id2  =>   NULL
21882           ,p_transaction_date   =>   p_txn_rec.transaction_date -- l_temp_date
21883           ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- l_temp_date
21884 	  ,p_txn_type_id        => p_txn_rec.transaction_type_id -- added for  BUG  5752271
21885           ,p_grp_call_contracts =>   p_instance_rec.grp_call_contracts
21886           ,p_oks_txn_inst_tbl   =>   p_oks_txn_inst_tbl
21887           ,x_return_status      =>   x_return_status
21888           ,x_msg_count          =>   x_msg_count
21889           ,x_msg_data           =>   x_msg_data
21890           );
21891 
21892            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
21893                   l_msg_index := 1;
21894                   l_msg_count := x_msg_count;
21895               WHILE l_msg_count > 0 LOOP
21896                 x_msg_data := FND_MSG_PUB.GET
21897                               (  l_msg_index,
21898                                  FND_API.G_FALSE
21899                                );
21900                 csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
21901                     l_msg_index := l_msg_index + 1;
21902                     l_msg_count := l_msg_count - 1;
21903               END LOOP;
21904                 RAISE FND_API.G_EXC_ERROR;
21905            END IF;
21906        END IF;
21907 
21908       --
21909       -- End of API body
21910 
21911       -- Standard check of p_commit.
21912       IF FND_API.To_Boolean( p_commit ) THEN
21913             COMMIT WORK;
21914       END IF;
21915 
21916       -- Standard call to get message count and if count is  get message info.
21917       FND_MSG_PUB.Count_And_Get
21918             (p_encoded => FND_API.G_FALSE,
21919                  p_count   =>   x_msg_count ,
21920              p_data    =>   x_msg_data
21921             );
21922 
21923 EXCEPTION
21924 
21925     WHEN FND_API.G_EXC_ERROR THEN
21926             ROLLBACK TO expire_item_instance_pvt;
21927             x_return_status := FND_API.G_RET_STS_ERROR ;
21928             FND_MSG_PUB.Count_And_Get
21929                 (p_encoded =>  FND_API.G_FALSE,
21930                  p_count   =>  x_msg_count,
21931                  p_data    =>  x_msg_data
21932                 );
21933 
21934     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
21935             ROLLBACK TO expire_item_instance_pvt;
21936             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
21937             FND_MSG_PUB.Count_And_Get
21938                 (p_encoded => FND_API.G_FALSE,
21939                  p_count   =>  x_msg_count,
21940                  p_data    =>  x_msg_data
21941                 );
21942     WHEN OTHERS THEN
21943             ROLLBACK TO expire_item_instance_pvt;
21944             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
21945               IF FND_MSG_PUB.Check_Msg_Level
21946                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
21947               THEN
21948                   FND_MSG_PUB.Add_Exc_Msg
21949                  ( G_PKG_NAME, l_api_name );
21950               END IF;
21951                   FND_MSG_PUB.Count_And_Get
21952                  ( p_encoded => FND_API.G_FALSE,
21953                  p_count  =>  x_msg_count,
21954                    p_data   =>  x_msg_data
21955                 );
21956 
21957 END expire_item_instance;
21958 
21959 /*--------------------------------------------------------*/
21960 /* Procedure name:  Split_Item_Instance                   */
21961 /* Description   :  This procedure is used to create split*/
21962 /*                  lines for instance                    */
21963 /*--------------------------------------------------------*/
21964 
21965 
21966  PROCEDURE Split_Item_Instance
21967  (
21968    p_api_version                 IN      NUMBER
21969   ,p_commit                      IN      VARCHAR2
21970   ,p_init_msg_list               IN      VARCHAR2
21971   ,p_validation_level            IN      NUMBER
21972   ,p_source_instance_rec         IN OUT  NOCOPY csi_datastructures_pub.instance_rec
21973   ,p_quantity1                   IN      NUMBER
21974   ,p_quantity2                   IN      NUMBER
21975   ,p_copy_ext_attribs            IN      VARCHAR2
21976   ,p_copy_org_assignments        IN      VARCHAR2
21977   ,p_copy_parties                IN      VARCHAR2
21978 --  ,p_copy_contacts               IN      VARCHAR2 := fnd_api.g_true
21979   ,p_copy_accounts               IN      VARCHAR2
21980   ,p_copy_asset_assignments      IN      VARCHAR2
21981   ,p_copy_pricing_attribs        IN      VARCHAR2
21982   ,p_txn_rec                     IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
21983   ,x_new_instance_rec            OUT     NOCOPY csi_datastructures_pub.instance_rec
21984   ,x_return_status               OUT     NOCOPY VARCHAR2
21985   ,x_msg_count                   OUT     NOCOPY NUMBER
21986   ,x_msg_data                    OUT     NOCOPY VARCHAR2
21987  )
21988 
21989 IS
21990     l_api_name              CONSTANT VARCHAR2(30)   := 'SPLIT_ITEM_INSTANCE';
21991     l_api_version           CONSTANT NUMBER         := 1.0;
21992     l_debug_level           NUMBER;
21993     l_serialized            NUMBER;
21994     l_return_value          BOOLEAN;
21995     l_object_version_number NUMBER;
21996     l_quantity              NUMBER;
21997     l_instance_id_lst       csi_datastructures_pub.id_tbl;
21998     l_new_instance_rec      csi_datastructures_pub.instance_rec;
21999     l_new_instance_tbl      csi_datastructures_pub.instance_tbl;
22000     l_msg_data              VARCHAR2(2000);
22001     l_msg_index             NUMBER;
22002     l_msg_count             NUMBER;
22003     x_msg_index_out         NUMBER;
22004     l_old_oks_cp_rec        oks_ibint_pub.cp_rec_type;
22005     l_new_oks_cp_rec        oks_ibint_pub.cp_rec_type;
22006     l_transaction_type      VARCHAR2(10);
22007     l_source_instance_rec   csi_datastructures_pub.instance_rec := p_source_instance_rec;
22008     l_contracts_status      VARCHAR2(3);
22009     l_new_instance_rec1     csi_datastructures_pub.instance_rec;
22010     l_internal_party_id     NUMBER;
22011     l_item_attribute_tbl    csi_item_instance_pvt.item_attribute_tbl;
22012     l_location_tbl          csi_item_instance_pvt.location_tbl;
22013     l_generic_id_tbl        csi_item_instance_pvt.generic_id_tbl;
22014     l_lookup_tbl            csi_item_instance_pvt.lookup_tbl;
22015     l_ins_count_rec         csi_item_instance_pvt.ins_count_rec;
22016     l_relationship_tbl      csi_datastructures_pub.ii_relationship_tbl;
22017     --
22018     px_oks_txn_inst_tbl     oks_ibint_pub.txn_instance_tbl;
22019     px_child_inst_tbl       csi_item_instance_grp.child_inst_tbl;
22020     l_batch_type            VARCHAR2(50);
22021     l_batch_id              NUMBER;
22022     --
22023     CURSOR c1 is
22024       SELECT serial_number_control_code
22025       FROM   mtl_system_items
22026       WHERE  inventory_item_id = p_source_instance_rec.inventory_item_id
22027       AND    organization_id   = p_source_instance_rec.vld_organization_id
22028       AND    enabled_flag = 'Y'
22029       AND    nvl (start_date_active, sysdate) <= sysdate
22030       AND    nvl (end_date_active, sysdate+1) > sysdate;
22031 
22032     l_account_id            NUMBER;
22033     l_dummy                 NUMBER;
22034 BEGIN
22035     -- Standard Start of API savepoint
22036        SAVEPOINT      split_item_instance_pvt;
22037 
22038     -- Standard call to check for call compatibility.
22039        IF NOT FND_API.Compatible_API_Call (l_api_version,
22040                                            p_api_version,
22041                                            l_api_name,
22042                                            G_PKG_NAME  )
22043        THEN
22044             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
22045        END IF;
22046 
22047     -- Initialize message list if p_init_msg_list is set to TRUE.
22048        IF FND_API.to_Boolean( p_init_msg_list ) THEN
22049              FND_MSG_PUB.initialize;
22050        END IF;
22051 
22052     -- Initialize API return status to success
22053        x_return_status := FND_API.G_RET_STS_SUCCESS;
22054 
22055         -- Check the profile option debug_level for debug message reporting
22056         l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
22057 
22058        --  If debug_level = 1 then dump the procedure name
22059          IF (l_debug_level > 0) THEN
22060             csi_gen_utility_pvt.put_line ( 'split_item_instance_pvt');
22061          END IF;
22062 
22063        -- If the debug level = 2 then dump all the parameters values.
22064          IF (l_debug_level > 1) THEN
22065                csi_gen_utility_pvt.put_line ('split_item_instance_pvt' ||
22066                                                    p_api_version      ||'-'||
22067                                                    p_commit           ||'-'||
22068                                                    p_init_msg_list          );
22069                -- Dump the records in the log file
22070                csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
22071                csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
22072          END IF;
22073 
22074        -- Start API body
22075 
22076 --check for the required parameters
22077          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
22078              (    p_source_instance_rec.INSTANCE_ID  ,
22079                 '  p_source_instance_rec.INSTANCE_ID ',
22080                    l_api_name
22081              );
22082 --validation for serialized or not
22083 
22084       IF   p_source_instance_rec.location_type_code = 'INVENTORY'
22085         OR p_source_instance_rec.location_type_code = 'WIP'
22086         OR p_source_instance_rec.location_type_code = 'PROJECT'
22087       THEN
22088             FND_MESSAGE.SET_NAME('CSI','CSI_CANNOT_SPLIT');
22089             FND_MSG_PUB.ADD;
22090             RAISE FND_API.G_EXC_ERROR;
22091       END IF;
22092 
22093       BEGIN
22094           SELECT 1
22095           INTO  l_dummy
22096           FROM  csi_i_assets
22097           WHERE instance_id =p_source_instance_rec.instance_id;
22098 
22099           FND_MESSAGE.SET_NAME('CSI','CSI_CANNOT_SPLIT');
22100           FND_MSG_PUB.ADD;
22101           RAISE FND_API.G_EXC_ERROR;
22102       EXCEPTION
22103          WHEN OTHERS THEN
22104            NULL;
22105       END;
22106 
22107 
22108       OPEN C1;
22109       FETCH C1 into l_serialized;
22110       IF c1%FOUND THEN
22111      -- IF nvl(l_serialized,0) IN (2,5,6) then
22112         IF csi_Item_Instance_Vld_pvt.Is_treated_serialized
22113                                 ( p_serial_control_code => l_serialized
22114                                  ,p_location_type_code  => p_source_instance_rec.location_type_code
22115                                  ,p_transaction_type_id => p_txn_rec.transaction_type_id
22116                                  ) -- Added by sk on 09/13/01
22117         THEN
22118             l_return_value := FALSE;
22119                 FND_MESSAGE.SET_NAME('CSI','CSI_API_CANNOT_BE_SERIALIZED');
22120                 FND_MESSAGE.SET_TOKEN('SERIAL_NUMBER', 'serial_number');
22121                 FND_MSG_PUB.ADD;
22122             RAISE FND_API.G_EXC_ERROR;
22123         END IF;
22124       END IF;
22125       CLOSE C1;
22126 
22127 --get the quantity from the csi_item_instances for the instance_id passed
22128 
22129     BEGIN
22130           SELECT quantity
22131           INTO   l_quantity
22132           FROM   csi_item_instances
22133           WHERE  instance_id = p_source_instance_rec.instance_id;
22134     EXCEPTION
22135          WHEN NO_DATA_FOUND THEN
22136             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_QUANITY');
22137             FND_MSG_PUB.Add;
22138                    RAISE FND_API.G_EXC_ERROR;
22139     END;
22140 
22141 --verifying the quantity
22142       IF (p_quantity1 + p_quantity2) <> l_quantity THEN
22143             FND_MESSAGE.SET_NAME('CSI','CSI_API_INCORRECT_QUANTITY');
22144             FND_MSG_PUB.Add;
22145             RAISE FND_API.G_EXC_ERROR;
22146       END IF;
22147 
22148     -- Added by sk for bug 2186683
22149     IF p_source_instance_rec.vld_organization_id IS NULL OR
22150        p_source_instance_rec.vld_organization_id = fnd_api.g_miss_num
22151     THEN
22152        BEGIN
22153           SELECT last_vld_organization_id
22154           INTO   p_source_instance_rec.vld_organization_id
22155           FROM   csi_item_instances
22156           WHERE  instance_id = p_source_instance_rec.instance_id;
22157        EXCEPTION
22158          WHEN OTHERS THEN
22159             NULL;
22160        END;
22161     END IF;
22162     -- End addition by sk for bug 2186683
22163 --if the passed quantities and the quantity in the table are same then
22164       p_source_instance_rec.quantity := p_quantity2;
22165 --call the copy instance api to create a new record with 'p_quantity2')
22166 
22167      csi_item_instance_pvt.copy_item_instance
22168            ( p_api_version                 => p_api_version
22169             ,p_commit                      => fnd_api.g_false
22170             ,p_init_msg_list               => p_init_msg_list
22171             ,p_validation_level            => p_validation_level
22172             ,p_source_instance_rec         => p_source_instance_rec
22173             ,p_copy_ext_attribs            => p_copy_ext_attribs
22174             ,p_copy_org_assignments        => p_copy_org_assignments
22175             ,p_copy_parties                => p_copy_parties
22176             ,p_copy_contacts               => fnd_api.g_true
22177             ,p_copy_accounts               => p_copy_accounts
22178             ,p_copy_asset_assignments      => p_copy_asset_assignments
22179             ,p_copy_pricing_attribs        => p_copy_pricing_attribs
22180             ,p_copy_inst_children          => fnd_api.g_true
22181             ,p_call_from_split             => fnd_api.g_true
22182             ,p_txn_rec                     => p_txn_rec
22183             ,x_new_instance_tbl            => l_new_instance_tbl
22184             ,x_return_status               => x_return_status
22185             ,x_msg_count                   => x_msg_count
22186             ,x_msg_data                    => x_msg_data
22187            );
22188 
22189       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22190           FOR i in 1..x_msg_Count LOOP
22191             FND_MSG_PUB.Get(p_msg_index     => i,
22192                             p_encoded       => 'F',
22193                             p_data          => x_msg_data,
22194                             p_msg_index_out => x_msg_index_out );
22195 
22196          End LOOP;
22197          RAISE fnd_api.g_exc_error;
22198       END IF;
22199 
22200       IF (l_new_instance_tbl.count <> 1) THEN
22201              -- If the number records in the PL/SQL table is more than 1 OR
22202              -- not equal to 1 than raise error
22203              RAISE fnd_api.g_exc_error;
22204       ELSE
22205          x_new_instance_rec := l_new_instance_tbl(1);
22206       END IF;
22207 
22208 -- Start addition for bug 2823122
22209     IF l_new_instance_tbl(1).instance_usage_code='IN_RELATIONSHIP'
22210     THEN
22211        IF l_relationship_tbl.COUNT=0
22212        THEN
22213          BEGIN
22214           SELECT object_id
22215                 ,relationship_type_code
22216                 ,mandatory_flag
22217                 ,context
22218                 ,sysdate
22219                 ,active_end_date
22220                 ,position_reference
22221                 ,display_order
22222                 ,attribute1
22223                 ,attribute2
22224                 ,attribute3
22225                 ,attribute4
22226                 ,attribute5
22227                 ,attribute6
22228                 ,attribute7
22229                 ,attribute8
22230                 ,attribute9
22231                 ,attribute10
22232                 ,attribute11
22233                 ,attribute12
22234                 ,attribute13
22235                 ,attribute14
22236                 ,attribute15
22237           INTO   l_relationship_tbl(1).object_id
22238                 ,l_relationship_tbl(1).relationship_type_code
22239                 ,l_relationship_tbl(1).mandatory_flag
22240                 ,l_relationship_tbl(1).context
22241                 ,l_relationship_tbl(1).active_start_date
22242                 ,l_relationship_tbl(1).active_end_date
22243                 ,l_relationship_tbl(1).position_reference
22244                 ,l_relationship_tbl(1).display_order
22245                 ,l_relationship_tbl(1).attribute1
22246                 ,l_relationship_tbl(1).attribute2
22247                 ,l_relationship_tbl(1).attribute3
22248                 ,l_relationship_tbl(1).attribute4
22249                 ,l_relationship_tbl(1).attribute5
22250                 ,l_relationship_tbl(1).attribute6
22251                 ,l_relationship_tbl(1).attribute7
22252                 ,l_relationship_tbl(1).attribute8
22253                 ,l_relationship_tbl(1).attribute9
22254                 ,l_relationship_tbl(1).attribute10
22255                 ,l_relationship_tbl(1).attribute11
22256                 ,l_relationship_tbl(1).attribute12
22257                 ,l_relationship_tbl(1).attribute13
22258                 ,l_relationship_tbl(1).attribute14
22259                 ,l_relationship_tbl(1).attribute15
22260           FROM  csi_ii_relationships
22261           WHERE subject_id=p_source_instance_rec.instance_id
22262           AND   relationship_type_code='COMPONENT-OF'
22263           AND   (SYSDATE BETWEEN NVL(active_start_date, SYSDATE) AND NVL(active_end_date, SYSDATE));
22264          EXCEPTION
22265            WHEN OTHERS THEN
22266              NULL;
22267          END;
22268        END IF;
22269 
22270         IF l_relationship_tbl(1).object_id  IS NOT NULL
22271          AND l_relationship_tbl(1).object_id<>fnd_api.g_miss_num
22272         THEN
22273           l_relationship_tbl(1).subject_id:=l_new_instance_tbl(1).instance_id;
22274           csi_ii_relationships_pub.create_relationship(
22275             p_api_version      => 1.0,
22276             p_commit           => fnd_api.g_false,
22277             p_init_msg_list    => fnd_api.g_true,
22278             p_validation_level => fnd_api.g_valid_level_full,
22279             p_relationship_tbl => l_relationship_tbl,
22280             p_txn_rec          => p_txn_rec,
22281             x_return_status    => x_return_status,
22282             x_msg_count        => x_msg_count,
22283             x_msg_data         => x_msg_data);
22284            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22285                FOR i in 1..x_msg_Count LOOP
22286                    FND_MSG_PUB.Get(p_msg_index     => i,
22287                                    p_encoded       => 'F',
22288                                    p_data          => x_msg_data,
22289                                    p_msg_index_out => x_msg_index_out );
22290                END LOOP;
22291               RAISE fnd_api.g_exc_error;
22292            END IF;
22293         END IF;
22294     END IF;
22295 -- End addition for bug 2823122
22296 --update the existing record with 'p_quantity1')
22297     BEGIN
22298           SELECT object_version_number
22299           INTO   l_object_version_number
22300           FROM   csi_item_instances
22301           WHERE  instance_id = p_source_instance_rec.instance_id;
22302     EXCEPTION
22303          WHEN NO_DATA_FOUND THEN
22304             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_OBJ_NUM');
22305             FND_MSG_PUB.ADD;
22306                    RAISE FND_API.G_EXC_ERROR;
22307     END;
22308     l_new_instance_rec.instance_id           := p_source_instance_rec.instance_id;
22309     l_new_instance_rec.quantity              := p_quantity1;
22310     l_new_instance_rec.object_version_number := l_object_version_number;
22311     l_new_instance_rec.vld_organization_id   := p_source_instance_rec.vld_organization_id;
22312     l_new_instance_rec.active_end_date   := p_source_instance_rec.active_end_date; -- bug 3704480
22313     l_new_instance_rec.instance_status_id   := p_source_instance_rec.instance_status_id; -- bug 3704480
22314 --call the update api
22315 
22316     update_item_instance
22317            (
22318             p_api_version                => p_api_version
22319            ,p_commit                     => fnd_api.g_false
22320            ,p_init_msg_list              => p_init_msg_list
22321            ,p_validation_level           => p_validation_level
22322            ,p_instance_rec               => l_new_instance_rec
22323            ,p_txn_rec                    => p_txn_rec
22324            ,x_instance_id_lst            => l_instance_id_lst
22325            ,x_return_status              => x_return_status
22326            ,x_msg_count                  => x_msg_count
22327            ,x_msg_data                   => x_msg_data
22328            ,p_item_attribute_tbl         => l_item_attribute_tbl
22329            ,p_location_tbl               => l_location_tbl
22330            ,p_generic_id_tbl             => l_generic_id_tbl
22331            ,p_lookup_tbl                 => l_lookup_tbl
22332            ,p_ins_count_rec              => l_ins_count_rec
22333            ,p_oks_txn_inst_tbl           => px_oks_txn_inst_tbl
22334            ,p_child_inst_tbl             => px_child_inst_tbl
22335            );
22336 
22337       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22338          FOR i in 1..x_msg_Count LOOP
22339             FND_MSG_PUB.Get(p_msg_index     => i,
22340                             p_encoded       => 'F',
22341                             p_data          => x_msg_data,
22342                             p_msg_index_out => x_msg_index_out );
22343          End LOOP;
22344          RAISE fnd_api.g_exc_error;
22345       END IF;
22346       -- Calling Contracts
22347       -- Added on 28-sep-01
22348       -- Modification starts
22349       --
22350       l_transaction_type := 'SPL';
22351       csi_item_instance_pvt.Call_to_Contracts
22352 	( p_transaction_type   =>   l_transaction_type
22353 	 ,p_instance_id        =>   p_source_instance_rec.instance_id
22354 	 ,p_new_instance_id    =>   l_new_instance_tbl(1).instance_id
22355 	 ,p_vld_org_id         =>   p_source_instance_rec.vld_organization_id
22356 	 ,p_quantity           =>   p_quantity1 -- modified for bug 2103144
22357 	 ,p_party_account_id1  =>   NULL
22358 	 ,p_party_account_id2  =>   NULL
22359 	 ,p_transaction_date   =>   p_txn_rec.transaction_date -- For 3483763
22360 	 ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- For 3483763
22361 	 ,p_txn_type_id        => p_txn_rec.transaction_type_id -- added for  BUG  5752271
22362 	 ,p_oks_txn_inst_tbl   =>   px_oks_txn_inst_tbl
22363 	 ,x_return_status      =>   x_return_status
22364 	 ,x_msg_count          =>   x_msg_count
22365 	 ,x_msg_data           =>   x_msg_data
22366         );
22367       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22368          RAISE FND_API.G_EXC_ERROR;
22369       END IF;
22370       --
22371       IF px_oks_txn_inst_tbl.count > 0 THEN
22372 	 csi_gen_utility_pvt.dump_oks_txn_inst_tbl(px_oks_txn_inst_tbl);
22373 	 csi_gen_utility_pvt.put_line('Calling OKS Core API...');
22374          --
22375 	 IF p_txn_rec.transaction_type_id = 3 THEN
22376 	    l_batch_id := p_txn_rec.source_header_ref_id;
22377 	    l_batch_type := p_txn_rec.source_group_ref;
22378 	 ELSE
22379 	    l_batch_id := NULL;
22380 	    l_batch_type := NULL;
22381 	 END IF;
22382 	 --
22383          UPDATE CSI_TRANSACTIONS
22384          set contracts_invoked = 'Y'
22385          where transaction_id = p_txn_rec.transaction_id;
22386          --
22387 	 OKS_IBINT_PUB.IB_interface
22388 	    (
22389 	      P_Api_Version           =>  1.0,
22390 	      P_init_msg_list         =>  p_init_msg_list,
22391 	      P_single_txn_date_flag  =>  'Y',
22392 	      P_Batch_type            =>  l_batch_type,
22393 	      P_Batch_ID              =>  l_batch_id,
22394 	      P_OKS_Txn_Inst_tbl      =>  px_oks_txn_inst_tbl,
22395 	      x_return_status         =>  x_return_status,
22396 	      x_msg_count             =>  x_msg_count,
22397 	      x_msg_data              =>  x_msg_data
22398 	   );
22399 	 --
22400 	 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22401 	    l_msg_index := 1;
22402 	    l_msg_count := x_msg_count;
22403 	    WHILE l_msg_count > 0 LOOP
22404 	       x_msg_data := FND_MSG_PUB.GET
22405 		       (  l_msg_index,
22406 			  FND_API.G_FALSE        );
22407 	       csi_gen_utility_pvt.put_line( 'Error from OKS_IBINT_PUB.IB_interface..');
22408 	       csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
22409 	       l_msg_index := l_msg_index + 1;
22410 	       l_msg_count := l_msg_count - 1;
22411 	    END LOOP;
22412 	    RAISE FND_API.G_EXC_ERROR;
22413 	 END IF;
22414       END IF;
22415       -- Modification ends
22416       -- End Calling Contracts.
22417       -- End of API body
22418 
22419       -- Standard check of p_commit.
22420       IF FND_API.To_Boolean( p_commit ) THEN
22421            COMMIT WORK;
22422       END IF;
22423 
22424        -- End disable trace
22425 
22426       -- Standard call to get message count and IF count is  get message info.
22427       FND_MSG_PUB.Count_And_Get
22428             (p_encoded => FND_API.G_FALSE,
22429                  p_count   =>   x_msg_count ,
22430              p_data    =>   x_msg_data
22431             );
22432 
22433 EXCEPTION
22434 
22435      WHEN FND_API.G_EXC_ERROR THEN
22436           ROLLBACK TO split_item_instance_pvt;
22437             x_return_status := FND_API.G_RET_STS_ERROR ;
22438             FND_MSG_PUB.Count_And_Get
22439                 ( p_encoded => FND_API.G_FALSE,
22440                  p_count   =>  x_msg_count,
22441                   p_data    =>  x_msg_data
22442                 );
22443      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
22444             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
22445             ROLLBACK TO split_item_instance_pvt;
22446             FND_MSG_PUB.Count_And_Get
22447                 ( p_encoded => FND_API.G_FALSE,
22448                  p_count   =>  x_msg_count,
22449                   p_data    =>  x_msg_data
22450                 );
22451      WHEN OTHERS THEN
22452             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
22453           ROLLBACK TO split_item_instance_pvt;
22454             IF    FND_MSG_PUB.Check_Msg_Level
22455                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
22456             THEN
22457                   FND_MSG_PUB.Add_Exc_Msg
22458                   ( G_PKG_NAME ,
22459                     l_api_name
22460                   );
22461             END IF;
22462             FND_MSG_PUB.Count_And_Get
22463                   ( p_encoded => FND_API.G_FALSE,
22464                  p_count  =>  x_msg_count,
22465                     p_data   =>  x_msg_data
22466                   );
22467 
22468 END Split_Item_Instance;
22469 
22470 /*---------------------------------------------------*/
22471 /* Procedure name:  Split_Item_Instance_lines        */
22472 /* Description   :  This procedure is used to create */
22473 /*                  split lines for instance         */
22474 /*---------------------------------------------------*/
22475  PROCEDURE Split_Item_Instance_Lines
22476  (
22477    p_api_version                 IN      NUMBER
22478   ,p_commit                      IN      VARCHAR2
22479   ,p_init_msg_list               IN      VARCHAR2
22480   ,p_validation_level            IN      NUMBER
22481   ,p_source_instance_rec         IN OUT  NOCOPY csi_datastructures_pub.instance_rec
22482   ,p_copy_ext_attribs            IN      VARCHAR2
22483   ,p_copy_org_assignments        IN      VARCHAR2
22484   ,p_copy_parties                IN      VARCHAR2
22485 --  ,p_copy_contacts               IN      VARCHAR2 := fnd_api.g_true
22486   ,p_copy_accounts               IN      VARCHAR2
22487   ,p_copy_asset_assignments      IN      VARCHAR2
22488   ,p_copy_pricing_attribs        IN      VARCHAR2
22489   ,p_txn_rec                     IN OUT  NOCOPY csi_datastructures_pub.transaction_rec
22490   ,x_new_instance_tbl            OUT     NOCOPY csi_datastructures_pub.instance_tbl
22491   ,x_return_status               OUT     NOCOPY VARCHAR2
22492   ,x_msg_count                   OUT     NOCOPY NUMBER
22493   ,x_msg_data                    OUT     NOCOPY VARCHAR2
22494  )
22495 IS
22496   CURSOR c1 is
22497     SELECT serial_number_control_code
22498     FROM   mtl_system_items
22499     WHERE  inventory_item_id = p_source_instance_rec.inventory_item_id
22500     AND    organization_id   = p_source_instance_rec.vld_organization_id
22501     AND    nvl(comms_nl_trackable_flag, 'N') = 'Y'
22502     AND    enabled_flag = 'Y'
22503     AND    nvl (start_date_active, sysdate) <= sysdate
22504     AND    nvl (end_date_active, sysdate+1) > sysdate;
22505 
22506     l_api_name              CONSTANT VARCHAR2(30)   := 'SPLIT_ITEM_INSTANCE_LINES';
22507     l_api_version           CONSTANT NUMBER         := 1.0;
22508     l_debug_level           NUMBER;
22509     l_serialized            NUMBER;
22510     l_return_value          BOOLEAN;
22511     l_object_version_number NUMBER;
22512     l_quantity              NUMBER;
22513     l_instance_id_lst       csi_datastructures_pub.id_tbl;
22514     l_new_instance_rec      csi_datastructures_pub.instance_rec;
22515     l_new_instance_tbl      csi_datastructures_pub.instance_tbl;
22516     l_count                 NUMBER;
22517     l_msg_data              VARCHAR2(2000);
22518     l_msg_index             NUMBER;
22519     l_msg_count             NUMBER;
22520     x_msg_index_out         NUMBER;
22521     l_dummy                 NUMBER;
22522     l_temp_qty              NUMBER;
22523     l_old_qty               NUMBER;
22524     l_item_attribute_tbl    csi_item_instance_pvt.item_attribute_tbl;
22525     l_location_tbl          csi_item_instance_pvt.location_tbl;
22526     l_generic_id_tbl        csi_item_instance_pvt.generic_id_tbl;
22527     l_lookup_tbl            csi_item_instance_pvt.lookup_tbl;
22528     l_ins_count_rec         csi_item_instance_pvt.ins_count_rec;
22529     l_relationship_tbl      csi_datastructures_pub.ii_relationship_tbl;
22530     --
22531     px_oks_txn_inst_tbl     oks_ibint_pub.txn_instance_tbl;
22532     px_child_inst_tbl       csi_item_instance_grp.child_inst_tbl;
22533     l_batch_type            VARCHAR2(50);
22534     l_batch_id              NUMBER;
22535     --
22536 BEGIN
22537 
22538     -- Standard Start of API savepoint
22539        SAVEPOINT  split_item_instance_lines_pvt;
22540 
22541     -- Standard call to check for call compatibility.
22542        IF NOT FND_API.Compatible_API_Call (l_api_version,
22543                                            p_api_version,
22544                                            l_api_name,
22545                                            G_PKG_NAME  )
22546        THEN
22547             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
22548        END IF;
22549 
22550     -- Initialize message list if p_init_msg_list is set to TRUE.
22551        IF FND_API.to_Boolean( p_init_msg_list ) THEN
22552              FND_MSG_PUB.initialize;
22553        END IF;
22554 
22555     -- Initialize API return status to success
22556        x_return_status := FND_API.G_RET_STS_SUCCESS;
22557 
22558         -- Check the profile option debug_level for debug message reporting
22559         l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
22560 
22561        --  If debug_level = 1 then dump the procedure name
22562          IF (l_debug_level > 0) THEN
22563             csi_gen_utility_pvt.put_line ( 'split_item_instance_lines_pvt');
22564          END IF;
22565 
22566        -- If the debug level = 2 then dump all the parameters values.
22567          IF (l_debug_level > 1) THEN
22568                csi_gen_utility_pvt.put_line ('split_item_instance_lines_pvt' ||
22569                                                    p_api_version      ||'-'||
22570                                                    p_commit           ||'-'||
22571                                                    p_init_msg_list          );
22572                -- Dump the records in the log file
22573                csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
22574                csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
22575          END IF;
22576 
22577        -- Start API body
22578 
22579 --check for the required parameters
22580          CSI_Item_Instance_vld_pvt.Check_Reqd_Param_Num
22581              (    p_source_instance_rec.INSTANCE_ID  ,
22582                 ' p_source_instance_rec.INSTANCE_ID ',
22583                   l_api_name
22584              );
22585 --validation for serialized or not
22586 
22587       IF   p_source_instance_rec.location_type_code = 'INVENTORY'
22588         OR p_source_instance_rec.location_type_code = 'WIP'
22589         OR p_source_instance_rec.location_type_code = 'PROJECT'
22590       THEN
22591             FND_MESSAGE.SET_NAME('CSI','CSI_CANNOT_SPLIT');
22592             FND_MSG_PUB.ADD;
22593             RAISE FND_API.G_EXC_ERROR;
22594       END IF;
22595 
22596       BEGIN
22597           SELECT 1
22598           INTO  l_dummy
22599           FROM  csi_i_assets
22600           WHERE instance_id =p_source_instance_rec.instance_id;
22601 
22602           FND_MESSAGE.SET_NAME('CSI','CSI_CANNOT_SPLIT');
22603           FND_MSG_PUB.ADD;
22604           RAISE FND_API.G_EXC_ERROR;
22605       EXCEPTION
22606          WHEN OTHERS THEN
22607            NULL;
22608       END;
22609 
22610       OPEN C1;
22611       FETCH C1 into l_serialized;
22612       IF C1%FOUND THEN
22613      -- IF nvl(l_serialized,0) IN (2,5,6) then
22614         IF csi_Item_Instance_Vld_pvt.Is_treated_serialized
22615                                 ( p_serial_control_code => l_serialized
22616                                  ,p_location_type_code  => p_source_instance_rec.location_type_code
22617                                  ,p_transaction_type_id => p_txn_rec.transaction_type_id
22618                                  ) -- Added by sk on 09/13/01
22619         THEN
22620             l_return_value := FALSE;
22621                 FND_MESSAGE.SET_NAME('CSI','CSI_API_CANNOT_BE_SERIALIZED');
22622                 FND_MESSAGE.SET_TOKEN('SERIAL_NUMBER', 'serial_number');
22623                 FND_MSG_PUB.ADD;
22624             RAISE FND_API.G_EXC_ERROR;
22625         END IF;
22626       END IF;
22627       CLOSE C1;
22628 
22629 --get the quantity from the csi_item_instances for the instance_id passed
22630     BEGIN
22631           SELECT quantity
22632           INTO   l_quantity
22633           FROM   csi_item_instances
22634           WHERE  instance_id = p_source_instance_rec.instance_id;
22635     EXCEPTION
22636          WHEN NO_DATA_FOUND THEN
22637             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_QUANITY');
22638             FND_MSG_PUB.Add;
22639                    RAISE FND_API.G_EXC_ERROR;
22640     END;
22641     -- Added by sk for bug 2186683
22642     IF p_source_instance_rec.vld_organization_id IS NULL OR
22643        p_source_instance_rec.vld_organization_id = fnd_api.g_miss_num
22644     THEN
22645        BEGIN
22646           SELECT last_vld_organization_id
22647           INTO   p_source_instance_rec.vld_organization_id
22648           FROM   csi_item_instances
22649           WHERE  instance_id = p_source_instance_rec.instance_id;
22650        EXCEPTION
22651          WHEN OTHERS THEN
22652             NULL;
22653        END;
22654     END IF;
22655     -- End addition by sk for bug 2186683
22656     l_temp_qty:=0;
22657  IF l_quantity > 1 THEN
22658     FOR i in 1..(l_quantity - 1) LOOP
22659 
22660     l_temp_qty  :=l_temp_qty+1;
22661     l_old_qty :=l_quantity-l_temp_qty; -- This will be our split old quantity.
22662     p_source_instance_rec.quantity := 1;
22663     l_new_instance_tbl.delete;
22664 --call the copy instance api to create a new record with 'p_quantity2')
22665      csi_item_instance_pvt.copy_item_instance
22666            (
22667              p_api_version                 => p_api_version
22668             ,p_commit                      => fnd_api.g_false
22669             ,p_init_msg_list               => p_init_msg_list
22670             ,p_validation_level            => p_validation_level
22671             ,p_source_instance_rec         => p_source_instance_rec
22672             ,p_copy_ext_attribs            => p_copy_ext_attribs
22673             ,p_copy_org_assignments        => p_copy_org_assignments
22674             ,p_copy_parties                => p_copy_parties
22675             ,p_copy_contacts               => fnd_api.g_true
22676             ,p_copy_accounts               => p_copy_accounts
22677             ,p_copy_asset_assignments      => p_copy_asset_assignments
22678             ,p_copy_pricing_attribs        => p_copy_pricing_attribs
22679             ,p_copy_inst_children          => fnd_api.g_true
22680             ,p_call_from_split             => fnd_api.g_true
22681             ,p_txn_rec                     => p_txn_rec
22682             ,x_new_instance_tbl            => l_new_instance_tbl
22683             ,x_return_status               => x_return_status
22684             ,x_msg_count                   => x_msg_count
22685             ,x_msg_data                    => x_msg_data
22686            );
22687 
22688       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22689 --         x_error_message :=  'copy_item_instance failed '  ;
22690           FOR i in 1..x_msg_Count LOOP
22691             FND_MSG_PUB.Get(p_msg_index     => i,
22692                             p_encoded       => 'F',
22693                             p_data          => x_msg_data,
22694                             p_msg_index_out => x_msg_index_out );
22695          End LOOP;
22696          RAISE fnd_api.g_exc_error;
22697       END IF;
22698 -- Start addition for bug 2823122
22699     IF l_new_instance_tbl(1).instance_usage_code='IN_RELATIONSHIP'
22700     THEN
22701        IF l_relationship_tbl.COUNT=0
22702        THEN
22703          BEGIN
22704           SELECT object_id
22705                 ,relationship_type_code
22706                 ,mandatory_flag
22707                 ,context
22708                 ,sysdate
22709                 ,active_end_date
22710                 ,position_reference
22711                 ,display_order
22712                 ,attribute1
22713                 ,attribute2
22714                 ,attribute3
22715                 ,attribute4
22716                 ,attribute5
22717                 ,attribute6
22718                 ,attribute7
22719                 ,attribute8
22720                 ,attribute9
22721                 ,attribute10
22722                 ,attribute11
22723                 ,attribute12
22724                 ,attribute13
22725                 ,attribute14
22726                 ,attribute15
22727           INTO   l_relationship_tbl(1).object_id
22728                 ,l_relationship_tbl(1).relationship_type_code
22729                 ,l_relationship_tbl(1).mandatory_flag
22730                 ,l_relationship_tbl(1).context
22731                 ,l_relationship_tbl(1).active_start_date
22732                 ,l_relationship_tbl(1).active_end_date
22733                 ,l_relationship_tbl(1).position_reference
22734                 ,l_relationship_tbl(1).display_order
22735                 ,l_relationship_tbl(1).attribute1
22736                 ,l_relationship_tbl(1).attribute2
22737                 ,l_relationship_tbl(1).attribute3
22738                 ,l_relationship_tbl(1).attribute4
22739                 ,l_relationship_tbl(1).attribute5
22740                 ,l_relationship_tbl(1).attribute6
22741                 ,l_relationship_tbl(1).attribute7
22742                 ,l_relationship_tbl(1).attribute8
22743                 ,l_relationship_tbl(1).attribute9
22744                 ,l_relationship_tbl(1).attribute10
22745                 ,l_relationship_tbl(1).attribute11
22746                 ,l_relationship_tbl(1).attribute12
22747                 ,l_relationship_tbl(1).attribute13
22748                 ,l_relationship_tbl(1).attribute14
22749                 ,l_relationship_tbl(1).attribute15
22750           FROM  csi_ii_relationships
22751           WHERE subject_id=p_source_instance_rec.instance_id
22752           AND   relationship_type_code='COMPONENT-OF'
22753           AND   (SYSDATE BETWEEN NVL(active_start_date, SYSDATE) AND NVL(active_end_date, SYSDATE));
22754          EXCEPTION
22755            WHEN OTHERS THEN
22756              NULL;
22757          END;
22758        END IF;
22759 
22760         IF l_relationship_tbl(1).object_id  IS NOT NULL
22761          AND l_relationship_tbl(1).object_id<>fnd_api.g_miss_num
22762         THEN
22763           l_relationship_tbl(1).relationship_id:=fnd_api.g_miss_num;
22764           l_relationship_tbl(1).subject_id:=l_new_instance_tbl(1).instance_id;
22765           csi_ii_relationships_pub.create_relationship(
22766             p_api_version      => 1.0,
22767             p_commit           => fnd_api.g_false,
22768             p_init_msg_list    => fnd_api.g_true,
22769             p_validation_level => fnd_api.g_valid_level_full,
22770             p_relationship_tbl => l_relationship_tbl,
22771             p_txn_rec          => p_txn_rec,
22772             x_return_status    => x_return_status,
22773             x_msg_count        => x_msg_count,
22774             x_msg_data         => x_msg_data);
22775            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22776                FOR i in 1..x_msg_Count LOOP
22777                    FND_MSG_PUB.Get(p_msg_index     => i,
22778                                    p_encoded       => 'F',
22779                                    p_data          => x_msg_data,
22780                                    p_msg_index_out => x_msg_index_out );
22781                END LOOP;
22782               RAISE fnd_api.g_exc_error;
22783            END IF;
22784         END IF;
22785     END IF;
22786 -- End addition for bug 2823122
22787          x_new_instance_tbl(i) := l_new_instance_tbl(1);
22788 
22789     -- Following code is added for fixing bug 2139782.
22790          BEGIN
22791             -- For each of the record contracts call will be made and px_oks_txn_inst_tbl will be refreshed
22792             px_oks_txn_inst_tbl.DELETE;
22793             --
22794             csi_item_instance_pvt.call_to_contracts
22795              ( p_transaction_type   =>   'SPL'
22796               ,p_instance_id        =>   p_source_instance_rec.instance_id
22797               ,p_new_instance_id    =>   l_new_instance_tbl(1).instance_id
22798               ,p_vld_org_id         =>   p_source_instance_rec.vld_organization_id
22799               ,p_quantity           =>   l_old_qty
22800               ,p_party_account_id1  =>   NULL
22801               ,p_party_account_id2  =>   NULL
22802               ,p_transaction_date   =>   p_txn_rec.transaction_date -- For 3483763
22803               ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- For 3483763
22804 	      ,p_txn_type_id        => p_txn_rec.transaction_type_id -- added for  BUG  5752271
22805               ,p_oks_txn_inst_tbl   =>   px_oks_txn_inst_tbl
22806               ,x_return_status      =>   x_return_status
22807               ,x_msg_count          =>   x_msg_count
22808               ,x_msg_data           =>   x_msg_data
22809               );
22810 
22811              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22812                   RAISE FND_API.G_EXC_ERROR;
22813              END IF;
22814              --
22815 	     IF px_oks_txn_inst_tbl.count > 0 THEN
22816 		csi_gen_utility_pvt.dump_oks_txn_inst_tbl(px_oks_txn_inst_tbl);
22817 		csi_gen_utility_pvt.put_line('Calling OKS Core API...');
22818 		--
22819 		IF p_txn_rec.transaction_type_id = 3 THEN
22820 		   l_batch_id := p_txn_rec.source_header_ref_id;
22821 		   l_batch_type := p_txn_rec.source_group_ref;
22822 		ELSE
22823 		   l_batch_id := NULL;
22824 		   l_batch_type := NULL;
22825 		END IF;
22826 		--
22827                 UPDATE CSI_TRANSACTIONS
22828                 set contracts_invoked = 'Y'
22829                 where transaction_id = p_txn_rec.transaction_id;
22830                 --
22831 		OKS_IBINT_PUB.IB_interface
22832 		   (
22833 		     P_Api_Version           =>  1.0,
22834 		     P_init_msg_list         =>  p_init_msg_list,
22835 		     P_single_txn_date_flag  =>  'Y',
22836 		     P_Batch_type            =>  l_batch_type,
22837 		     P_Batch_ID              =>  l_batch_id,
22838 		     P_OKS_Txn_Inst_tbl      =>  px_oks_txn_inst_tbl,
22839 		     x_return_status         =>  x_return_status,
22840 		     x_msg_count             =>  x_msg_count,
22841 		     x_msg_data              =>  x_msg_data
22842 		  );
22843 		--
22844 		IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22845 		   l_msg_index := 1;
22846 		   l_msg_count := x_msg_count;
22847 		   WHILE l_msg_count > 0 LOOP
22848 		      x_msg_data := FND_MSG_PUB.GET
22849 			      (  l_msg_index,
22850 				 FND_API.G_FALSE        );
22851 		      csi_gen_utility_pvt.put_line( 'Error from OKS_IBINT_PUB.IB_interface..');
22852 		      csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
22853 		      l_msg_index := l_msg_index + 1;
22854 		      l_msg_count := l_msg_count - 1;
22855 		   END LOOP;
22856 		   RAISE FND_API.G_EXC_ERROR;
22857 		END IF;
22858 	     END IF;
22859          EXCEPTION
22860            WHEN FND_API.G_EXC_ERROR THEN
22861              RAISE FND_API.G_EXC_ERROR;
22862          END;
22863     -- End of code addition for fixing bug 2139782.
22864    END LOOP;
22865  Else   --l_quantity is <= 1
22866 
22867             FND_MESSAGE.SET_NAME('CSI','CSI_API_QUANTITY_NOT_VALID');
22868             FND_MESSAGE.SET_TOKEN('QUANTITY', l_quantity);
22869             FND_MSG_PUB.ADD;
22870 --         RAISE fnd_api.g_exc_error;
22871  End If;
22872 
22873 --update the existing record with 'p_quantity1')
22874     BEGIN
22875           SELECT object_version_number
22876           INTO   l_object_version_number
22877           FROM   csi_item_instances
22878           WHERE  instance_id = p_source_instance_rec.instance_id;
22879     EXCEPTION
22880          WHEN NO_DATA_FOUND THEN
22881             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_OBJ_NUM');
22882             FND_MSG_PUB.ADD;
22883                    RAISE FND_API.G_EXC_ERROR;
22884     END;
22885     --
22886     px_oks_txn_inst_tbl.DELETE;
22887     --
22888     l_new_instance_rec.instance_id           := p_source_instance_rec.instance_id;
22889     l_new_instance_rec.quantity              := 1;
22890     l_new_instance_rec.object_version_number := l_object_version_number;
22891     l_new_instance_rec.vld_organization_id   := p_source_instance_rec.vld_organization_id;
22892 
22893 --call the update api
22894     update_item_instance
22895            (
22896             p_api_version                => p_api_version
22897            ,p_commit                     => fnd_api.g_false
22898            ,p_init_msg_list              => p_init_msg_list
22899            ,p_validation_level           => p_validation_level
22900            ,p_instance_rec               => l_new_instance_rec
22901            ,p_txn_rec                    => p_txn_rec
22902            ,x_instance_id_lst            => l_instance_id_lst
22903            ,x_return_status              => x_return_status
22904            ,x_msg_count                  => x_msg_count
22905            ,x_msg_data                   => x_msg_data
22906            ,p_item_attribute_tbl         => l_item_attribute_tbl
22907            ,p_location_tbl               => l_location_tbl
22908            ,p_generic_id_tbl             => l_generic_id_tbl
22909            ,p_lookup_tbl                 => l_lookup_tbl
22910            ,p_ins_count_rec              => l_ins_count_rec
22911            ,p_oks_txn_inst_tbl           => px_oks_txn_inst_tbl
22912            ,p_child_inst_tbl             => px_child_inst_tbl
22913            );
22914 
22915       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
22916          FOR i in 1..x_msg_Count LOOP
22917             FND_MSG_PUB.Get(p_msg_index     => i,
22918                             p_encoded       => 'F',
22919                             p_data          => x_msg_data,
22920                             p_msg_index_out => x_msg_index_out );
22921           End LOOP;
22922          RAISE fnd_api.g_exc_error;
22923       END IF;
22924 
22925 
22926       l_count := x_new_instance_tbl.count ;
22927 
22928       --Modified the below for bug 14471544, Entire record needs to be sent back not just the instance ID
22929       x_new_instance_tbl(l_count+1) := p_source_instance_rec;
22930       x_new_instance_tbl(l_count+1).object_version_number := l_new_instance_rec.object_version_number;
22931 
22932 
22933 
22934 --               x_new_instance_tbl(i+1) := l_instance_id_lst(1);
22935 
22936       -- End of API body
22937 
22938       -- Standard check of p_commit.
22939       IF FND_API.To_Boolean( p_commit ) THEN
22940            COMMIT WORK;
22941       END IF;
22942 
22943        -- End disable trace
22944 
22945       -- Standard call to get message count and IF count is  get message info.
22946       FND_MSG_PUB.Count_And_Get
22947             (p_encoded => FND_API.G_FALSE,
22948                  p_count   =>   x_msg_count ,
22949              p_data    =>   x_msg_data
22950             );
22951 
22952 EXCEPTION
22953 
22954      WHEN FND_API.G_EXC_ERROR THEN
22955           ROLLBACK TO split_item_instance_lines_pvt;
22956             x_return_status := FND_API.G_RET_STS_ERROR ;
22957             FND_MSG_PUB.Count_And_Get
22958                 ( p_encoded => FND_API.G_FALSE,
22959                  p_count   =>  x_msg_count,
22960                   p_data    =>  x_msg_data
22961                 );
22962      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
22963             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
22964             ROLLBACK TO split_item_instance_lines_pvt;
22965             FND_MSG_PUB.Count_And_Get
22966                 ( p_encoded => FND_API.G_FALSE,
22967                  p_count   =>  x_msg_count,
22968                   p_data    =>  x_msg_data
22969                 );
22970      WHEN OTHERS THEN
22971             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
22972           ROLLBACK TO split_item_instance_lines_pvt;
22973             IF    FND_MSG_PUB.Check_Msg_Level
22974                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
22975             THEN
22976                   FND_MSG_PUB.Add_Exc_Msg
22977                   ( G_PKG_NAME ,
22978                     l_api_name
22979                   );
22980             END IF;
22981             FND_MSG_PUB.Count_And_Get
22982                   ( p_encoded => FND_API.G_FALSE,
22983                  p_count  =>  x_msg_count,
22984                     p_data   =>  x_msg_data
22985                   );
22986 
22987 END Split_Item_Instance_lines;
22988 
22989 
22990 /*----------------------------------------------------------*/
22991 /* Procedure name:  Initialize_ver_rec_no_dump              */
22992 /* Description : This procedure initializes the first       */
22993 /*                 record from the history                  */
22994 /*----------------------------------------------------------*/
22995 
22996 PROCEDURE Initialize_ver_rec_no_dump
22997 (
22998   x_version_label_rec      IN OUT NOCOPY csi_datastructures_pub.version_label_rec,
22999   p_version_label_id       IN NUMBER ,
23000   x_no_dump                IN OUT NOCOPY DATE
23001   ) IS
23002 
23003 CURSOR Int_no_dump(p_ver_label_id IN NUMBER ) IS
23004 SELECT
23005     CREATION_DATE                   ,
23006     NEW_VERSION_LABEL               ,
23007     NEW_DESCRIPTION                 ,
23008     NEW_DATE_TIME_STAMP             ,
23009     NEW_ACTIVE_START_DATE           ,
23010     NEW_ACTIVE_END_DATE             ,
23011     NEW_CONTEXT                     ,
23012     NEW_ATTRIBUTE1                  ,
23013     NEW_ATTRIBUTE2                  ,
23014     NEW_ATTRIBUTE3                  ,
23015     NEW_ATTRIBUTE4                  ,
23016     NEW_ATTRIBUTE5                  ,
23017     NEW_ATTRIBUTE6                  ,
23018     NEW_ATTRIBUTE7                  ,
23019     NEW_ATTRIBUTE8                  ,
23020     NEW_ATTRIBUTE9                  ,
23021     NEW_ATTRIBUTE10                 ,
23022     NEW_ATTRIBUTE11                 ,
23023     NEW_ATTRIBUTE12                 ,
23024     NEW_ATTRIBUTE13                 ,
23025     NEW_ATTRIBUTE14                 ,
23026     NEW_ATTRIBUTE15
23027  FROM CSI_I_VERSION_LABELS_H
23028 WHERE version_label_id = p_ver_label_id
23029 ORDER BY creation_date;
23030 
23031 
23032 BEGIN
23033 
23034   FOR C1 IN Int_no_dump(p_version_label_id  ) LOOP
23035    IF Int_no_dump%ROWCOUNT = 1 THEN
23036      x_no_dump                              := C1.creation_date;
23037      x_version_label_rec.VERSION_LABEL      := C1.NEW_VERSION_LABEL;
23038      x_version_label_rec.DESCRIPTION        := C1.NEW_DESCRIPTION;
23039      x_version_label_rec.DATE_TIME_STAMP    := C1.NEW_DATE_TIME_STAMP;
23040      x_version_label_rec.ACTIVE_START_DATE  := C1.NEW_ACTIVE_START_DATE;
23041      x_version_label_rec.ACTIVE_END_DATE    := C1.NEW_ACTIVE_END_DATE;
23042      x_version_label_rec.CONTEXT            := C1.NEW_CONTEXT;
23043      x_version_label_rec.ATTRIBUTE1         := C1.NEW_ATTRIBUTE1;
23044      x_version_label_rec.ATTRIBUTE2         := C1.NEW_ATTRIBUTE2;
23045      x_version_label_rec.ATTRIBUTE3         := C1.NEW_ATTRIBUTE3;
23046      x_version_label_rec.ATTRIBUTE4         := C1.NEW_ATTRIBUTE4;
23047      x_version_label_rec.ATTRIBUTE5         := C1.NEW_ATTRIBUTE5;
23048      x_version_label_rec.ATTRIBUTE6         := C1.NEW_ATTRIBUTE6;
23049      x_version_label_rec.ATTRIBUTE7         := C1.NEW_ATTRIBUTE7;
23050      x_version_label_rec.ATTRIBUTE8         := C1.NEW_ATTRIBUTE8;
23051      x_version_label_rec.ATTRIBUTE9         := C1.NEW_ATTRIBUTE9;
23052      x_version_label_rec.ATTRIBUTE10        := C1.NEW_ATTRIBUTE10;
23053      x_version_label_rec.ATTRIBUTE11        := C1.NEW_ATTRIBUTE11;
23054      x_version_label_rec.ATTRIBUTE12        := C1.NEW_ATTRIBUTE12;
23055      x_version_label_rec.ATTRIBUTE13        := C1.NEW_ATTRIBUTE13;
23056      x_version_label_rec.ATTRIBUTE14        := C1.NEW_ATTRIBUTE14;
23057      x_version_label_rec.ATTRIBUTE15        := C1.NEW_ATTRIBUTE15;
23058    ELSE
23059      EXIT;
23060    END IF;
23061 
23062   END LOOP;
23063 END Initialize_ver_rec_no_dump;
23064 
23065 
23066 /*----------------------------------------------------------*/
23067 /* Procedure name:  Initialize_ver_rec                      */
23068 /* Description : This procudure recontructs the record      */
23069 /*                 from the history                         */
23070 /*----------------------------------------------------------*/
23071 
23072 PROCEDURE Initialize_ver_rec
23073 (
23074   x_version_label_rec           IN OUT NOCOPY csi_datastructures_pub.version_label_rec,
23075   p_version_label_hist_id       IN NUMBER ,
23076   x_nearest_full_dump           IN OUT NOCOPY DATE
23077   ) IS
23078 
23079 CURSOR Int_nearest_full_dump(p_ver_label_hist_id IN NUMBER ) IS
23080 SELECT
23081     CREATION_DATE                   ,
23082     NEW_VERSION_LABEL               ,
23083     NEW_DESCRIPTION                 ,
23084     NEW_DATE_TIME_STAMP             ,
23085     NEW_ACTIVE_START_DATE           ,
23086     NEW_ACTIVE_END_DATE             ,
23087     NEW_CONTEXT                     ,
23088     NEW_ATTRIBUTE1                  ,
23089     NEW_ATTRIBUTE2                  ,
23090     NEW_ATTRIBUTE3                  ,
23091     NEW_ATTRIBUTE4                  ,
23092     NEW_ATTRIBUTE5                  ,
23093     NEW_ATTRIBUTE6                  ,
23094     NEW_ATTRIBUTE7                  ,
23095     NEW_ATTRIBUTE8                  ,
23096     NEW_ATTRIBUTE9                  ,
23097     NEW_ATTRIBUTE10                 ,
23098     NEW_ATTRIBUTE11                 ,
23099     NEW_ATTRIBUTE12                 ,
23100     NEW_ATTRIBUTE13                 ,
23101     NEW_ATTRIBUTE14                 ,
23102     NEW_ATTRIBUTE15
23103  FROM CSI_I_VERSION_LABELS_H
23104 WHERE version_label_history_id = p_ver_label_hist_id
23105   and  full_dump_flag = 'Y' ;
23106 
23107 BEGIN
23108 
23109   FOR C1 IN Int_nearest_full_dump(p_version_label_hist_id  ) LOOP
23110      x_nearest_full_dump                    := C1.creation_date;
23111      x_version_label_rec.VERSION_LABEL      := C1.NEW_VERSION_LABEL;
23112      x_version_label_rec.DESCRIPTION        := C1.NEW_DESCRIPTION;
23113      x_version_label_rec.DATE_TIME_STAMP    := C1.NEW_DATE_TIME_STAMP;
23114      x_version_label_rec.ACTIVE_START_DATE  := C1.NEW_ACTIVE_START_DATE;
23115      x_version_label_rec.ACTIVE_END_DATE    := C1.NEW_ACTIVE_END_DATE;
23116      x_version_label_rec.CONTEXT            := C1.NEW_CONTEXT;
23117      x_version_label_rec.ATTRIBUTE1         := C1.NEW_ATTRIBUTE1;
23118      x_version_label_rec.ATTRIBUTE2         := C1.NEW_ATTRIBUTE2;
23119      x_version_label_rec.ATTRIBUTE3         := C1.NEW_ATTRIBUTE3;
23120      x_version_label_rec.ATTRIBUTE4         := C1.NEW_ATTRIBUTE4;
23121      x_version_label_rec.ATTRIBUTE5         := C1.NEW_ATTRIBUTE5;
23122      x_version_label_rec.ATTRIBUTE6         := C1.NEW_ATTRIBUTE6;
23123      x_version_label_rec.ATTRIBUTE7         := C1.NEW_ATTRIBUTE7;
23124      x_version_label_rec.ATTRIBUTE8         := C1.NEW_ATTRIBUTE8;
23125      x_version_label_rec.ATTRIBUTE9         := C1.NEW_ATTRIBUTE9;
23126      x_version_label_rec.ATTRIBUTE10        := C1.NEW_ATTRIBUTE10;
23127      x_version_label_rec.ATTRIBUTE11        := C1.NEW_ATTRIBUTE11;
23128      x_version_label_rec.ATTRIBUTE12        := C1.NEW_ATTRIBUTE12;
23129      x_version_label_rec.ATTRIBUTE13        := C1.NEW_ATTRIBUTE13;
23130      x_version_label_rec.ATTRIBUTE14        := C1.NEW_ATTRIBUTE14;
23131      x_version_label_rec.ATTRIBUTE15        := C1.NEW_ATTRIBUTE15;
23132 
23133   END LOOP;
23134 END Initialize_ver_rec ;
23135 
23136 /*----------------------------------------------------------*/
23137 /* Procedure name:  Construct_ver_from_hist                 */
23138 /* Description : This procudure recontructs the record      */
23139 /*                 from the history                         */
23140 /*----------------------------------------------------------*/
23141 
23142 PROCEDURE Construct_ver_from_hist
23143 (
23144   x_version_label_tbl      IN OUT NOCOPY csi_datastructures_pub.version_label_tbl,
23145   p_time_stamp             IN DATE
23146    ) IS
23147 
23148  l_nearest_full_dump      DATE := p_time_stamp;
23149  l_ver_label_hist_id      NUMBER;
23150 
23151 CURSOR get_nearest_full_dump(p_ver_label_id IN NUMBER ,p_time IN DATE) IS
23152 SELECT
23153   MAX(version_label_history_id)
23154 FROM CSI_I_VERSION_LABELS_H
23155 WHERE creation_date <= p_time
23156   and version_label_id = p_ver_label_id
23157   and  full_dump_flag = 'Y' ;
23158 
23159 CURSOR get_ver_label_hist(p_ver_label_id IN NUMBER ,
23160                          p_nearest_full_dump IN DATE,
23161                          p_time IN DATE ) IS
23162 SELECT
23163     OLD_VERSION_LABEL               ,
23164     NEW_VERSION_LABEL               ,
23165     OLD_DESCRIPTION                 ,
23166     NEW_DESCRIPTION                 ,
23167     OLD_DATE_TIME_STAMP             ,
23168     NEW_DATE_TIME_STAMP             ,
23169     OLD_ACTIVE_START_DATE           ,
23170     NEW_ACTIVE_START_DATE           ,
23171     OLD_ACTIVE_END_DATE             ,
23172     NEW_ACTIVE_END_DATE             ,
23173     OLD_CONTEXT                     ,
23174     NEW_CONTEXT                     ,
23175     OLD_ATTRIBUTE1                  ,
23176     NEW_ATTRIBUTE1                  ,
23177     OLD_ATTRIBUTE2                  ,
23178     NEW_ATTRIBUTE2                  ,
23179     OLD_ATTRIBUTE3                  ,
23180     NEW_ATTRIBUTE3                  ,
23181     OLD_ATTRIBUTE4                  ,
23182     NEW_ATTRIBUTE4                  ,
23183     OLD_ATTRIBUTE5                  ,
23184     NEW_ATTRIBUTE5                  ,
23185     OLD_ATTRIBUTE6                  ,
23186     NEW_ATTRIBUTE6                  ,
23187     OLD_ATTRIBUTE7                  ,
23188     NEW_ATTRIBUTE7                  ,
23189     OLD_ATTRIBUTE8                  ,
23190     NEW_ATTRIBUTE8                  ,
23191     OLD_ATTRIBUTE9                  ,
23192     NEW_ATTRIBUTE9                  ,
23193     OLD_ATTRIBUTE10                 ,
23194     NEW_ATTRIBUTE10                 ,
23195     OLD_ATTRIBUTE11                 ,
23196     NEW_ATTRIBUTE11                 ,
23197     OLD_ATTRIBUTE12                 ,
23198     NEW_ATTRIBUTE12                 ,
23199     OLD_ATTRIBUTE13                 ,
23200     NEW_ATTRIBUTE13                 ,
23201     OLD_ATTRIBUTE14                 ,
23202     NEW_ATTRIBUTE14                 ,
23203     OLD_ATTRIBUTE15                 ,
23204     NEW_ATTRIBUTE15
23205  FROM CSI_I_VERSION_LABELS_H
23206 WHERE creation_date <= p_time
23207   and creation_date >= p_nearest_full_dump
23208   and version_label_id = p_ver_label_id
23209   ORDER BY creation_date;
23210 
23211 l_time_stamp  DATE := p_time_stamp;
23212 
23213 BEGIN
23214 
23215 FOR i IN x_version_label_tbl.FIRST..x_version_label_tbl.LAST LOOP
23216 
23217   OPEN get_nearest_full_dump(x_version_label_tbl(i).version_label_id, p_time_stamp);
23218   FETCH get_nearest_full_dump INTO l_ver_label_hist_id;
23219   CLOSE get_nearest_full_dump;
23220 
23221   IF l_ver_label_hist_id IS NOT NULL THEN
23222      Initialize_ver_rec( x_version_label_tbl(i), l_ver_label_hist_id ,l_nearest_full_dump);
23223   ELSE
23224      Initialize_ver_rec_no_dump( x_version_label_tbl(i), x_version_label_tbl(i).version_label_id, l_time_stamp);
23225 
23226             l_nearest_full_dump :=  l_time_stamp;
23227          -- If the user chooses a date before the creation date of the instance
23228          -- then raise an error
23229            IF p_time_stamp < l_time_stamp THEN
23230                FND_MESSAGE.SET_NAME('CSI','CSI_H_DATE_BEFORE_CRE_DATE');
23231                FND_MESSAGE.SET_TOKEN('CREATION_DATE',to_char(l_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
23232                FND_MESSAGE.SET_TOKEN('USER_DATE',to_char(p_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
23233                FND_MSG_PUB.Add;
23234                RAISE FND_API.G_EXC_ERROR;
23235            END IF;
23236 
23237   END IF;
23238 
23239   FOR C2 IN get_ver_label_hist(x_version_label_tbl(i).version_label_id ,l_nearest_full_dump,p_time_stamp ) LOOP
23240 
23241         IF (C2.OLD_VERSION_LABEL IS NULL AND C2.NEW_VERSION_LABEL IS NOT NULL)
23242         OR (C2.OLD_VERSION_LABEL IS NOT NULL AND C2.NEW_VERSION_LABEL IS NULL)
23243         OR (C2.OLD_VERSION_LABEL <> C2.NEW_VERSION_LABEL) THEN
23244              x_version_label_tbl(i).VERSION_LABEL := C2.NEW_VERSION_LABEL;
23245         END IF;
23246 
23247         IF (C2.OLD_DESCRIPTION IS NULL AND C2.NEW_DESCRIPTION IS NOT NULL)
23248         OR (C2.OLD_DESCRIPTION IS NOT NULL AND C2.NEW_DESCRIPTION IS NULL)
23249         OR (C2.OLD_DESCRIPTION <> C2.NEW_DESCRIPTION) THEN
23250              x_version_label_tbl(i).DESCRIPTION := C2.NEW_DESCRIPTION;
23251         END IF;
23252 
23253         IF (C2.OLD_DATE_TIME_STAMP IS NULL AND C2.NEW_DATE_TIME_STAMP IS NOT NULL)
23254         OR (C2.OLD_DATE_TIME_STAMP IS NOT NULL AND C2.NEW_DATE_TIME_STAMP IS NULL)
23255         OR (C2.OLD_DATE_TIME_STAMP <> C2.NEW_DATE_TIME_STAMP) THEN
23256              x_version_label_tbl(i).DATE_TIME_STAMP := C2.NEW_DATE_TIME_STAMP;
23257         END IF;
23258 
23259         IF (C2.OLD_ACTIVE_START_DATE IS NULL AND C2.NEW_ACTIVE_START_DATE IS NOT NULL)
23260         OR (C2.OLD_ACTIVE_START_DATE IS NOT NULL AND C2.NEW_ACTIVE_START_DATE IS NULL)
23261         OR (C2.OLD_ACTIVE_START_DATE <> C2.NEW_ACTIVE_START_DATE) THEN
23262              x_version_label_tbl(i).ACTIVE_START_DATE := C2.NEW_ACTIVE_START_DATE;
23263         END IF;
23264 
23265 
23266         IF (C2.OLD_ACTIVE_END_DATE IS NULL AND C2.NEW_ACTIVE_END_DATE IS NOT NULL)
23267         OR (C2.OLD_ACTIVE_END_DATE IS NOT NULL AND C2.NEW_ACTIVE_END_DATE IS NULL)
23268         OR (C2.OLD_ACTIVE_END_DATE <> C2.NEW_ACTIVE_END_DATE) THEN
23269              x_version_label_tbl(i).ACTIVE_END_DATE := C2.NEW_ACTIVE_END_DATE;
23270         END IF;
23271 
23272 
23273         IF (C2.OLD_CONTEXT IS NULL AND C2.NEW_CONTEXT IS NOT NULL)
23274         OR (C2.OLD_CONTEXT IS NOT NULL AND C2.NEW_CONTEXT IS NULL)
23275         OR (C2.OLD_CONTEXT <> C2.NEW_CONTEXT) THEN
23276              x_version_label_tbl(i).CONTEXT := C2.NEW_CONTEXT;
23277         END IF;
23278 
23279         IF (C2.OLD_ATTRIBUTE1 IS NULL AND C2.NEW_ATTRIBUTE1 IS NOT NULL)
23280         OR (C2.OLD_ATTRIBUTE1 IS NOT NULL AND C2.NEW_ATTRIBUTE1 IS NULL)
23281         OR (C2.OLD_ATTRIBUTE1 <> C2.NEW_ATTRIBUTE1) THEN
23282              x_version_label_tbl(i).ATTRIBUTE1 := C2.NEW_ATTRIBUTE1;
23283         END IF;
23284 
23285         IF (C2.OLD_ATTRIBUTE2 IS NULL AND C2.NEW_ATTRIBUTE2 IS NOT NULL)
23286         OR (C2.OLD_ATTRIBUTE2 IS NOT NULL AND C2.NEW_ATTRIBUTE2 IS NULL)
23287         OR (C2.OLD_ATTRIBUTE2 <> C2.NEW_ATTRIBUTE2) THEN
23288              x_version_label_tbl(i).ATTRIBUTE2 := C2.NEW_ATTRIBUTE2;
23289         END IF;
23290 
23291         IF (C2.OLD_ATTRIBUTE3 IS NULL AND C2.NEW_ATTRIBUTE3 IS NOT NULL)
23292         OR (C2.OLD_ATTRIBUTE3 IS NOT NULL AND C2.NEW_ATTRIBUTE3 IS NULL)
23293         OR (C2.OLD_ATTRIBUTE3 <> C2.NEW_ATTRIBUTE3) THEN
23294              x_version_label_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
23295         END IF;
23296 
23297         IF (C2.OLD_ATTRIBUTE4 IS NULL AND C2.NEW_ATTRIBUTE4 IS NOT NULL)
23298         OR (C2.OLD_ATTRIBUTE4 IS NOT NULL AND C2.NEW_ATTRIBUTE4 IS NULL)
23299         OR (C2.OLD_ATTRIBUTE4 <> C2.NEW_ATTRIBUTE4) THEN
23300              x_version_label_tbl(i).ATTRIBUTE4 := C2.NEW_ATTRIBUTE4;
23301         END IF;
23302 
23303 
23304         IF (C2.OLD_ATTRIBUTE5 IS NULL AND C2.NEW_ATTRIBUTE5 IS NOT NULL)
23305         OR (C2.OLD_ATTRIBUTE5 IS NOT NULL AND C2.NEW_ATTRIBUTE5 IS NULL)
23306         OR (C2.OLD_ATTRIBUTE5 <> C2.NEW_ATTRIBUTE5) THEN
23307              x_version_label_tbl(i).ATTRIBUTE5 := C2.NEW_ATTRIBUTE5;
23308         END IF;
23309 
23310 
23311         IF (C2.OLD_ATTRIBUTE6 IS NULL AND C2.NEW_ATTRIBUTE6 IS NOT NULL)
23312         OR (C2.OLD_ATTRIBUTE6 IS NOT NULL AND C2.NEW_ATTRIBUTE6 IS NULL)
23313         OR (C2.OLD_ATTRIBUTE6 <> C2.NEW_ATTRIBUTE6) THEN
23314              x_version_label_tbl(i).ATTRIBUTE6 := C2.NEW_ATTRIBUTE6;
23315         END IF;
23316 
23317         IF (C2.OLD_ATTRIBUTE7 IS NULL AND C2.NEW_ATTRIBUTE7 IS NOT NULL)
23318         OR (C2.OLD_ATTRIBUTE7 IS NOT NULL AND C2.NEW_ATTRIBUTE7 IS NULL)
23319         OR (C2.OLD_ATTRIBUTE7 <> C2.NEW_ATTRIBUTE7) THEN
23320              x_version_label_tbl(i).ATTRIBUTE7 := C2.NEW_ATTRIBUTE7;
23321         END IF;
23322 
23323         IF (C2.OLD_ATTRIBUTE8 IS NULL AND C2.NEW_ATTRIBUTE8 IS NOT NULL)
23324         OR (C2.OLD_ATTRIBUTE8 IS NOT NULL AND C2.NEW_ATTRIBUTE8 IS NULL)
23325         OR (C2.OLD_ATTRIBUTE8 <> C2.NEW_ATTRIBUTE8) THEN
23326              x_version_label_tbl(i).ATTRIBUTE8 := C2.NEW_ATTRIBUTE8;
23327         END IF;
23328 
23329         IF (C2.OLD_ATTRIBUTE9 IS NULL AND C2.NEW_ATTRIBUTE9 IS NOT NULL)
23330         OR (C2.OLD_ATTRIBUTE9 IS NOT NULL AND C2.NEW_ATTRIBUTE9 IS NULL)
23331         OR (C2.OLD_ATTRIBUTE9 <> C2.NEW_ATTRIBUTE9) THEN
23332              x_version_label_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
23333         END IF;
23334 
23335 
23336         IF (C2.OLD_ATTRIBUTE10 IS NULL AND C2.NEW_ATTRIBUTE10 IS NOT NULL)
23337         OR (C2.OLD_ATTRIBUTE10 IS NOT NULL AND C2.NEW_ATTRIBUTE10 IS NULL)
23338         OR (C2.OLD_ATTRIBUTE10 <> C2.NEW_ATTRIBUTE10) THEN
23339              x_version_label_tbl(i).ATTRIBUTE10 := C2.NEW_ATTRIBUTE10;
23340         END IF;
23341 
23342 
23343 
23344         IF (C2.OLD_ATTRIBUTE11 IS NULL AND C2.NEW_ATTRIBUTE11 IS NOT NULL)
23345         OR (C2.OLD_ATTRIBUTE11 IS NOT NULL AND C2.NEW_ATTRIBUTE11 IS NULL)
23346         OR (C2.OLD_ATTRIBUTE11 <> C2.NEW_ATTRIBUTE11) THEN
23347              x_version_label_tbl(i).ATTRIBUTE11 := C2.NEW_ATTRIBUTE11;
23348         END IF;
23349 
23350         IF (C2.OLD_ATTRIBUTE12 IS NULL AND C2.NEW_ATTRIBUTE12 IS NOT NULL)
23351         OR (C2.OLD_ATTRIBUTE12 IS NOT NULL AND C2.NEW_ATTRIBUTE12 IS NULL)
23352         OR (C2.OLD_ATTRIBUTE12 <> C2.NEW_ATTRIBUTE12) THEN
23353              x_version_label_tbl(i).ATTRIBUTE12 := C2.NEW_ATTRIBUTE12;
23354         END IF;
23355 
23356 
23357         IF (C2.OLD_ATTRIBUTE13 IS NULL AND C2.NEW_ATTRIBUTE13 IS NOT NULL)
23358         OR (C2.OLD_ATTRIBUTE13 IS NOT NULL AND C2.NEW_ATTRIBUTE13 IS NULL)
23359         OR (C2.OLD_ATTRIBUTE13 <> C2.NEW_ATTRIBUTE13) THEN
23360              x_version_label_tbl(i).ATTRIBUTE13 := C2.NEW_ATTRIBUTE13;
23361         END IF;
23362 
23363 
23364         IF (C2.OLD_ATTRIBUTE14 IS NULL AND C2.NEW_ATTRIBUTE14 IS NOT NULL)
23365         OR (C2.OLD_ATTRIBUTE14 IS NOT NULL AND C2.NEW_ATTRIBUTE14 IS NULL)
23366         OR (C2.OLD_ATTRIBUTE14 <> C2.NEW_ATTRIBUTE14) THEN
23367              x_version_label_tbl(i).ATTRIBUTE14 := C2.NEW_ATTRIBUTE14;
23368         END IF;
23369 
23370         IF (C2.OLD_ATTRIBUTE15 IS NULL AND C2.NEW_ATTRIBUTE15 IS NOT NULL)
23371         OR (C2.OLD_ATTRIBUTE15 IS NOT NULL AND C2.NEW_ATTRIBUTE15 IS NULL)
23372         OR (C2.OLD_ATTRIBUTE15 <> C2.NEW_ATTRIBUTE15) THEN
23373              x_version_label_tbl(i).ATTRIBUTE15 := C2.NEW_ATTRIBUTE15;
23374         END IF;
23375 
23376 
23377   END LOOP;
23378  END LOOP;
23379 EXCEPTION
23380    WHEN NO_DATA_FOUND THEN
23381      NULL;
23382 END Construct_ver_from_hist;
23383 
23384 
23385 /*--------------------------------------------------------*/
23386 /* Procedure name:  Get_Ver_Column_Values                 */
23387 /* Description : This procudure gets the column values    */
23388 /*                        for the Dynamic SQL             */
23389 /*--------------------------------------------------------*/
23390 
23391 PROCEDURE Get_Ver_Column_Values
23392 (
23393     p_get_ver_cursor_id    IN   NUMBER      ,
23394     x_ver_label_query_rec  OUT   NOCOPY csi_datastructures_pub.version_label_rec
23395     ) IS
23396 BEGIN
23397 
23398  dbms_sql.column_value(p_get_ver_cursor_id, 1, x_ver_label_query_rec.version_label_id);
23399  dbms_sql.column_value(p_get_ver_cursor_id, 2, x_ver_label_query_rec.instance_id);
23400  dbms_sql.column_value(p_get_ver_cursor_id, 3, x_ver_label_query_rec.version_label);
23401  dbms_sql.column_value(p_get_ver_cursor_id, 4, x_ver_label_query_rec.date_time_stamp);
23402  dbms_sql.column_value(p_get_ver_cursor_id, 5, x_ver_label_query_rec.description );
23403  dbms_sql.column_value(p_get_ver_cursor_id, 6, x_ver_label_query_rec.active_start_date);
23404  dbms_sql.column_value(p_get_ver_cursor_id, 7, x_ver_label_query_rec.active_end_date);
23405  dbms_sql.column_value(p_get_ver_cursor_id, 8, x_ver_label_query_rec.context);
23406  dbms_sql.column_value(p_get_ver_cursor_id, 9, x_ver_label_query_rec.attribute1);
23407  dbms_sql.column_value(p_get_ver_cursor_id, 10, x_ver_label_query_rec.attribute2);
23408  dbms_sql.column_value(p_get_ver_cursor_id, 11, x_ver_label_query_rec.attribute3);
23409  dbms_sql.column_value(p_get_ver_cursor_id, 12, x_ver_label_query_rec.attribute4);
23410  dbms_sql.column_value(p_get_ver_cursor_id, 13, x_ver_label_query_rec.attribute5);
23411  dbms_sql.column_value(p_get_ver_cursor_id, 14, x_ver_label_query_rec.attribute6);
23412  dbms_sql.column_value(p_get_ver_cursor_id, 15, x_ver_label_query_rec.attribute7);
23413  dbms_sql.column_value(p_get_ver_cursor_id, 16, x_ver_label_query_rec.attribute8);
23414  dbms_sql.column_value(p_get_ver_cursor_id, 17, x_ver_label_query_rec.attribute9);
23415  dbms_sql.column_value(p_get_ver_cursor_id, 18, x_ver_label_query_rec.attribute10);
23416  dbms_sql.column_value(p_get_ver_cursor_id, 19, x_ver_label_query_rec.attribute11);
23417  dbms_sql.column_value(p_get_ver_cursor_id, 20, x_ver_label_query_rec.attribute12);
23418  dbms_sql.column_value(p_get_ver_cursor_id, 21, x_ver_label_query_rec.attribute13);
23419  dbms_sql.column_value(p_get_ver_cursor_id, 22, x_ver_label_query_rec.attribute14);
23420  dbms_sql.column_value(p_get_ver_cursor_id, 23, x_ver_label_query_rec.attribute15);
23421  dbms_sql.column_value(p_get_ver_cursor_id, 29, x_ver_label_query_rec.object_version_number);
23422 
23423 END Get_Ver_Column_Values;
23424 
23425 
23426 /*----------------------------------------------------------*/
23427 /* Procedure name:  Define_Ver_Columns                      */
23428 /* Description : This procudure defines the columns         */
23429 /*                        for the Dynamic SQL               */
23430 /*----------------------------------------------------------*/
23431 
23432 PROCEDURE Define_Ver_Columns
23433 (
23434     p_get_ver_cursor_id      IN   NUMBER
23435     ) IS
23436 
23437   l_ver_label_rec   csi_datastructures_pub.version_label_rec;
23438 
23439 BEGIN
23440 
23441  dbms_sql.define_column(p_get_ver_cursor_id, 1, l_ver_label_rec.version_label_id);
23442  dbms_sql.define_column(p_get_ver_cursor_id, 2, l_ver_label_rec.instance_id);
23443  dbms_sql.define_column(p_get_ver_cursor_id, 3, l_ver_label_rec.version_label,30);
23444  dbms_sql.define_column(p_get_ver_cursor_id, 4, l_ver_label_rec.date_time_stamp);
23445  dbms_sql.define_column(p_get_ver_cursor_id, 5, l_ver_label_rec.description ,30);
23446  dbms_sql.define_column(p_get_ver_cursor_id, 6, l_ver_label_rec.active_start_date);
23447  dbms_sql.define_column(p_get_ver_cursor_id, 7, l_ver_label_rec.active_end_date);
23448  dbms_sql.define_column(p_get_ver_cursor_id, 8, l_ver_label_rec.context,30);
23449  dbms_sql.define_column(p_get_ver_cursor_id, 9, l_ver_label_rec.attribute1,150);
23450  dbms_sql.define_column(p_get_ver_cursor_id, 10, l_ver_label_rec.attribute2,150);
23451  dbms_sql.define_column(p_get_ver_cursor_id, 11, l_ver_label_rec.attribute3,150);
23452  dbms_sql.define_column(p_get_ver_cursor_id, 12, l_ver_label_rec.attribute4,150);
23453  dbms_sql.define_column(p_get_ver_cursor_id, 13, l_ver_label_rec.attribute5,150);
23454  dbms_sql.define_column(p_get_ver_cursor_id, 14, l_ver_label_rec.attribute6,150);
23455  dbms_sql.define_column(p_get_ver_cursor_id, 15, l_ver_label_rec.attribute7,150);
23456  dbms_sql.define_column(p_get_ver_cursor_id, 16, l_ver_label_rec.attribute8,150);
23457  dbms_sql.define_column(p_get_ver_cursor_id, 17, l_ver_label_rec.attribute9,150);
23458  dbms_sql.define_column(p_get_ver_cursor_id, 18, l_ver_label_rec.attribute10,150);
23459  dbms_sql.define_column(p_get_ver_cursor_id, 19, l_ver_label_rec.attribute11,150);
23460  dbms_sql.define_column(p_get_ver_cursor_id, 20, l_ver_label_rec.attribute12,150);
23461  dbms_sql.define_column(p_get_ver_cursor_id, 21, l_ver_label_rec.attribute13,150);
23462  dbms_sql.define_column(p_get_ver_cursor_id, 22, l_ver_label_rec.attribute14,150);
23463  dbms_sql.define_column(p_get_ver_cursor_id, 23, l_ver_label_rec.attribute15,150);
23464  dbms_sql.define_column(p_get_ver_cursor_id, 29, l_ver_label_rec.object_version_number);
23465 
23466 END Define_Ver_Columns;
23467 
23468 /*----------------------------------------------------------*/
23469 /* Procedure name:  Bind_Ver_variable                       */
23470 /* Description : Procedure used to  generate the where      */
23471 /*                cluase  for Party relationship            */
23472 /*----------------------------------------------------------*/
23473 PROCEDURE Bind_Ver_variable
23474 (
23475     p_ver_label_query_rec  IN    csi_datastructures_pub.version_label_query_rec,
23476     p_get_ver_cursor_id    IN    NUMBER
23477     ) IS
23478 
23479 BEGIN
23480  IF( (p_ver_label_query_rec.version_label_id IS NOT NULL)
23481                   AND (p_ver_label_query_rec.version_label_id <> FND_API.G_MISS_NUM))  THEN
23482     DBMS_SQL.BIND_VARIABLE(p_get_ver_cursor_id, ':version_label_id', p_ver_label_query_rec.version_label_id);
23483  END IF;
23484 
23485  IF( (p_ver_label_query_rec.instance_id IS NOT NULL)
23486                   AND (p_ver_label_query_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
23487     DBMS_SQL.BIND_VARIABLE(p_get_ver_cursor_id, ':instance_id', p_ver_label_query_rec.instance_id);
23488  END IF;
23489 
23490  IF( (p_ver_label_query_rec.version_label IS NOT NULL)
23491                   AND (p_ver_label_query_rec.version_label <> FND_API.G_MISS_CHAR))  THEN
23492     DBMS_SQL.BIND_VARIABLE(p_get_ver_cursor_id, ':version_label', p_ver_label_query_rec.version_label);
23493  END IF;
23494 
23495  IF( (p_ver_label_query_rec.date_time_stamp IS NOT NULL)
23496                   AND (p_ver_label_query_rec.date_time_stamp <> FND_API.G_MISS_DATE))  THEN
23497     DBMS_SQL.BIND_VARIABLE(p_get_ver_cursor_id, ':date_time_stamp', p_ver_label_query_rec.date_time_stamp);
23498  END IF;
23499 
23500 END Bind_Ver_variable;
23501 
23502 
23503 /*----------------------------------------------------------*/
23504 /* Procedure name:  Gen_Acct_Where_Clause                   */
23505 /* Description : Procedure used to  generate the where      */
23506 /*                cluase  for Party relationship            */
23507 /*----------------------------------------------------------*/
23508 
23509 PROCEDURE Gen_Ver_Where_Clause
23510 (   p_ver_label_query_rec      IN    csi_datastructures_pub.version_label_query_rec
23511    ,x_where_clause             OUT   NOCOPY VARCHAR2
23512    ) IS
23513 
23514 BEGIN
23515  -- Assign null at the start
23516  x_where_clause := '';
23517 
23518 IF (( p_ver_label_query_rec.version_label_id  IS NOT NULL)  AND
23519              ( p_ver_label_query_rec.version_label_id  <> FND_API.G_MISS_NUM)) THEN
23520      x_where_clause := ' version_label_id = :version_label_id ';
23521 ELSIF ( p_ver_label_query_rec.version_label_id  IS NULL) THEN
23522      x_where_clause := ' version_label_id IS NULL ';
23523 END IF;
23524 
23525 IF ((p_ver_label_query_rec.instance_id IS NOT NULL)  AND
23526             (p_ver_label_query_rec.instance_id <> FND_API.G_MISS_NUM))   THEN
23527         IF x_where_clause IS NULL THEN
23528             x_where_clause := ' instance_id = :instance_id ';
23529         ELSE
23530             x_where_clause := x_where_clause||' AND '||' instance_id = :instance_id ';
23531         END IF;
23532 ELSIF (p_ver_label_query_rec.instance_id IS NULL) THEN
23533         IF x_where_clause IS NULL THEN
23534             x_where_clause := ' instance_id IS NULL ';
23535         ELSE
23536             x_where_clause := x_where_clause||' AND '||' instance_id IS NULL ';
23537         END IF;
23538 END IF;
23539 
23540 IF ((p_ver_label_query_rec.version_label  IS NOT NULL)   AND
23541          (p_ver_label_query_rec.version_label  <> FND_API.G_MISS_CHAR)) THEN
23542         IF x_where_clause IS NULL THEN
23543             x_where_clause := ' version_label = :version_label ';
23544         ELSE
23545             x_where_clause := x_where_clause||' AND '||' version_label = :version_label ';
23546         END IF;
23547 ELSIF (p_ver_label_query_rec.version_label  IS NULL) THEN
23548         IF x_where_clause IS NULL THEN
23549             x_where_clause := ' version_label IS NULL ';
23550         ELSE
23551             x_where_clause := x_where_clause||' AND '||' version_label IS NULL ';
23552         END IF;
23553 END IF ;
23554 
23555 IF  ((p_ver_label_query_rec.date_time_stamp IS NOT NULL) AND
23556         (p_ver_label_query_rec.date_time_stamp <> FND_API.G_MISS_DATE)) THEN
23557         IF x_where_clause IS NULL THEN
23558             x_where_clause := '  date_time_stamp = :date_time_stamp ';
23559         ELSE
23560             x_where_clause := x_where_clause||' AND '||
23561                    '  date_time_stamp = :date_time_stamp ';
23562         END IF;
23563 ELSIF (p_ver_label_query_rec.date_time_stamp IS  NULL) THEN
23564         IF x_where_clause IS NULL THEN
23565             x_where_clause := '  date_time_stamp IS NULL ';
23566         ELSE
23567             x_where_clause := x_where_clause||' AND '||
23568                    '  date_time_stamp IS NULL ';
23569         END IF;
23570 
23571 
23572 END IF;
23573 
23574 END Gen_Ver_Where_Clause;
23575 
23576 
23577 /*-------------------------------------------*/
23578 /* Pocedure name: Create_version_label       */
23579 /* Description :   procedure for creating    */
23580 /*                 version label for         */
23581 /*                 an Item Instance          */
23582 /*-------------------------------------------*/
23583 
23584 PROCEDURE create_version_label
23585  (    p_api_version         IN  NUMBER
23586      ,p_commit              IN  VARCHAR2
23587      ,p_init_msg_list       IN  VARCHAR2
23588      ,p_validation_level    IN  NUMBER
23589      ,p_version_label_rec   IN OUT NOCOPY csi_datastructures_pub.version_label_rec
23590      ,p_txn_rec             IN OUT NOCOPY csi_datastructures_pub.transaction_rec
23591      ,x_return_status       OUT NOCOPY VARCHAR2
23592      ,x_msg_count           OUT NOCOPY NUMBER
23593      ,x_msg_data            OUT NOCOPY VARCHAR2
23594    ) IS
23595 
23596      l_api_name           CONSTANT VARCHAR2(30)   := 'CREATE_VERSION_LABEL';
23597      l_api_version       CONSTANT NUMBER           := 1.0                   ;
23598      l_debug_level            NUMBER                             ;
23599      l_process_flag           BOOLEAN        := TRUE                  ;
23600      l_msg_index              NUMBER                                  ;
23601      l_version_label_rec      csi_datastructures_pub.version_label_rec;
23602      l_version_label_hist_id  NUMBER                                  ;
23603      l_flag                   VARCHAR2(1)  :='N';
23604 
23605 BEGIN
23606       -- Standard Start of API savepoint
23607         SAVEPOINT  create_version_label_pvt;
23608 
23609         -- Standard call to check for call compatibility.
23610       IF NOT FND_API.Compatible_API_Call (l_api_version           ,
23611                                                            p_api_version           ,
23612                                                      l_api_name                 ,
23613                                                     G_PKG_NAME                 )
23614       THEN
23615             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
23616       END IF;
23617 
23618     -- Initialize message list if p_init_msg_list is set to TRUE.
23619       IF FND_API.to_Boolean( p_init_msg_list ) THEN
23620             FND_MSG_PUB.initialize;
23621       END IF;
23622 
23623       --  Initialize API return status to success
23624       x_return_status := FND_API.G_RET_STS_SUCCESS;
23625 
23626     -- Check the profile option debug_level for debug message reporting
23627     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
23628 
23629     -- If debug_level = 1 then dump the procedure name
23630     IF (l_debug_level > 0) THEN
23631            csi_gen_utility_pvt.put_line ( 'create_version_label');
23632     END IF;
23633 
23634     -- If the debug level = 2 then dump all the parameters values.
23635     IF (l_debug_level > 1) THEN
23636              csi_gen_utility_pvt.put_line ( 'create_version_label:'||
23637                                                    p_api_version           ||'-'||
23638                                                   p_commit                ||'-'||
23639                                                    p_init_msg_list                );
23640        -- Dump the records in the log file
23641        csi_gen_utility_pvt.dump_version_label_rec(p_version_label_rec);
23642     END IF;
23643 
23644     -- Start API body
23645       --
23646     -- Check if all the required parameters are passed
23647            CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
23648              (    p_version_label_rec.INSTANCE_ID ,
23649                 '  p_version_label_rec.INSTANCE_ID ',
23650                    l_api_name           );
23651 
23652            CSI_Instance_parties_vld_pvt.Check_Reqd_Param_char
23653              (    p_version_label_rec.version_label  ,
23654                 '  p_version_label_rec.version_label ',
23655                    l_api_name           );
23656 
23657            CSI_Instance_parties_vld_pvt.Check_Reqd_Param_date
23658              (    p_version_label_rec.date_time_stamp ,
23659                 '  p_version_label_rec.date_time_stamp ',
23660                    l_api_name           );
23661         -- Validate the Instance id exists in csi_item_instances
23662         IF NOT( CSI_Instance_parties_vld_pvt.Is_InstanceID_Valid
23663                                      (p_version_label_rec.INSTANCE_ID)) THEN
23664              RAISE FND_API.G_EXC_ERROR;
23665         END IF;
23666         -- If active_start_date is null or G_MISS value then assign sysdate
23667         IF ((p_version_label_rec.ACTIVE_START_DATE IS NULL ) OR
23668            ( p_version_label_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE)) THEN
23669              p_version_label_rec.ACTIVE_START_DATE := SYSDATE;
23670         END IF;
23671         -- verify if the active_start_date is valid
23672         IF NOT(CSI_Item_Instance_Vld_Pvt.Is_Ver_StartDate_Valid
23673                                          (p_version_label_rec.ACTIVE_START_DATE,
23674                                           p_version_label_rec.ACTIVE_END_DATE ,
23675                                           p_version_label_rec.INSTANCE_ID  )) THEN
23676             RAISE FND_API.G_EXC_ERROR;
23677         END IF;
23678         -- Verify if the active_end_date is valid
23679         IF ((p_version_label_rec.ACTIVE_END_DATE is NOT NULL) AND
23680             (p_version_label_rec.ACTIVE_END_DATE <> FND_API.G_MISS_DATE ))  THEN
23681              IF NOT(CSI_Item_Instance_vld_pvt.Is_Ver_EndDate_Valid
23682                                  (p_version_label_rec.ACTIVE_START_DATE,
23683                                   p_version_label_rec.ACTIVE_END_DATE ,
23684                                   p_version_label_rec.INSTANCE_ID  ))  THEN
23685                 RAISE FND_API.G_EXC_ERROR;
23686              END IF;
23687         END IF;
23688 
23689         -- Initialize the datetimestamp to SYSDATE if it is null
23690         IF ((p_version_label_rec.date_time_stamp IS NULL ) OR
23691            ( p_version_label_rec.date_time_stamp = FND_API.G_MISS_DATE)) THEN
23692              p_version_label_rec.date_time_stamp := SYSDATE;
23693         END IF;
23694 
23695         -- Verify the timestamp is less than the end effective date but greater then
23696         -- the start effective date
23697         IF p_version_label_rec.date_time_stamp is NOT NULL THEN
23698              IF NOT(CSI_Instance_parties_vld_pvt.Is_timestamp_Valid
23699                                  (p_version_label_rec.date_time_stamp,
23700                                   p_version_label_rec.INSTANCE_ID  ))  THEN
23701                 RAISE FND_API.G_EXC_ERROR;
23702              END IF;
23703         END IF;
23704 
23705 
23706         IF  p_version_label_rec.VERSION_LABEL_ID is  NULL THEN
23707 
23708            -- If the vesrion label id passed is null then generate from sequence
23709            -- and check if the value exists . If exists then generate
23710            -- again from the sequence till we get a value that does not exist
23711            while l_process_flag loop
23712             p_version_label_rec.VERSION_LABEL_ID := CSI_Instance_parties_vld_pvt.gen_ver_label_id;
23713             IF NOT(CSI_Instance_parties_vld_pvt.Is_Ver_labelID_exists(p_version_label_rec.VERSION_LABEL_ID,
23714                                                                        FALSE                   )) THEN
23715                 l_process_flag := FALSE;
23716             END IF;
23717            end loop;
23718          ELSE
23719             -- Validate the version label id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
23720             IF CSI_Instance_parties_vld_pvt.Is_Ver_labelID_exists(p_version_label_rec.VERSION_LABEL_ID,
23721                                                                   TRUE                        ) THEN
23722                 RAISE FND_API.G_EXC_ERROR;
23723             END IF;
23724         END IF;
23725         -- call the Table handlers to insert the record
23726         CSI_I_VERSION_LABELS_PKG.Insert_Row(
23727           p_VERSION_LABEL_ID  =>  p_version_label_rec.VERSION_LABEL_ID,
23728           p_INSTANCE_ID       =>  p_version_label_rec.instance_id ,
23729           p_VERSION_LABEL     =>  p_version_label_rec.version_label,
23730           p_DATE_TIME_STAMP   =>  p_version_label_rec.date_time_stamp,
23731           p_DESCRIPTION       =>  p_version_label_rec.description,
23732           p_ACTIVE_START_DATE =>  p_version_label_rec.active_start_date,
23733           p_ACTIVE_END_DATE   =>  p_version_label_rec.active_end_date,
23734           p_CONTEXT           =>  p_version_label_rec.context,
23735           p_ATTRIBUTE1        =>  p_version_label_rec.attribute1,
23736           p_ATTRIBUTE2        =>  p_version_label_rec.attribute2,
23737           p_ATTRIBUTE3        =>  p_version_label_rec.attribute3,
23738           p_ATTRIBUTE4        =>  p_version_label_rec.attribute4,
23739           p_ATTRIBUTE5        =>  p_version_label_rec.attribute5,
23740           p_ATTRIBUTE6        =>  p_version_label_rec.attribute6,
23741           p_ATTRIBUTE7        =>  p_version_label_rec.attribute7,
23742           p_ATTRIBUTE8        =>  p_version_label_rec.attribute8,
23743           p_ATTRIBUTE9        =>  p_version_label_rec.attribute9,
23744           p_ATTRIBUTE10       =>  p_version_label_rec.attribute10,
23745           p_ATTRIBUTE11       =>  p_version_label_rec.attribute11,
23746           p_ATTRIBUTE12       =>  p_version_label_rec.attribute12,
23747           p_ATTRIBUTE13       =>  p_version_label_rec.attribute13,
23748           p_ATTRIBUTE14       =>  p_version_label_rec.attribute14,
23749           p_ATTRIBUTE15       =>  p_version_label_rec.attribute15,
23750           p_CREATED_BY        =>  FND_GLOBAL.USER_ID             ,
23751           p_CREATION_DATE     =>   SYSDATE                       ,
23752           p_LAST_UPDATED_BY   =>  FND_GLOBAL.USER_ID             ,
23753           p_LAST_UPDATE_DATE  =>  SYSDATE                        ,
23754           p_LAST_UPDATE_LOGIN =>  FND_GLOBAL.LOGIN_ID            ,
23755           p_OBJECT_VERSION_NUMBER =>  1                          );
23756 
23757 
23758         -- Call create_transaction to create txn log
23759         CSI_TRANSACTIONS_PVT.Create_transaction
23760           (
23761              p_api_version            => p_api_version
23762             ,p_commit                 => p_commit
23763             ,p_init_msg_list          => p_init_msg_list
23764             ,p_validation_level       => p_validation_level
23765             ,p_Success_If_Exists_Flag => 'Y'
23766             ,P_transaction_rec        => p_txn_rec
23767             ,x_return_status          => x_return_status
23768             ,x_msg_count              => x_msg_count
23769             ,x_msg_data               => x_msg_data      );
23770 
23771          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
23772                 l_msg_index := 1;
23773                 WHILE x_msg_count > 0 LOOP
23774                         x_msg_data := FND_MSG_PUB.GET(
23775                                                     l_msg_index,
23776                                                     FND_API.G_FALSE      );
23777                       CSI_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
23778                        l_msg_index := l_msg_index + 1;
23779                        x_msg_count := x_msg_count - 1;
23780                 END LOOP;
23781                 RAISE FND_API.G_EXC_ERROR;
23782          END IF;
23783 
23784        -- Generate a unique instance_party_history_id from the sequence
23785        l_version_label_hist_id   := CSI_Instance_parties_vld_pvt.gen_ver_label_hist_id;
23786 
23787        -- Call the table handlers to insert into history table
23788 
23789        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
23790        (
23791           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
23792           p_VERSION_LABEL_ID            => p_version_label_rec.VERSION_LABEL_ID    ,
23793           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
23794           p_OLD_VERSION_LABEL           => NULL                                    ,
23795           p_NEW_VERSION_LABEL           => p_version_label_rec.VERSION_LABEL       ,
23796           p_OLD_DESCRIPTION             => NULL                                    ,
23797           p_NEW_DESCRIPTION             => p_version_label_rec.DESCRIPTION         ,
23798           p_OLD_DATE_TIME_STAMP         => NULL                                    ,
23799           p_NEW_DATE_TIME_STAMP         => p_version_label_rec.DATE_TIME_STAMP     ,
23800           p_OLD_ACTIVE_START_DATE       => NULL                                    ,
23801           p_NEW_ACTIVE_START_DATE       => p_version_label_rec.ACTIVE_START_DATE   ,
23802           p_OLD_ACTIVE_END_DATE         => NULL                                    ,
23803           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
23804           p_OLD_CONTEXT                 => NULL                           ,
23805           p_NEW_CONTEXT                 => p_version_label_rec.CONTEXT    ,
23806           p_OLD_ATTRIBUTE1              => NULL                           ,
23807           p_NEW_ATTRIBUTE1              => p_version_label_rec.ATTRIBUTE1 ,
23808           p_OLD_ATTRIBUTE2              => NULL                           ,
23809           p_NEW_ATTRIBUTE2              => p_version_label_rec.ATTRIBUTE2 ,
23810           p_OLD_ATTRIBUTE3              => NULL                           ,
23811           p_NEW_ATTRIBUTE3              => p_version_label_rec.ATTRIBUTE3 ,
23812           p_OLD_ATTRIBUTE4              => NULL                           ,
23813           p_NEW_ATTRIBUTE4              => p_version_label_rec.ATTRIBUTE4 ,
23814           p_OLD_ATTRIBUTE5              => NULL                           ,
23815           p_NEW_ATTRIBUTE5              => p_version_label_rec.ATTRIBUTE5 ,
23816           p_OLD_ATTRIBUTE6              => NULL                           ,
23817           p_NEW_ATTRIBUTE6              => p_version_label_rec.ATTRIBUTE6 ,
23818           p_OLD_ATTRIBUTE7              => NULL                           ,
23819           p_NEW_ATTRIBUTE7              => p_version_label_rec.ATTRIBUTE7 ,
23820           p_OLD_ATTRIBUTE8              => NULL                           ,
23821           p_NEW_ATTRIBUTE8              => p_version_label_rec.ATTRIBUTE8 ,
23822           p_OLD_ATTRIBUTE9              => NULL                           ,
23823           p_NEW_ATTRIBUTE9              => p_version_label_rec.ATTRIBUTE9 ,
23824           p_OLD_ATTRIBUTE10             => NULL                           ,
23825           p_NEW_ATTRIBUTE10             => p_version_label_rec.ATTRIBUTE10,
23826           p_OLD_ATTRIBUTE11             => NULL                           ,
23827           p_NEW_ATTRIBUTE11             => p_version_label_rec.ATTRIBUTE11,
23828           p_OLD_ATTRIBUTE12             => NULL                           ,
23829           p_NEW_ATTRIBUTE12             => p_version_label_rec.ATTRIBUTE12,
23830           p_OLD_ATTRIBUTE13             => NULL                           ,
23831           p_NEW_ATTRIBUTE13             => p_version_label_rec.ATTRIBUTE13,
23832           p_OLD_ATTRIBUTE14             => NULL                           ,
23833           p_NEW_ATTRIBUTE14             => p_version_label_rec.ATTRIBUTE14,
23834           p_OLD_ATTRIBUTE15             => NULL                           ,
23835           p_NEW_ATTRIBUTE15             => p_version_label_rec.ATTRIBUTE15,
23836           p_FULL_DUMP_FLAG              => 'N'                            ,
23837           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
23838           p_CREATION_DATE               => SYSDATE                        ,
23839           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
23840           p_LAST_UPDATE_DATE            => SYSDATE                        ,
23841           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
23842           p_OBJECT_VERSION_NUMBER       => 1                              );
23843 
23844 
23845       --
23846       -- End of API body
23847 
23848     -- Standard check of p_commit.
23849 
23850       IF FND_API.To_Boolean( p_commit ) THEN
23851             COMMIT WORK;
23852       END IF;
23853 
23854       -- Standard call to get message count and if count is  get message info.
23855       FND_MSG_PUB.Count_And_Get
23856             (p_encoded => FND_API.G_FALSE,
23857                  p_count       =>       x_msg_count ,
23858             p_data       =>       x_msg_data      );
23859 
23860 EXCEPTION
23861     WHEN FND_API.G_EXC_ERROR THEN
23862         ROLLBACK TO create_version_label_pvt;
23863             x_return_status := FND_API.G_RET_STS_ERROR ;
23864                         FND_MSG_PUB.Count_And_Get
23865                 (        p_encoded => FND_API.G_FALSE,
23866                  p_count       =>      x_msg_count,
23867                     p_data        =>      x_msg_data);
23868       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
23869             ROLLBACK TO create_version_label_pvt;
23870             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
23871             FND_MSG_PUB.Count_And_Get
23872                 (        p_encoded => FND_API.G_FALSE,
23873                  p_count       =>      x_msg_count,
23874                     p_data         =>      x_msg_data);
23875       WHEN OTHERS THEN
23876             ROLLBACK TO create_version_label_pvt;
23877             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
23878               IF FND_MSG_PUB.Check_Msg_Level
23879                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
23880             THEN
23881                          FND_MSG_PUB.Add_Exc_Msg
23882                     ( G_PKG_NAME, l_api_name );
23883             END IF;
23884             FND_MSG_PUB.Count_And_Get
23885                 (        p_encoded => FND_API.G_FALSE,
23886                  p_count       =>      x_msg_count,
23887                     p_data         =>      x_msg_data);
23888 END create_version_label;
23889 
23890 
23891 /*-------------------------------------------------------*/
23892 /* Procedure name: Update_version_label                  */
23893 /* Description :   procedure for Update                  */
23894 /*                 version label for                     */
23895 /*                 an Item Instance                      */
23896 /*-------------------------------------------------------*/
23897 
23898 PROCEDURE update_version_label
23899  (    p_api_version                 IN  NUMBER
23900      ,p_commit                      IN  VARCHAR2
23901      ,p_init_msg_list               IN  VARCHAR2
23902      ,p_validation_level            IN  NUMBER
23903      ,p_version_label_rec           IN  csi_datastructures_pub.version_label_rec
23904      ,p_txn_rec                     IN OUT NOCOPY csi_datastructures_pub.transaction_rec
23905      ,p_call_transaction            IN  VARCHAR2
23906      ,x_return_status               OUT NOCOPY VARCHAR2
23907      ,x_msg_count                   OUT NOCOPY NUMBER
23908      ,x_msg_data                    OUT NOCOPY VARCHAR2
23909    ) IS
23910 
23911    l_api_name                    CONSTANT VARCHAR2(30)   := 'UPDATE_VERSION_LABEL';
23912    l_api_version                CONSTANT NUMBER            := 1.0;
23913    l_debug_level                   NUMBER;
23914    l_version_label_rec        csi_datastructures_pub.version_label_rec;
23915    l_curr_ver_label_rec       csi_datastructures_pub.version_label_rec;
23916    l_temp_ver_label_rec       csi_datastructures_pub.version_label_rec;
23917    l_msg_index                NUMBER;
23918    l_OBJECT_VERSION_NUMBER    NUMBER;
23919    l_mod_value                NUMBER;
23920    l_version_label_hist_id    NUMBER;
23921    x_msg_index_out            NUMBER;
23922    l_full_dump_frequency      NUMBER;
23923    l_flag                     VARCHAR2(1)  :='N';
23924    l_ver_label_hist_rec       csi_datastructures_pub.version_label_history_rec;
23925 
23926   CURSOR get_curr_ver_label_rec (p_ver_label_id   IN  NUMBER) IS
23927    SELECT
23928      VERSION_LABEL_ID                 ,
23929      INSTANCE_ID                      ,
23930      VERSION_LABEL                    ,
23931      DESCRIPTION                      ,
23932      DATE_TIME_STAMP                  ,
23933      active_start_date                ,
23934      active_end_date                  ,
23935      context                          ,
23936      attribute1                       ,
23937      attribute2                       ,
23938      attribute3                       ,
23939      attribute4                       ,
23940      attribute5                       ,
23941      attribute6                       ,
23942      attribute7                       ,
23943      attribute8                       ,
23944      attribute9                       ,
23945      attribute10                      ,
23946      attribute11                      ,
23947      attribute12                      ,
23948      attribute13                      ,
23949      attribute14                      ,
23950      attribute15                      ,
23951      object_version_number          -- ,
23952     -- null parent_tbl_index                 ,
23953     -- null processed_flag                   ,
23954     -- null interface_id
23955     FROM CSI_I_VERSION_LABELS
23956    WHERE VERSION_LABEL_ID = p_ver_label_id
23957     AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE))
23958     FOR UPDATE OF OBJECT_VERSION_NUMBER ;
23959 
23960   CURSOR version_hist_csr (p_version_hist_id NUMBER) IS
23961    SELECT  *
23962    FROM    csi_i_version_labels_h
23963    WHERE   csi_i_version_labels_h.version_label_history_id = p_version_hist_id
23964    FOR UPDATE OF OBJECT_VERSION_NUMBER ;
23965    l_version_hist_csr    version_hist_csr%ROWTYPE;
23966    l_version_hist_id     NUMBER;
23967 BEGIN
23968 
23969       -- Standard Start of API savepoint
23970          SAVEPOINT  update_version_label_pvt;
23971 
23972         -- Standard call to check for call compatibility.
23973       IF NOT FND_API.Compatible_API_Call (l_api_version     ,
23974                                                          p_api_version     ,
23975                                                    l_api_name             ,
23976                                                     G_PKG_NAME             )
23977       THEN
23978             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
23979       END IF;
23980 
23981     -- Initialize message list if p_init_msg_list is set to TRUE.
23982       IF FND_API.to_Boolean( p_init_msg_list ) THEN
23983             FND_MSG_PUB.initialize;
23984       END IF;
23985 
23986       --  Initialize API return status to success
23987       x_return_status := FND_API.G_RET_STS_SUCCESS;
23988 
23989     -- Check the profile option debug_level for debug message reporting
23990     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
23991 
23992     -- If debug_level = 1 then dump the procedure name
23993     IF (l_debug_level > 0) THEN
23994             CSI_gen_utility_pvt.put_line( 'update_version_label');
23995     END IF;
23996 
23997     -- If the debug level = 2 then dump all the parameters values.
23998     IF (l_debug_level > 1) THEN
23999              CSI_gen_utility_pvt.put_line( 'update_version_label:'||
24000                                                  p_api_version             ||'-'||
24001                                                 p_commit                  ||'-'||
24002                                                  p_init_msg_list           ||'-'||
24003                                  p_validation_level             );
24004     END IF;
24005 
24006     -- Start API body
24007       --
24008     -- Check if all the required parameters are passed
24009         CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
24010             (    p_version_label_rec.version_label_id  ,
24011                 '  p_version_label_rec.version_label_id ',
24012                    l_api_name                           );
24013 
24014      -- Validate the Instance id exists in csi_item_instances
24015      IF  p_version_label_rec.INSTANCE_ID <> FND_API.G_MISS_NUM THEN
24016         IF NOT( CSI_Instance_parties_vld_pvt.Is_InstanceID_Valid
24017                              (p_version_label_rec.INSTANCE_ID)) THEN
24018              RAISE FND_API.G_EXC_ERROR;
24019         END IF;
24020      END IF;
24021 
24022      IF  p_version_label_rec.VERSION_LABEL_ID <> FND_API.G_MISS_NUM THEN
24023 
24024           -- Validate the version label id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
24025           IF NOT(CSI_Instance_parties_vld_pvt.Is_Ver_labelID_exists(p_version_label_rec.VERSION_LABEL_ID,
24026                                                                  FALSE                        )) THEN
24027                 RAISE FND_API.G_EXC_ERROR;
24028           END IF;
24029      END IF;
24030 
24031      -- check if the object_version_number passed matches with the one
24032      -- in the database else raise error
24033      OPEN get_curr_ver_label_rec(p_version_label_rec.VERSION_LABEL_ID);
24034      FETCH get_curr_ver_label_rec INTO l_curr_ver_label_rec;
24035      IF  (l_curr_ver_label_rec.object_version_number <> nvl(p_version_label_rec.OBJECT_VERSION_NUMBER,-1)) THEN
24036             FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
24037             FND_MSG_PUB.ADD;
24038             RAISE FND_API.G_EXC_ERROR;
24039      END IF;
24040      IF get_curr_ver_label_rec%NOTFOUND THEN
24041         FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
24042         FND_MSG_PUB.ADD;
24043         RAISE FND_API.G_EXC_ERROR;
24044      END IF;
24045      CLOSE get_curr_ver_label_rec;
24046 
24047      -- Increment the object_version_number before updating
24048      l_OBJECT_VERSION_NUMBER := l_curr_ver_label_rec.OBJECT_VERSION_NUMBER + 1 ;
24049 
24050      CSI_I_VERSION_LABELS_PKG.Update_Row
24051      (
24052           p_VERSION_LABEL_ID    =>  p_version_label_rec.version_label_id,
24053           p_INSTANCE_ID         =>  p_version_label_rec.instance_id,
24054           p_VERSION_LABEL       =>  p_version_label_rec.VERSION_LABEL,
24055           p_DATE_TIME_STAMP     =>  p_version_label_rec.DATE_TIME_STAMP,
24056           p_DESCRIPTION         =>  p_version_label_rec.DESCRIPTION  ,
24057           p_ACTIVE_START_DATE   =>  p_version_label_rec.ACTIVE_START_DATE,
24058           p_ACTIVE_END_DATE     =>  p_version_label_rec.ACTIVE_END_DATE,
24059           p_CONTEXT             =>  p_version_label_rec.CONTEXT  ,
24060           p_ATTRIBUTE1          =>  p_version_label_rec.ATTRIBUTE1,
24061           p_ATTRIBUTE2          =>  p_version_label_rec.ATTRIBUTE2,
24062           p_ATTRIBUTE3          =>  p_version_label_rec.ATTRIBUTE3,
24063           p_ATTRIBUTE4          =>  p_version_label_rec.ATTRIBUTE4,
24064           p_ATTRIBUTE5          =>  p_version_label_rec.ATTRIBUTE5,
24065           p_ATTRIBUTE6          =>  p_version_label_rec.ATTRIBUTE6,
24066           p_ATTRIBUTE7          =>  p_version_label_rec.ATTRIBUTE7,
24067           p_ATTRIBUTE8          =>  p_version_label_rec.ATTRIBUTE8,
24068           p_ATTRIBUTE9          =>  p_version_label_rec.ATTRIBUTE9,
24069           p_ATTRIBUTE10         =>  p_version_label_rec.ATTRIBUTE10,
24070           p_ATTRIBUTE11         =>  p_version_label_rec.ATTRIBUTE11,
24071           p_ATTRIBUTE12         =>  p_version_label_rec.ATTRIBUTE12,
24072           p_ATTRIBUTE13         =>  p_version_label_rec.ATTRIBUTE13,
24073           p_ATTRIBUTE14         =>  p_version_label_rec.ATTRIBUTE14,
24074           p_ATTRIBUTE15         =>  p_version_label_rec.ATTRIBUTE15,
24075           p_CREATED_BY          =>  fnd_api.g_miss_num ,
24076           p_CREATION_DATE       =>  fnd_api.g_miss_date            ,
24077           p_LAST_UPDATED_BY     =>  FND_GLOBAL.USER_ID ,
24078           p_LAST_UPDATE_DATE    =>  sysdate            ,
24079           p_LAST_UPDATE_LOGIN   =>  FND_GLOBAL.LOGIN_ID,
24080           p_OBJECT_VERSION_NUMBER  =>  l_OBJECT_VERSION_NUMBER );
24081 
24082 
24083          -- Call create_transaction to create txn log
24084        IF p_call_transaction=fnd_api.g_true
24085        THEN
24086          CSI_TRANSACTIONS_PVT.Create_transaction
24087           (
24088              p_api_version            => p_api_version
24089             ,p_commit                 => p_commit
24090             ,p_init_msg_list          => p_init_msg_list
24091             ,p_validation_level       => p_validation_level
24092             ,p_Success_If_Exists_Flag => 'Y'
24093             ,P_transaction_rec        => p_txn_rec
24094             ,x_return_status          => x_return_status
24095             ,x_msg_count              => x_msg_count
24096             ,x_msg_data               => x_msg_data         );
24097 
24098         IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
24099               FOR i in 1..x_msg_Count LOOP
24100                 FND_MSG_PUB.Get(p_msg_index     => i,
24101                                 p_encoded       => 'F',
24102                                 p_data          => x_msg_data,
24103                                 p_msg_index_out => x_msg_index_out );
24104                 CSI_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
24105               End LOOP;
24106               RAISE FND_API.G_EXC_ERROR;
24107          END IF;
24108        END IF;
24109     -- Generate a unique instance_party_history_id from the sequence
24110     l_version_label_hist_id   := CSI_Instance_parties_vld_pvt.gen_ver_label_hist_id;
24111 
24112     -- Get the full_dump_frequency from csi_install_parameter
24113     --
24114     IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
24115        csi_gen_utility_pvt.populate_install_param_rec;
24116     END IF;
24117     --
24118     l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
24119     --
24120     IF l_full_dump_frequency IS NULL THEN
24121        FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
24122        FND_MSG_PUB.ADD;
24123        RAISE FND_API.G_EXC_ERROR;
24124     END IF;
24125     --
24126     select mod(l_object_version_number,l_full_dump_frequency)
24127     into   l_mod_value
24128     from   dual;
24129 
24130      -- Start of modification for Bug#2547034 on 09/20/02 - rtalluri
24131     BEGIN
24132         SELECT  version_label_history_id
24133         INTO    l_version_hist_id
24134         FROM    csi_i_version_labels_h h
24135         WHERE   h.transaction_id = p_txn_rec.transaction_id
24136         AND     h.version_label_id = p_version_label_rec.version_label_id;
24137 
24138         OPEN   version_hist_csr(l_version_hist_id);
24139         FETCH  version_hist_csr INTO l_version_hist_csr ;
24140         CLOSE  version_hist_csr;
24141 
24142         IF l_version_hist_csr.full_dump_flag = 'Y'
24143         THEN
24144          CSI_I_VERSION_LABELS_H_PKG.Update_Row
24145          (
24146           p_VERSION_LABEL_HISTORY_ID    => l_version_hist_id                       ,
24147           p_VERSION_LABEL_ID            => fnd_api.g_miss_num                      ,
24148           p_TRANSACTION_ID              => fnd_api.g_miss_num                      ,
24149           p_OLD_VERSION_LABEL           => fnd_api.g_miss_char                     ,
24150           p_NEW_VERSION_LABEL           => p_version_label_rec.VERSION_LABEL       ,
24151           p_OLD_DESCRIPTION             => fnd_api.g_miss_char                     ,
24152           p_NEW_DESCRIPTION             => p_version_label_rec.DESCRIPTION         ,
24153           p_OLD_DATE_TIME_STAMP         => fnd_api.g_miss_date                     ,
24154           p_NEW_DATE_TIME_STAMP         => p_version_label_rec.DATE_TIME_STAMP     ,
24155           p_OLD_ACTIVE_START_DATE       => fnd_api.g_miss_date                     ,
24156           p_NEW_ACTIVE_START_DATE       => p_version_label_rec.ACTIVE_START_DATE   ,
24157           p_OLD_ACTIVE_END_DATE         => fnd_api.g_miss_date                     ,
24158           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
24159           p_OLD_CONTEXT                 => fnd_api.g_miss_char                     ,
24160           p_NEW_CONTEXT                 => p_version_label_rec.CONTEXT             ,
24161           p_OLD_ATTRIBUTE1              => fnd_api.g_miss_char                     ,
24162           p_NEW_ATTRIBUTE1              => p_version_label_rec.ATTRIBUTE1          ,
24163           p_OLD_ATTRIBUTE2              => fnd_api.g_miss_char                     ,
24164           p_NEW_ATTRIBUTE2              => p_version_label_rec.ATTRIBUTE2          ,
24165           p_OLD_ATTRIBUTE3              => fnd_api.g_miss_char                     ,
24166           p_NEW_ATTRIBUTE3              => p_version_label_rec.ATTRIBUTE3          ,
24167           p_OLD_ATTRIBUTE4              => fnd_api.g_miss_char                     ,
24168           p_NEW_ATTRIBUTE4              => p_version_label_rec.ATTRIBUTE4          ,
24169           p_OLD_ATTRIBUTE5              => fnd_api.g_miss_char                     ,
24170           p_NEW_ATTRIBUTE5              => p_version_label_rec.ATTRIBUTE5          ,
24171           p_OLD_ATTRIBUTE6              => fnd_api.g_miss_char                     ,
24172           p_NEW_ATTRIBUTE6              => p_version_label_rec.ATTRIBUTE6          ,
24173           p_OLD_ATTRIBUTE7              => fnd_api.g_miss_char                     ,
24174           p_NEW_ATTRIBUTE7              => p_version_label_rec.ATTRIBUTE7          ,
24175           p_OLD_ATTRIBUTE8              => fnd_api.g_miss_char                     ,
24176           p_NEW_ATTRIBUTE8              => p_version_label_rec.ATTRIBUTE8          ,
24177           p_OLD_ATTRIBUTE9              => fnd_api.g_miss_char                     ,
24178           p_NEW_ATTRIBUTE9              => p_version_label_rec.ATTRIBUTE9          ,
24179           p_OLD_ATTRIBUTE10             => fnd_api.g_miss_char                     ,
24180           p_NEW_ATTRIBUTE10             => p_version_label_rec.ATTRIBUTE10         ,
24181           p_OLD_ATTRIBUTE11             => fnd_api.g_miss_char                     ,
24182           p_NEW_ATTRIBUTE11             => p_version_label_rec.ATTRIBUTE11         ,
24183           p_OLD_ATTRIBUTE12             => fnd_api.g_miss_char                     ,
24184           p_NEW_ATTRIBUTE12             => p_version_label_rec.ATTRIBUTE12         ,
24185           p_OLD_ATTRIBUTE13             => fnd_api.g_miss_char                     ,
24186           p_NEW_ATTRIBUTE13             => p_version_label_rec.ATTRIBUTE13         ,
24187           p_OLD_ATTRIBUTE14             => fnd_api.g_miss_char                     ,
24188           p_NEW_ATTRIBUTE14             => p_version_label_rec.ATTRIBUTE14         ,
24189           p_OLD_ATTRIBUTE15             => fnd_api.g_miss_char                     ,
24190           p_NEW_ATTRIBUTE15             => p_version_label_rec.ATTRIBUTE15         ,
24191           p_FULL_DUMP_FLAG              => fnd_api.g_miss_char                     ,
24192           p_CREATED_BY                  => fnd_api.g_miss_num                      ,
24193           p_CREATION_DATE               => fnd_api.g_miss_date                     ,
24194           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID                      ,
24195           p_LAST_UPDATE_DATE            => SYSDATE                                 ,
24196           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID                     ,
24197           p_OBJECT_VERSION_NUMBER       => fnd_api.g_miss_num                      );
24198 
24199         ELSE
24200           --
24201              IF    ( l_version_hist_csr.old_version_label IS NULL
24202                 AND  l_version_hist_csr.new_version_label IS NULL ) THEN
24203                      IF  ( p_version_label_rec.version_label = l_curr_ver_label_rec.version_label )
24204                       OR ( p_version_label_rec.version_label = fnd_api.g_miss_char ) THEN
24205                            l_version_hist_csr.old_version_label := NULL;
24206                            l_version_hist_csr.new_version_label := NULL;
24207                      ELSE
24208                            l_version_hist_csr.old_version_label := fnd_api.g_miss_char;
24209                            l_version_hist_csr.new_version_label := p_version_label_rec.version_label;
24210                      END IF;
24211              ELSE
24212                      l_version_hist_csr.old_version_label := fnd_api.g_miss_char;
24213                      l_version_hist_csr.new_version_label := p_version_label_rec.version_label;
24214              END IF;
24215              --
24216              IF    ( l_version_hist_csr.old_date_time_stamp IS NULL
24217                 AND  l_version_hist_csr.new_date_time_stamp IS NULL ) THEN
24218                      IF  ( p_version_label_rec.date_time_stamp = l_curr_ver_label_rec.date_time_stamp )
24219                       OR ( p_version_label_rec.date_time_stamp = fnd_api.g_miss_date ) THEN
24220                            l_version_hist_csr.old_date_time_stamp := NULL;
24221                            l_version_hist_csr.new_date_time_stamp := NULL;
24222                      ELSE
24223                            l_version_hist_csr.old_date_time_stamp := fnd_api.g_miss_date;
24224                            l_version_hist_csr.new_date_time_stamp := p_version_label_rec.date_time_stamp;
24225                      END IF;
24226              ELSE
24227                      l_version_hist_csr.old_date_time_stamp := fnd_api.g_miss_date;
24228                      l_version_hist_csr.new_date_time_stamp := p_version_label_rec.date_time_stamp;
24229              END IF;
24230              --
24231              IF    ( l_version_hist_csr.old_description IS NULL
24232                 AND  l_version_hist_csr.new_description IS NULL ) THEN
24233                      IF  ( p_version_label_rec.description = l_curr_ver_label_rec.description )
24234                       OR ( p_version_label_rec.description = fnd_api.g_miss_char ) THEN
24235                            l_version_hist_csr.old_description := NULL;
24236                            l_version_hist_csr.new_description := NULL;
24237                      ELSE
24238                            l_version_hist_csr.old_description := fnd_api.g_miss_char;
24239                            l_version_hist_csr.new_description := p_version_label_rec.description;
24240                      END IF;
24241              ELSE
24242                      l_version_hist_csr.old_description := fnd_api.g_miss_char;
24243                      l_version_hist_csr.new_description := p_version_label_rec.description;
24244              END IF;
24245              --
24246              IF    ( l_version_hist_csr.old_active_start_date IS NULL
24247                 AND  l_version_hist_csr.new_active_start_date IS NULL ) THEN
24248                      IF  ( p_version_label_rec.active_start_date = l_curr_ver_label_rec.active_start_date )
24249                       OR ( p_version_label_rec.active_start_date = fnd_api.g_miss_date ) THEN
24250                            l_version_hist_csr.old_active_start_date := NULL;
24251                            l_version_hist_csr.new_active_start_date := NULL;
24252                      ELSE
24253                            l_version_hist_csr.old_active_start_date := fnd_api.g_miss_date;
24254                            l_version_hist_csr.new_active_start_date := p_version_label_rec.active_start_date;
24255                      END IF;
24256              ELSE
24257                      l_version_hist_csr.old_active_start_date := fnd_api.g_miss_date;
24258                      l_version_hist_csr.new_active_start_date := p_version_label_rec.active_start_date;
24259              END IF;
24260              --
24261              IF    ( l_version_hist_csr.old_active_end_date IS NULL
24262                 AND  l_version_hist_csr.new_active_end_date IS NULL ) THEN
24263                      IF  ( p_version_label_rec.active_end_date = l_curr_ver_label_rec.active_end_date )
24264                       OR ( p_version_label_rec.active_end_date = fnd_api.g_miss_date ) THEN
24265                            l_version_hist_csr.old_active_end_date := NULL;
24266                            l_version_hist_csr.new_active_end_date := NULL;
24267                      ELSE
24268                            l_version_hist_csr.old_active_end_date := fnd_api.g_miss_date;
24269                            l_version_hist_csr.new_active_end_date := p_version_label_rec.active_end_date;
24270                      END IF;
24271              ELSE
24272                      l_version_hist_csr.old_active_end_date := fnd_api.g_miss_date;
24273                      l_version_hist_csr.new_active_end_date := p_version_label_rec.active_end_date;
24274              END IF;
24275              --
24276              IF    ( l_version_hist_csr.old_context IS NULL
24277                 AND  l_version_hist_csr.new_context IS NULL ) THEN
24278                      IF  ( p_version_label_rec.context = l_curr_ver_label_rec.context )
24279                       OR ( p_version_label_rec.context = fnd_api.g_miss_char ) THEN
24280                            l_version_hist_csr.old_context := NULL;
24281                            l_version_hist_csr.new_context := NULL;
24282                      ELSE
24283                            l_version_hist_csr.old_context := fnd_api.g_miss_char;
24284                            l_version_hist_csr.new_context := p_version_label_rec.context;
24285                      END IF;
24286              ELSE
24287                      l_version_hist_csr.old_context := fnd_api.g_miss_char;
24288                      l_version_hist_csr.new_context := p_version_label_rec.context;
24289              END IF;
24290              --
24291              IF    ( l_version_hist_csr.old_attribute1 IS NULL
24292                 AND  l_version_hist_csr.new_attribute1 IS NULL ) THEN
24293                      IF  ( p_version_label_rec.attribute1 = l_curr_ver_label_rec.attribute1 )
24294                       OR ( p_version_label_rec.attribute1 = fnd_api.g_miss_char ) THEN
24295                            l_version_hist_csr.old_attribute1 := NULL;
24296                            l_version_hist_csr.new_attribute1 := NULL;
24297                      ELSE
24298                            l_version_hist_csr.old_attribute1 := fnd_api.g_miss_char;
24299                            l_version_hist_csr.new_attribute1 := p_version_label_rec.attribute1;
24300                      END IF;
24301              ELSE
24302                      l_version_hist_csr.old_attribute1 := fnd_api.g_miss_char;
24303                      l_version_hist_csr.new_attribute1 := p_version_label_rec.attribute1;
24304              END IF;
24305              --
24306              IF    ( l_version_hist_csr.old_attribute2 IS NULL
24307                 AND  l_version_hist_csr.new_attribute2 IS NULL ) THEN
24308                      IF  ( p_version_label_rec.attribute2 = l_curr_ver_label_rec.attribute2 )
24309                       OR ( p_version_label_rec.attribute2 = fnd_api.g_miss_char ) THEN
24310                            l_version_hist_csr.old_attribute2 := NULL;
24311                            l_version_hist_csr.new_attribute2 := NULL;
24312                      ELSE
24313                            l_version_hist_csr.old_attribute2 := fnd_api.g_miss_char;
24314                            l_version_hist_csr.new_attribute2 := p_version_label_rec.attribute2;
24315                      END IF;
24316              ELSE
24317                      l_version_hist_csr.old_attribute2 := fnd_api.g_miss_char;
24318                      l_version_hist_csr.new_attribute2 := p_version_label_rec.attribute2;
24319              END IF;
24320              --
24321              IF    ( l_version_hist_csr.old_attribute3 IS NULL
24322                 AND  l_version_hist_csr.new_attribute3 IS NULL ) THEN
24323                      IF  ( p_version_label_rec.attribute3 = l_curr_ver_label_rec.attribute3 )
24324                       OR ( p_version_label_rec.attribute3 = fnd_api.g_miss_char ) THEN
24325                            l_version_hist_csr.old_attribute3 := NULL;
24326                            l_version_hist_csr.new_attribute3 := NULL;
24327                      ELSE
24328                            l_version_hist_csr.old_attribute3 := fnd_api.g_miss_char;
24329                            l_version_hist_csr.new_attribute3 := p_version_label_rec.attribute3;
24330                      END IF;
24331              ELSE
24332                      l_version_hist_csr.old_attribute3 := fnd_api.g_miss_char;
24333                      l_version_hist_csr.new_attribute3 := p_version_label_rec.attribute3;
24334              END IF;
24335              --
24336              IF    ( l_version_hist_csr.old_attribute4 IS NULL
24337                 AND  l_version_hist_csr.new_attribute4 IS NULL ) THEN
24338                      IF  ( p_version_label_rec.attribute4 = l_curr_ver_label_rec.attribute4 )
24339                       OR ( p_version_label_rec.attribute4 = fnd_api.g_miss_char ) THEN
24340                            l_version_hist_csr.old_attribute4 := NULL;
24341                            l_version_hist_csr.new_attribute4 := NULL;
24342                      ELSE
24343                            l_version_hist_csr.old_attribute4 := fnd_api.g_miss_char;
24344                            l_version_hist_csr.new_attribute4 := p_version_label_rec.attribute4;
24345                      END IF;
24346              ELSE
24347                      l_version_hist_csr.old_attribute4 := fnd_api.g_miss_char;
24348                      l_version_hist_csr.new_attribute4 := p_version_label_rec.attribute4;
24349              END IF;
24350              --
24351              IF    ( l_version_hist_csr.old_attribute5 IS NULL
24352                 AND  l_version_hist_csr.new_attribute5 IS NULL ) THEN
24353                      IF  ( p_version_label_rec.attribute5 = l_curr_ver_label_rec.attribute5 )
24354                       OR ( p_version_label_rec.attribute5 = fnd_api.g_miss_char ) THEN
24355                            l_version_hist_csr.old_attribute5 := NULL;
24356                            l_version_hist_csr.new_attribute5 := NULL;
24357                      ELSE
24358                            l_version_hist_csr.old_attribute5 := fnd_api.g_miss_char;
24359                            l_version_hist_csr.new_attribute5 := p_version_label_rec.attribute5;
24360                      END IF;
24361              ELSE
24362                      l_version_hist_csr.old_attribute5 := fnd_api.g_miss_char;
24363                      l_version_hist_csr.new_attribute5 := p_version_label_rec.attribute5;
24364              END IF;
24365              --
24366              IF    ( l_version_hist_csr.old_attribute6 IS NULL
24367                 AND  l_version_hist_csr.new_attribute6 IS NULL ) THEN
24368                      IF  ( p_version_label_rec.attribute6 = l_curr_ver_label_rec.attribute6 )
24369                       OR ( p_version_label_rec.attribute6 = fnd_api.g_miss_char ) THEN
24370                            l_version_hist_csr.old_attribute6 := NULL;
24371                            l_version_hist_csr.new_attribute6 := NULL;
24372                      ELSE
24373                            l_version_hist_csr.old_attribute6 := fnd_api.g_miss_char;
24374                            l_version_hist_csr.new_attribute6 := p_version_label_rec.attribute6;
24375                      END IF;
24376              ELSE
24377                      l_version_hist_csr.old_attribute6 := fnd_api.g_miss_char;
24378                      l_version_hist_csr.new_attribute6 := p_version_label_rec.attribute6;
24379              END IF;
24380              --
24381              IF    ( l_version_hist_csr.old_attribute7 IS NULL
24382                 AND  l_version_hist_csr.new_attribute7 IS NULL ) THEN
24383                      IF  ( p_version_label_rec.attribute7 = l_curr_ver_label_rec.attribute7 )
24384                       OR ( p_version_label_rec.attribute7 = fnd_api.g_miss_char ) THEN
24385                            l_version_hist_csr.old_attribute7 := NULL;
24386                            l_version_hist_csr.new_attribute7 := NULL;
24387                      ELSE
24388                            l_version_hist_csr.old_attribute7 := fnd_api.g_miss_char;
24389                            l_version_hist_csr.new_attribute7 := p_version_label_rec.attribute7;
24390                      END IF;
24391              ELSE
24392                      l_version_hist_csr.old_attribute7 := fnd_api.g_miss_char;
24393                      l_version_hist_csr.new_attribute7 := p_version_label_rec.attribute7;
24394              END IF;
24395              --
24396              IF    ( l_version_hist_csr.old_attribute8 IS NULL
24397                 AND  l_version_hist_csr.new_attribute8 IS NULL ) THEN
24398                      IF  ( p_version_label_rec.attribute8 = l_curr_ver_label_rec.attribute8 )
24399                       OR ( p_version_label_rec.attribute8 = fnd_api.g_miss_char ) THEN
24400                            l_version_hist_csr.old_attribute8 := NULL;
24401                            l_version_hist_csr.new_attribute8 := NULL;
24402                      ELSE
24403                            l_version_hist_csr.old_attribute8 := fnd_api.g_miss_char;
24404                            l_version_hist_csr.new_attribute8 := p_version_label_rec.attribute8;
24405                      END IF;
24406              ELSE
24407                      l_version_hist_csr.old_attribute8 := fnd_api.g_miss_char;
24408                      l_version_hist_csr.new_attribute8 := p_version_label_rec.attribute8;
24409              END IF;
24410              --
24411              IF    ( l_version_hist_csr.old_attribute9 IS NULL
24412                 AND  l_version_hist_csr.new_attribute9 IS NULL ) THEN
24413                      IF  ( p_version_label_rec.attribute9 = l_curr_ver_label_rec.attribute9 )
24414                       OR ( p_version_label_rec.attribute9 = fnd_api.g_miss_char ) THEN
24415                            l_version_hist_csr.old_attribute9 := NULL;
24416                            l_version_hist_csr.new_attribute9 := NULL;
24417                      ELSE
24418                            l_version_hist_csr.old_attribute9 := fnd_api.g_miss_char;
24419                            l_version_hist_csr.new_attribute9 := p_version_label_rec.attribute9;
24420                      END IF;
24421              ELSE
24422                      l_version_hist_csr.old_attribute9 := fnd_api.g_miss_char;
24423                      l_version_hist_csr.new_attribute9 := p_version_label_rec.attribute9;
24424              END IF;
24425              --
24426              IF    ( l_version_hist_csr.old_attribute10 IS NULL
24427                 AND  l_version_hist_csr.new_attribute10 IS NULL ) THEN
24428                      IF  ( p_version_label_rec.attribute10 = l_curr_ver_label_rec.attribute10 )
24429                       OR ( p_version_label_rec.attribute10 = fnd_api.g_miss_char ) THEN
24430                            l_version_hist_csr.old_attribute10 := NULL;
24431                            l_version_hist_csr.new_attribute10 := NULL;
24432                      ELSE
24433                            l_version_hist_csr.old_attribute10 := fnd_api.g_miss_char;
24434                            l_version_hist_csr.new_attribute10 := p_version_label_rec.attribute10;
24435                      END IF;
24436              ELSE
24437                      l_version_hist_csr.old_attribute10 := fnd_api.g_miss_char;
24438                      l_version_hist_csr.new_attribute10 := p_version_label_rec.attribute10;
24439              END IF;
24440              --
24441              IF    ( l_version_hist_csr.old_attribute11 IS NULL
24442                 AND  l_version_hist_csr.new_attribute11 IS NULL ) THEN
24443                      IF  ( p_version_label_rec.attribute11 = l_curr_ver_label_rec.attribute11 )
24444                       OR ( p_version_label_rec.attribute11 = fnd_api.g_miss_char ) THEN
24445                            l_version_hist_csr.old_attribute11 := NULL;
24446                            l_version_hist_csr.new_attribute11 := NULL;
24447                      ELSE
24448                            l_version_hist_csr.old_attribute11 := fnd_api.g_miss_char;
24449                            l_version_hist_csr.new_attribute11 := p_version_label_rec.attribute11;
24450                      END IF;
24451              ELSE
24452                      l_version_hist_csr.old_attribute11 := fnd_api.g_miss_char;
24453                      l_version_hist_csr.new_attribute11 := p_version_label_rec.attribute11;
24454              END IF;
24455              --
24456              IF    ( l_version_hist_csr.old_attribute12 IS NULL
24457                 AND  l_version_hist_csr.new_attribute12 IS NULL ) THEN
24458                      IF  ( p_version_label_rec.attribute12 = l_curr_ver_label_rec.attribute12 )
24459                       OR ( p_version_label_rec.attribute12 = fnd_api.g_miss_char ) THEN
24460                            l_version_hist_csr.old_attribute12 := NULL;
24461                            l_version_hist_csr.new_attribute12 := NULL;
24462                      ELSE
24463                            l_version_hist_csr.old_attribute12 := fnd_api.g_miss_char;
24464                            l_version_hist_csr.new_attribute12 := p_version_label_rec.attribute12;
24465                      END IF;
24466              ELSE
24467                      l_version_hist_csr.old_attribute12 := fnd_api.g_miss_char;
24468                      l_version_hist_csr.new_attribute12 := p_version_label_rec.attribute12;
24469              END IF;
24470              --
24471              IF    ( l_version_hist_csr.old_attribute13 IS NULL
24472                 AND  l_version_hist_csr.new_attribute13 IS NULL ) THEN
24473                      IF  ( p_version_label_rec.attribute13 = l_curr_ver_label_rec.attribute13 )
24474                       OR ( p_version_label_rec.attribute13 = fnd_api.g_miss_char ) THEN
24475                            l_version_hist_csr.old_attribute13 := NULL;
24476                            l_version_hist_csr.new_attribute13 := NULL;
24477                      ELSE
24478                            l_version_hist_csr.old_attribute13 := fnd_api.g_miss_char;
24479                            l_version_hist_csr.new_attribute13 := p_version_label_rec.attribute13;
24480                      END IF;
24481              ELSE
24482                      l_version_hist_csr.old_attribute13 := fnd_api.g_miss_char;
24483                      l_version_hist_csr.new_attribute13 := p_version_label_rec.attribute13;
24484              END IF;
24485              --
24486              IF    ( l_version_hist_csr.old_attribute14 IS NULL
24487                 AND  l_version_hist_csr.new_attribute14 IS NULL ) THEN
24488                      IF  ( p_version_label_rec.attribute14 = l_curr_ver_label_rec.attribute14 )
24489                       OR ( p_version_label_rec.attribute14 = fnd_api.g_miss_char ) THEN
24490                            l_version_hist_csr.old_attribute14 := NULL;
24491                            l_version_hist_csr.new_attribute14 := NULL;
24492                      ELSE
24493                            l_version_hist_csr.old_attribute14 := fnd_api.g_miss_char;
24494                            l_version_hist_csr.new_attribute14 := p_version_label_rec.attribute14;
24495                      END IF;
24496              ELSE
24497                      l_version_hist_csr.old_attribute14 := fnd_api.g_miss_char;
24498                      l_version_hist_csr.new_attribute14 := p_version_label_rec.attribute14;
24499              END IF;
24500              --
24501              IF    ( l_version_hist_csr.old_attribute15 IS NULL
24502                 AND  l_version_hist_csr.new_attribute15 IS NULL ) THEN
24503                      IF  ( p_version_label_rec.attribute15 = l_curr_ver_label_rec.attribute15 )
24504                       OR ( p_version_label_rec.attribute15 = fnd_api.g_miss_char ) THEN
24505                            l_version_hist_csr.old_attribute15 := NULL;
24506                            l_version_hist_csr.new_attribute15 := NULL;
24507                      ELSE
24508                            l_version_hist_csr.old_attribute15 := fnd_api.g_miss_char;
24509                            l_version_hist_csr.new_attribute15 := p_version_label_rec.attribute15;
24510                      END IF;
24511              ELSE
24512                      l_version_hist_csr.old_attribute15 := fnd_api.g_miss_char;
24513                      l_version_hist_csr.new_attribute15 := p_version_label_rec.attribute15;
24514              END IF;
24515              --
24516 
24517          csi_i_version_labels_h_pkg.update_row
24518          (
24519           p_version_label_history_id    => l_version_hist_id                       ,
24520           p_version_label_id            => fnd_api.g_miss_num                      ,
24521           p_transaction_id              => fnd_api.g_miss_num                      ,
24522           p_old_version_label           => l_version_hist_csr.old_version_label    ,
24523           p_new_version_label           => l_version_hist_csr.new_version_label       ,
24524           p_old_description             => l_version_hist_csr.old_description      ,
24525           p_new_description             => l_version_hist_csr.new_description         ,
24526           p_old_date_time_stamp         => l_version_hist_csr.old_date_time_stamp  ,
24527           p_new_date_time_stamp         => l_version_hist_csr.new_date_time_stamp     ,
24528           p_old_active_start_date       => l_version_hist_csr.old_active_start_date,
24529           p_new_active_start_date       => l_version_hist_csr.new_active_start_date   ,
24530           p_old_active_end_date         => l_version_hist_csr.old_active_end_date  ,
24531           p_new_active_end_date         => l_version_hist_csr.new_active_end_date     ,
24532           p_old_context                 => l_version_hist_csr.old_context          ,
24533           p_new_context                 => l_version_hist_csr.new_context             ,
24534           p_old_attribute1              => l_version_hist_csr.old_attribute1       ,
24535           p_new_attribute1              => l_version_hist_csr.new_attribute1          ,
24536           p_old_attribute2              => l_version_hist_csr.old_attribute2       ,
24537           p_new_attribute2              => l_version_hist_csr.new_attribute2          ,
24538           p_old_attribute3              => l_version_hist_csr.old_attribute3       ,
24539           p_new_attribute3              => l_version_hist_csr.new_attribute3          ,
24540           p_old_attribute4              => l_version_hist_csr.old_attribute4       ,
24541           p_new_attribute4              => l_version_hist_csr.new_attribute4          ,
24542           p_old_attribute5              => l_version_hist_csr.old_attribute5       ,
24543           p_new_attribute5              => l_version_hist_csr.new_attribute5          ,
24544           p_old_attribute6              => l_version_hist_csr.old_attribute6       ,
24545           p_new_attribute6              => l_version_hist_csr.new_attribute6          ,
24546           p_old_attribute7              => l_version_hist_csr.old_attribute7       ,
24547           p_new_attribute7              => l_version_hist_csr.new_attribute7          ,
24548           p_old_attribute8              => l_version_hist_csr.old_attribute8       ,
24549           p_new_attribute8              => l_version_hist_csr.new_attribute8          ,
24550           p_old_attribute9              => l_version_hist_csr.old_attribute9       ,
24551           p_new_attribute9              => l_version_hist_csr.new_attribute9          ,
24552           p_old_attribute10             => l_version_hist_csr.old_attribute10      ,
24553           p_new_attribute10             => l_version_hist_csr.new_attribute10         ,
24554           p_old_attribute11             => l_version_hist_csr.old_attribute11      ,
24555           p_new_attribute11             => l_version_hist_csr.new_attribute11         ,
24556           p_old_attribute12             => l_version_hist_csr.old_attribute12      ,
24557           p_new_attribute12             => l_version_hist_csr.new_attribute12         ,
24558           p_old_attribute13             => l_version_hist_csr.old_attribute13      ,
24559           p_new_attribute13             => l_version_hist_csr.new_attribute13         ,
24560           p_old_attribute14             => l_version_hist_csr.old_attribute14      ,
24561           p_new_attribute14             => l_version_hist_csr.new_attribute14         ,
24562           p_old_attribute15             => l_version_hist_csr.old_attribute15      ,
24563           p_new_attribute15             => l_version_hist_csr.new_attribute15         ,
24564           p_full_dump_flag              => fnd_api.g_miss_char                     ,
24565           p_created_by                  => fnd_api.g_miss_num                      ,
24566           p_creation_date               => fnd_api.g_miss_date                     ,
24567           p_last_updated_by             => fnd_global.user_id                      ,
24568           p_last_update_date            => SYSDATE                                 ,
24569           p_last_update_login           => fnd_global.login_id                     ,
24570           p_object_version_number       => fnd_api.g_miss_num                      );
24571         END IF;
24572     EXCEPTION
24573          WHEN NO_DATA_FOUND THEN
24574 
24575          IF (l_mod_value = 0) THEN
24576           -- If the mod value is 0 then dump all the columns both changed and unchanged
24577           -- changed columns have old and new values while the unchanged values have old and new values
24578           -- exactly same
24579 
24580           IF (p_version_label_rec.version_label = FND_API.G_MISS_CHAR) THEN
24581               l_temp_ver_label_rec.version_label := l_curr_ver_label_rec.version_label ;
24582           END IF;
24583           IF (p_version_label_rec.DATE_TIME_STAMP = FND_API.G_MISS_DATE) THEN
24584               l_temp_ver_label_rec.DATE_TIME_STAMP := l_curr_ver_label_rec.DATE_TIME_STAMP ;
24585           END IF;
24586           IF (p_version_label_rec.DESCRIPTION = FND_API.G_MISS_CHAR) THEN
24587               l_temp_ver_label_rec.DESCRIPTION := l_curr_ver_label_rec.DESCRIPTION ;
24588           END IF;
24589           IF (p_version_label_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
24590               l_temp_ver_label_rec.ACTIVE_START_DATE := l_curr_ver_label_rec.ACTIVE_START_DATE ;
24591           END IF;
24592           IF  (p_version_label_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
24593               l_temp_ver_label_rec.ACTIVE_END_DATE := l_curr_ver_label_rec.ACTIVE_END_DATE ;
24594           END IF;
24595           IF  (p_version_label_rec.context = FND_API.G_MISS_CHAR) THEN
24596               l_temp_ver_label_rec.CONTEXT := l_curr_ver_label_rec.CONTEXT ;
24597           END IF;
24598           IF  (p_version_label_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
24599               l_temp_ver_label_rec.ATTRIBUTE1 := l_curr_ver_label_rec.ATTRIBUTE1 ;
24600           END IF;
24601           IF  (p_version_label_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
24602               l_temp_ver_label_rec.ATTRIBUTE2 := l_curr_ver_label_rec.ATTRIBUTE2 ;
24603           END IF;
24604           IF  (p_version_label_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
24605               l_temp_ver_label_rec.ATTRIBUTE3 := l_curr_ver_label_rec.ATTRIBUTE3 ;
24606           END IF;
24607           IF  (p_version_label_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
24608               l_temp_ver_label_rec.ATTRIBUTE4 := l_curr_ver_label_rec.ATTRIBUTE4 ;
24609           END IF;
24610           IF  (p_version_label_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
24611               l_temp_ver_label_rec.ATTRIBUTE5 := l_curr_ver_label_rec.ATTRIBUTE5 ;
24612           END IF;
24613           IF  (p_version_label_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
24614               l_temp_ver_label_rec.ATTRIBUTE6 := l_curr_ver_label_rec.ATTRIBUTE6 ;
24615           END IF;
24616           IF  (p_version_label_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
24617               l_temp_ver_label_rec.ATTRIBUTE7 := l_curr_ver_label_rec.ATTRIBUTE7 ;
24618           END IF;
24619           IF  (p_version_label_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
24620               l_temp_ver_label_rec.ATTRIBUTE8 := l_curr_ver_label_rec.ATTRIBUTE8 ;
24621           END IF;
24622           IF  (p_version_label_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
24623               l_temp_ver_label_rec.ATTRIBUTE9 := l_curr_ver_label_rec.ATTRIBUTE9 ;
24624           END IF;
24625           IF  (p_version_label_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
24626               l_temp_ver_label_rec.ATTRIBUTE10 := l_curr_ver_label_rec.ATTRIBUTE10 ;
24627           END IF;
24628           IF  (p_version_label_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
24629               l_temp_ver_label_rec.ATTRIBUTE11 := l_curr_ver_label_rec.ATTRIBUTE11 ;
24630           END IF;
24631           IF  (p_version_label_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
24632               l_temp_ver_label_rec.ATTRIBUTE12 := l_curr_ver_label_rec.ATTRIBUTE12 ;
24633           END IF;
24634           IF  (p_version_label_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
24635               l_temp_ver_label_rec.ATTRIBUTE13 := l_curr_ver_label_rec.ATTRIBUTE13 ;
24636           END IF;
24637           IF  (p_version_label_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
24638               l_temp_ver_label_rec.ATTRIBUTE14 := l_curr_ver_label_rec.ATTRIBUTE14 ;
24639           END IF;
24640           IF  (p_version_label_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
24641               l_temp_ver_label_rec.ATTRIBUTE15 := l_curr_ver_label_rec.ATTRIBUTE15 ;
24642           END IF;
24643 
24644        -- Call the table handlers to insert into history table
24645 
24646        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
24647        (
24648           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
24649           p_VERSION_LABEL_ID            => p_version_label_rec.VERSION_LABEL_ID    ,
24650           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
24651           p_OLD_VERSION_LABEL           => l_temp_ver_label_rec.VERSION_LABEL      ,
24652           p_NEW_VERSION_LABEL           => p_version_label_rec.VERSION_LABEL       ,
24653           p_OLD_DESCRIPTION             => l_temp_ver_label_rec.DESCRIPTION        ,
24654           p_NEW_DESCRIPTION             => p_version_label_rec.DESCRIPTION         ,
24655           p_OLD_DATE_TIME_STAMP         => l_temp_ver_label_rec.DATE_TIME_STAMP    ,
24656           p_NEW_DATE_TIME_STAMP         => p_version_label_rec.DATE_TIME_STAMP     ,
24657           p_OLD_ACTIVE_START_DATE       => l_temp_ver_label_rec.ACTIVE_START_DATE  ,
24658           p_NEW_ACTIVE_START_DATE       => p_version_label_rec.ACTIVE_START_DATE   ,
24659           p_OLD_ACTIVE_END_DATE         => l_temp_ver_label_rec.ACTIVE_END_DATE  ,
24660           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
24661           p_OLD_CONTEXT                 => l_temp_ver_label_rec.CONTEXT  ,
24662           p_NEW_CONTEXT                 => p_version_label_rec.CONTEXT    ,
24663           p_OLD_ATTRIBUTE1              => l_temp_ver_label_rec.ATTRIBUTE1  ,
24664           p_NEW_ATTRIBUTE1              => p_version_label_rec.ATTRIBUTE1 ,
24665           p_OLD_ATTRIBUTE2              => l_temp_ver_label_rec.ATTRIBUTE2  ,
24666           p_NEW_ATTRIBUTE2              => p_version_label_rec.ATTRIBUTE2 ,
24667           p_OLD_ATTRIBUTE3              => l_temp_ver_label_rec.ATTRIBUTE3  ,
24668           p_NEW_ATTRIBUTE3              => p_version_label_rec.ATTRIBUTE3 ,
24669           p_OLD_ATTRIBUTE4              => l_temp_ver_label_rec.ATTRIBUTE4  ,
24670           p_NEW_ATTRIBUTE4              => p_version_label_rec.ATTRIBUTE4 ,
24671           p_OLD_ATTRIBUTE5              => l_temp_ver_label_rec.ATTRIBUTE5  ,
24672           p_NEW_ATTRIBUTE5              => p_version_label_rec.ATTRIBUTE5 ,
24673           p_OLD_ATTRIBUTE6              => l_temp_ver_label_rec.ATTRIBUTE6  ,
24674           p_NEW_ATTRIBUTE6              => p_version_label_rec.ATTRIBUTE6 ,
24675           p_OLD_ATTRIBUTE7              => l_temp_ver_label_rec.ATTRIBUTE7  ,
24676           p_NEW_ATTRIBUTE7              => p_version_label_rec.ATTRIBUTE7 ,
24677           p_OLD_ATTRIBUTE8              => l_temp_ver_label_rec.ATTRIBUTE8  ,
24678           p_NEW_ATTRIBUTE8              => p_version_label_rec.ATTRIBUTE8 ,
24679           p_OLD_ATTRIBUTE9              => l_temp_ver_label_rec.ATTRIBUTE9  ,
24680           p_NEW_ATTRIBUTE9              => p_version_label_rec.ATTRIBUTE9 ,
24681           p_OLD_ATTRIBUTE10             => l_temp_ver_label_rec.ATTRIBUTE10  ,
24682           p_NEW_ATTRIBUTE10             => p_version_label_rec.ATTRIBUTE10,
24683           p_OLD_ATTRIBUTE11             => l_temp_ver_label_rec.ATTRIBUTE11  ,
24684           p_NEW_ATTRIBUTE11             => p_version_label_rec.ATTRIBUTE11,
24685           p_OLD_ATTRIBUTE12             => l_temp_ver_label_rec.ATTRIBUTE12  ,
24686           p_NEW_ATTRIBUTE12             => p_version_label_rec.ATTRIBUTE12,
24687           p_OLD_ATTRIBUTE13             => l_temp_ver_label_rec.ATTRIBUTE13  ,
24688           p_NEW_ATTRIBUTE13             => p_version_label_rec.ATTRIBUTE13,
24689           p_OLD_ATTRIBUTE14             => l_temp_ver_label_rec.ATTRIBUTE14  ,
24690           p_NEW_ATTRIBUTE14             => p_version_label_rec.ATTRIBUTE14,
24691           p_OLD_ATTRIBUTE15             => l_temp_ver_label_rec.ATTRIBUTE15  ,
24692           p_NEW_ATTRIBUTE15             => p_version_label_rec.ATTRIBUTE15,
24693           p_FULL_DUMP_FLAG              => 'Y'                            ,
24694           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
24695           p_CREATION_DATE               => SYSDATE                        ,
24696           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
24697           p_LAST_UPDATE_DATE            => SYSDATE                        ,
24698           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
24699           p_OBJECT_VERSION_NUMBER       => 1                              );
24700 
24701 
24702        ELSE
24703           -- If the mod value is not equal to zero then dump only the changed columns
24704           -- while the unchanged values have old and new values as null
24705 
24706            IF (p_version_label_rec.version_label = fnd_api.g_miss_char) OR
24707                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
24708                 l_ver_label_hist_rec.old_version_label := NULL;
24709                 l_ver_label_hist_rec.new_version_label := NULL;
24710            ELSIF
24711               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
24712                 l_ver_label_hist_rec.old_version_label := l_curr_ver_label_rec.version_label ;
24713                 l_ver_label_hist_rec.new_version_label := p_version_label_rec.version_label ;
24714            END IF;
24715            --
24716            IF (p_version_label_rec.date_time_stamp = fnd_api.g_miss_date) OR
24717                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
24718                 l_ver_label_hist_rec.old_date_time_stamp := NULL;
24719                 l_ver_label_hist_rec.new_date_time_stamp := NULL;
24720            ELSIF
24721               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
24722                 l_ver_label_hist_rec.old_date_time_stamp := l_curr_ver_label_rec.date_time_stamp ;
24723                 l_ver_label_hist_rec.new_date_time_stamp := p_version_label_rec.date_time_stamp ;
24724            END IF;
24725            --
24726            IF (p_version_label_rec.description = fnd_api.g_miss_char) OR
24727                NVL(p_version_label_rec.description, fnd_api.g_miss_char) = NVL(l_curr_ver_label_rec.description, fnd_api.g_miss_char) THEN
24728                 l_ver_label_hist_rec.old_description := NULL;
24729                 l_ver_label_hist_rec.new_description := NULL;
24730            ELSIF
24731               NVL(l_curr_ver_label_rec.description,fnd_api.g_miss_char) <> NVL(p_version_label_rec.description,fnd_api.g_miss_char) THEN
24732                 l_ver_label_hist_rec.old_description := l_curr_ver_label_rec.description ;
24733                 l_ver_label_hist_rec.new_description := p_version_label_rec.description ;
24734            END IF;
24735            --
24736            IF (p_version_label_rec.active_start_date = fnd_api.g_miss_date) OR
24737               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
24738                 l_ver_label_hist_rec.old_active_start_date := NULL;
24739                 l_ver_label_hist_rec.new_active_start_date := NULL;
24740            ELSIF
24741               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
24742                 l_ver_label_hist_rec.old_active_start_date := l_curr_ver_label_rec.active_start_date ;
24743                 l_ver_label_hist_rec.new_active_start_date := p_version_label_rec.active_start_date ;
24744            END IF;
24745            --
24746            IF (p_version_label_rec.active_end_date = fnd_api.g_miss_date) OR
24747               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
24748                 l_ver_label_hist_rec.old_active_end_date := NULL;
24749                 l_ver_label_hist_rec.new_active_end_date := NULL;
24750            ELSIF
24751               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
24752                 l_ver_label_hist_rec.old_active_end_date := l_curr_ver_label_rec.active_end_date ;
24753                 l_ver_label_hist_rec.new_active_end_date := p_version_label_rec.active_end_date ;
24754            END IF;
24755            --
24756            IF (p_version_label_rec.context = fnd_api.g_miss_char) OR
24757               NVL(l_curr_ver_label_rec.context,fnd_api.g_miss_char) = NVL(p_version_label_rec.context,fnd_api.g_miss_char) THEN
24758                 l_ver_label_hist_rec.old_context := NULL;
24759                 l_ver_label_hist_rec.new_context := NULL;
24760            ELSIF
24761               NVL(l_curr_ver_label_rec.context,fnd_api.g_miss_char) <> NVL(p_version_label_rec.context,fnd_api.g_miss_char) THEN
24762                 l_ver_label_hist_rec.old_context := l_curr_ver_label_rec.context ;
24763                 l_ver_label_hist_rec.new_context := p_version_label_rec.context ;
24764            END IF;
24765            --
24766            IF (p_version_label_rec.attribute1 = fnd_api.g_miss_char) OR
24767               NVL(l_curr_ver_label_rec.attribute1,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute1,fnd_api.g_miss_char) THEN
24768                 l_ver_label_hist_rec.old_attribute1 := NULL;
24769                 l_ver_label_hist_rec.new_attribute1 := NULL;
24770            ELSIF
24771               NVL(l_curr_ver_label_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute1,fnd_api.g_miss_char) THEN
24772                 l_ver_label_hist_rec.old_attribute1 := l_curr_ver_label_rec.attribute1 ;
24773                 l_ver_label_hist_rec.new_attribute1 := p_version_label_rec.attribute1 ;
24774            END IF;
24775            --
24776            IF (p_version_label_rec.attribute2 = fnd_api.g_miss_char) OR
24777               NVL(l_curr_ver_label_rec.attribute2,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute2,fnd_api.g_miss_char) THEN
24778                 l_ver_label_hist_rec.old_attribute2 := NULL;
24779                 l_ver_label_hist_rec.new_attribute2 := NULL;
24780            ELSIF
24781               NVL(l_curr_ver_label_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute2,fnd_api.g_miss_char) THEN
24782                 l_ver_label_hist_rec.old_attribute2 := l_curr_ver_label_rec.attribute2 ;
24783                 l_ver_label_hist_rec.new_attribute2 := p_version_label_rec.attribute2 ;
24784            END IF;
24785            --
24786            IF (p_version_label_rec.attribute3 = fnd_api.g_miss_char) OR
24787               NVL(l_curr_ver_label_rec.attribute3,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute3,fnd_api.g_miss_char) THEN
24788                 l_ver_label_hist_rec.old_attribute3 := NULL;
24789                 l_ver_label_hist_rec.new_attribute3 := NULL;
24790            ELSIF
24791               NVL(l_curr_ver_label_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute3,fnd_api.g_miss_char) THEN
24792                 l_ver_label_hist_rec.old_attribute3 := l_curr_ver_label_rec.attribute3 ;
24793                 l_ver_label_hist_rec.new_attribute3 := p_version_label_rec.attribute3 ;
24794            END IF;
24795            --
24796            IF (p_version_label_rec.attribute4 = fnd_api.g_miss_char) OR
24797               NVL(l_curr_ver_label_rec.attribute4,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute4,fnd_api.g_miss_char) THEN
24798                 l_ver_label_hist_rec.old_attribute4 := NULL;
24799                 l_ver_label_hist_rec.new_attribute4 := NULL;
24800            ELSIF
24801               NVL(l_curr_ver_label_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute4,fnd_api.g_miss_char) THEN
24802                 l_ver_label_hist_rec.old_attribute4 := l_curr_ver_label_rec.attribute4 ;
24803                 l_ver_label_hist_rec.new_attribute4 := p_version_label_rec.attribute4 ;
24804            END IF;
24805            --
24806            IF (p_version_label_rec.attribute5 = fnd_api.g_miss_char) OR
24807               NVL(l_curr_ver_label_rec.attribute5,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute5,fnd_api.g_miss_char) THEN
24808                 l_ver_label_hist_rec.old_attribute5 := NULL;
24809                 l_ver_label_hist_rec.new_attribute5 := NULL;
24810            ELSIF
24811               NVL(l_curr_ver_label_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute5,fnd_api.g_miss_char) THEN
24812                 l_ver_label_hist_rec.old_attribute5 := l_curr_ver_label_rec.attribute5 ;
24813                 l_ver_label_hist_rec.new_attribute5 := p_version_label_rec.attribute5 ;
24814            END IF;
24815            --
24816            IF (p_version_label_rec.attribute6 = fnd_api.g_miss_char) OR
24817               NVL(l_curr_ver_label_rec.attribute6,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute6,fnd_api.g_miss_char) THEN
24818                 l_ver_label_hist_rec.old_attribute6 := NULL;
24819                 l_ver_label_hist_rec.new_attribute6 := NULL;
24820            ELSIF
24821               NVL(l_curr_ver_label_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute6,fnd_api.g_miss_char) THEN
24822                 l_ver_label_hist_rec.old_attribute6 := l_curr_ver_label_rec.attribute6 ;
24823                 l_ver_label_hist_rec.new_attribute6 := p_version_label_rec.attribute6 ;
24824            END IF;
24825            --
24826            IF (p_version_label_rec.attribute7 = fnd_api.g_miss_char) OR
24827               NVL(l_curr_ver_label_rec.attribute7,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute7,fnd_api.g_miss_char) THEN
24828                 l_ver_label_hist_rec.old_attribute7 := NULL;
24829                 l_ver_label_hist_rec.new_attribute7 := NULL;
24830            ELSIF
24831               NVL(l_curr_ver_label_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute7,fnd_api.g_miss_char) THEN
24832                 l_ver_label_hist_rec.old_attribute7 := l_curr_ver_label_rec.attribute7 ;
24833                 l_ver_label_hist_rec.new_attribute7 := p_version_label_rec.attribute7 ;
24834            END IF;
24835            --
24836            IF (p_version_label_rec.attribute8 = fnd_api.g_miss_char) OR
24837               NVL(l_curr_ver_label_rec.attribute8,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute8,fnd_api.g_miss_char) THEN
24838                 l_ver_label_hist_rec.old_attribute8 := NULL;
24839                 l_ver_label_hist_rec.new_attribute8 := NULL;
24840            ELSIF
24841               NVL(l_curr_ver_label_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute8,fnd_api.g_miss_char) THEN
24842                 l_ver_label_hist_rec.old_attribute8 := l_curr_ver_label_rec.attribute8 ;
24843                 l_ver_label_hist_rec.new_attribute8 := p_version_label_rec.attribute8 ;
24844            END IF;
24845            --
24846            IF (p_version_label_rec.attribute9 = fnd_api.g_miss_char) OR
24847               NVL(l_curr_ver_label_rec.attribute9,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute9,fnd_api.g_miss_char) THEN
24848                 l_ver_label_hist_rec.old_attribute9 := NULL;
24849                 l_ver_label_hist_rec.new_attribute9 := NULL;
24850            ELSIF
24851               NVL(l_curr_ver_label_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute9,fnd_api.g_miss_char) THEN
24852                 l_ver_label_hist_rec.old_attribute9 := l_curr_ver_label_rec.attribute9 ;
24853                 l_ver_label_hist_rec.new_attribute9 := p_version_label_rec.attribute9 ;
24854            END IF;
24855            --
24856            IF (p_version_label_rec.attribute10 = fnd_api.g_miss_char) OR
24857               NVL(l_curr_ver_label_rec.attribute10,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute10,fnd_api.g_miss_char) THEN
24858                 l_ver_label_hist_rec.old_attribute10 := NULL;
24859                 l_ver_label_hist_rec.new_attribute10 := NULL;
24860            ELSIF
24861               NVL(l_curr_ver_label_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute10,fnd_api.g_miss_char) THEN
24862                 l_ver_label_hist_rec.old_attribute10 := l_curr_ver_label_rec.attribute10 ;
24863                 l_ver_label_hist_rec.new_attribute10 := p_version_label_rec.attribute10 ;
24864            END IF;
24865            --
24866            IF (p_version_label_rec.attribute11 = fnd_api.g_miss_char) OR
24867               NVL(l_curr_ver_label_rec.attribute11,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute11,fnd_api.g_miss_char) THEN
24868                 l_ver_label_hist_rec.old_attribute11 := NULL;
24869                 l_ver_label_hist_rec.new_attribute11 := NULL;
24870            ELSIF
24871               NVL(l_curr_ver_label_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute11,fnd_api.g_miss_char) THEN
24872                 l_ver_label_hist_rec.old_attribute11 := l_curr_ver_label_rec.attribute11 ;
24873                 l_ver_label_hist_rec.new_attribute11 := p_version_label_rec.attribute11 ;
24874            END IF;
24875            --
24876            IF (p_version_label_rec.attribute12 = fnd_api.g_miss_char) OR
24877               NVL(l_curr_ver_label_rec.attribute12,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute12,fnd_api.g_miss_char) THEN
24878                 l_ver_label_hist_rec.old_attribute12 := NULL;
24879                 l_ver_label_hist_rec.new_attribute12 := NULL;
24880            ELSIF
24881               NVL(l_curr_ver_label_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute12,fnd_api.g_miss_char) THEN
24882                 l_ver_label_hist_rec.old_attribute12 := l_curr_ver_label_rec.attribute12 ;
24883                 l_ver_label_hist_rec.new_attribute12 := p_version_label_rec.attribute12 ;
24884            END IF;
24885            --
24886            IF (p_version_label_rec.attribute13 = fnd_api.g_miss_char) OR
24887               NVL(l_curr_ver_label_rec.attribute13,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute13,fnd_api.g_miss_char) THEN
24888                 l_ver_label_hist_rec.old_attribute13 := NULL;
24889                 l_ver_label_hist_rec.new_attribute13 := NULL;
24890            ELSIF
24891               NVL(l_curr_ver_label_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute13,fnd_api.g_miss_char) THEN
24892                 l_ver_label_hist_rec.old_attribute13 := l_curr_ver_label_rec.attribute13 ;
24893                 l_ver_label_hist_rec.new_attribute13 := p_version_label_rec.attribute13 ;
24894            END IF;
24895            --
24896            IF (p_version_label_rec.attribute14 = fnd_api.g_miss_char) OR
24897               NVL(l_curr_ver_label_rec.attribute14,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute14,fnd_api.g_miss_char) THEN
24898                 l_ver_label_hist_rec.old_attribute14 := NULL;
24899                 l_ver_label_hist_rec.new_attribute14 := NULL;
24900            ELSIF
24901               NVL(l_curr_ver_label_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute14,fnd_api.g_miss_char) THEN
24902                 l_ver_label_hist_rec.old_attribute14 := l_curr_ver_label_rec.attribute14 ;
24903                 l_ver_label_hist_rec.new_attribute14 := p_version_label_rec.attribute14 ;
24904            END IF;
24905            --
24906            IF (p_version_label_rec.attribute15 = fnd_api.g_miss_char) OR
24907               NVL(l_curr_ver_label_rec.attribute15,fnd_api.g_miss_char) = NVL(p_version_label_rec.attribute15,fnd_api.g_miss_char) THEN
24908                 l_ver_label_hist_rec.old_attribute15 := NULL;
24909                 l_ver_label_hist_rec.new_attribute15 := NULL;
24910            ELSIF
24911               NVL(l_curr_ver_label_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_version_label_rec.attribute15,fnd_api.g_miss_char) THEN
24912                 l_ver_label_hist_rec.old_attribute15 := l_curr_ver_label_rec.attribute15 ;
24913                 l_ver_label_hist_rec.new_attribute15 := p_version_label_rec.attribute15 ;
24914            END IF;
24915 
24916      -- Call the table handlers to insert into history table
24917        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
24918        (
24919           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
24920           p_VERSION_LABEL_ID            => p_version_label_rec.VERSION_LABEL_ID    ,
24921           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
24922           p_OLD_VERSION_LABEL           => l_ver_label_hist_rec.OLD_VERSION_LABEL      ,
24923           p_NEW_VERSION_LABEL           => l_ver_label_hist_rec.NEW_VERSION_LABEL       ,
24924           p_OLD_DESCRIPTION             => l_ver_label_hist_rec.OLD_DESCRIPTION        ,
24925           p_NEW_DESCRIPTION             => l_ver_label_hist_rec.NEW_DESCRIPTION         ,
24926           p_OLD_DATE_TIME_STAMP         => l_ver_label_hist_rec.OLD_DATE_TIME_STAMP    ,
24927           p_NEW_DATE_TIME_STAMP         => l_ver_label_hist_rec.NEW_DATE_TIME_STAMP     ,
24928           p_OLD_ACTIVE_START_DATE       => l_ver_label_hist_rec.OLD_ACTIVE_START_DATE  ,
24929           p_NEW_ACTIVE_START_DATE       => l_ver_label_hist_rec.NEW_ACTIVE_START_DATE   ,
24930           p_OLD_ACTIVE_END_DATE         => l_ver_label_hist_rec.OLD_ACTIVE_END_DATE    ,
24931           p_NEW_ACTIVE_END_DATE         => l_ver_label_hist_rec.NEW_ACTIVE_END_DATE     ,
24932           p_OLD_CONTEXT                 => l_ver_label_hist_rec.OLD_CONTEXT            ,
24933           p_NEW_CONTEXT                 => l_ver_label_hist_rec.NEW_CONTEXT    ,
24934           p_OLD_ATTRIBUTE1              => l_ver_label_hist_rec.OLD_ATTRIBUTE1,
24935           p_NEW_ATTRIBUTE1              => l_ver_label_hist_rec.NEW_ATTRIBUTE1 ,
24936           p_OLD_ATTRIBUTE2              => l_ver_label_hist_rec.OLD_ATTRIBUTE2,
24937           p_NEW_ATTRIBUTE2              => l_ver_label_hist_rec.NEW_ATTRIBUTE2 ,
24938           p_OLD_ATTRIBUTE3              => l_ver_label_hist_rec.OLD_ATTRIBUTE3,
24939           p_NEW_ATTRIBUTE3              => l_ver_label_hist_rec.NEW_ATTRIBUTE3 ,
24940           p_OLD_ATTRIBUTE4              => l_ver_label_hist_rec.OLD_ATTRIBUTE4,
24941           p_NEW_ATTRIBUTE4              => l_ver_label_hist_rec.NEW_ATTRIBUTE4 ,
24942           p_OLD_ATTRIBUTE5              => l_ver_label_hist_rec.OLD_ATTRIBUTE5,
24943           p_NEW_ATTRIBUTE5              => l_ver_label_hist_rec.NEW_ATTRIBUTE5 ,
24944           p_OLD_ATTRIBUTE6              => l_ver_label_hist_rec.OLD_ATTRIBUTE6,
24945           p_NEW_ATTRIBUTE6              => l_ver_label_hist_rec.NEW_ATTRIBUTE6 ,
24946           p_OLD_ATTRIBUTE7              => l_ver_label_hist_rec.OLD_ATTRIBUTE7,
24947           p_NEW_ATTRIBUTE7              => l_ver_label_hist_rec.NEW_ATTRIBUTE7 ,
24948           p_OLD_ATTRIBUTE8              => l_ver_label_hist_rec.OLD_ATTRIBUTE8,
24949           p_NEW_ATTRIBUTE8              => l_ver_label_hist_rec.NEW_ATTRIBUTE8 ,
24950           p_OLD_ATTRIBUTE9              => l_ver_label_hist_rec.OLD_ATTRIBUTE9,
24951           p_NEW_ATTRIBUTE9              => l_ver_label_hist_rec.NEW_ATTRIBUTE9 ,
24952           p_OLD_ATTRIBUTE10             => l_ver_label_hist_rec.OLD_ATTRIBUTE10,
24953           p_NEW_ATTRIBUTE10             => l_ver_label_hist_rec.NEW_ATTRIBUTE10,
24954           p_OLD_ATTRIBUTE11             => l_ver_label_hist_rec.OLD_ATTRIBUTE11,
24955           p_NEW_ATTRIBUTE11             => l_ver_label_hist_rec.NEW_ATTRIBUTE11,
24956           p_OLD_ATTRIBUTE12             => l_ver_label_hist_rec.OLD_ATTRIBUTE12,
24957           p_NEW_ATTRIBUTE12             => l_ver_label_hist_rec.NEW_ATTRIBUTE12,
24958           p_OLD_ATTRIBUTE13             => l_ver_label_hist_rec.OLD_ATTRIBUTE13,
24959           p_NEW_ATTRIBUTE13             => l_ver_label_hist_rec.NEW_ATTRIBUTE13,
24960           p_OLD_ATTRIBUTE14             => l_ver_label_hist_rec.OLD_ATTRIBUTE14,
24961           p_NEW_ATTRIBUTE14             => l_ver_label_hist_rec.NEW_ATTRIBUTE14,
24962           p_OLD_ATTRIBUTE15             => l_ver_label_hist_rec.OLD_ATTRIBUTE15,
24963           p_NEW_ATTRIBUTE15             => l_ver_label_hist_rec.NEW_ATTRIBUTE15,
24964           p_FULL_DUMP_FLAG              => 'N'                            ,
24965           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
24966           p_CREATION_DATE               => SYSDATE                        ,
24967           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
24968           p_LAST_UPDATE_DATE            => SYSDATE                        ,
24969           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
24970           p_OBJECT_VERSION_NUMBER       => 1                              );
24971 
24972 
24973     END IF;
24974 
24975    END;
24976      -- End of modification for Bug#2547034 on 09/20/02 - rtalluri
24977       --
24978       -- End of API body
24979 
24980       -- Standard check of p_commit.
24981       IF FND_API.To_Boolean( p_commit ) THEN
24982             COMMIT WORK;
24983       END IF;
24984 
24985       -- Standard call to get message count and if count is  get message info.
24986       FND_MSG_PUB.Count_And_Get
24987             (p_encoded => FND_API.G_FALSE,
24988                  p_count       =>       x_msg_count ,
24989          p_data       =>       x_msg_data );
24990 
24991 EXCEPTION
24992         WHEN FND_API.G_EXC_ERROR THEN
24993             ROLLBACK TO update_version_label_pvt;
24994             x_return_status := FND_API.G_RET_STS_ERROR ;
24995             FND_MSG_PUB.Count_And_Get
24996                 (        p_encoded => FND_API.G_FALSE,
24997                  p_count        =>      x_msg_count,
24998                     p_data         =>      x_msg_data);
24999       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
25000             ROLLBACK TO update_version_label_pvt;
25001             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
25002             FND_MSG_PUB.Count_And_Get
25003                 (     p_encoded => FND_API.G_FALSE,
25004                     p_count         =>      X_msg_count,
25005                     p_data          =>      X_msg_data);
25006       WHEN OTHERS THEN
25007             ROLLBACK TO update_version_label_pvt;
25008             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
25009               IF FND_MSG_PUB.Check_Msg_Level
25010                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
25011             THEN
25012                          FND_MSG_PUB.Add_Exc_Msg
25013                     ( G_PKG_NAME, l_api_name );
25014             END IF;
25015             FND_MSG_PUB.Count_And_Get
25016                 (      p_encoded => FND_API.G_FALSE,
25017                    p_count       =>      x_msg_count,
25018                     p_data        =>      x_msg_data );
25019 END update_version_label;
25020 
25021 /*---------------------------------------------*/
25022 /* Procedure name: expire_version_label        */
25023 /* Description :   procedure for Update        */
25024 /*                 version label for           */
25025 /*                 an Item Instance            */
25026 /*---------------------------------------------*/
25027 
25028 PROCEDURE expire_version_label
25029  (    p_api_version                 IN  NUMBER
25030      ,p_commit                      IN  VARCHAR2
25031      ,p_init_msg_list               IN  VARCHAR2
25032      ,p_validation_level            IN  NUMBER
25033      ,p_version_label_rec           IN  csi_datastructures_pub.version_label_rec
25034      ,p_txn_rec                     IN OUT NOCOPY csi_datastructures_pub.transaction_rec
25035      ,x_return_status               OUT NOCOPY VARCHAR2
25036      ,x_msg_count                   OUT NOCOPY NUMBER
25037      ,x_msg_data                    OUT NOCOPY VARCHAR2
25038    ) IS
25039       l_api_name                   CONSTANT VARCHAR2(30)   := 'EXPIRE_VERSION_LABEL';
25040       l_api_version                   CONSTANT NUMBER            := 1.0;
25041       l_debug_level                     NUMBER;
25042       l_version_label_rec        csi_datastructures_pub.version_label_rec;
25043       l_curr_ver_label_rec       csi_datastructures_pub.version_label_rec;
25044       l_msg_index                NUMBER;
25045       l_OBJECT_VERSION_NUMBER    NUMBER;
25046       l_mod_value                NUMBER;
25047       l_version_label_hist_id    NUMBER;
25048       x_msg_index_out            NUMBER;
25049       l_full_dump_frequency      NUMBER;
25050       l_flag                     VARCHAR2(1)  :='N';
25051 
25052   CURSOR get_curr_ver_label_rec (p_ver_label_id   IN  NUMBER) IS
25053    SELECT
25054      VERSION_LABEL_ID                 ,
25055      INSTANCE_ID                      ,
25056      VERSION_LABEL                    ,
25057      DESCRIPTION                      ,
25058      DATE_TIME_STAMP                  ,
25059      active_start_date                ,
25060      active_end_date                  ,
25061      context                          ,
25062      attribute1                       ,
25063      attribute2                       ,
25064      attribute3                       ,
25065      attribute4                       ,
25066      attribute5                       ,
25067      attribute6                       ,
25068      attribute7                       ,
25069      attribute8                       ,
25070      attribute9                       ,
25071      attribute10                      ,
25072      attribute11                      ,
25073      attribute12                      ,
25074      attribute13                      ,
25075      attribute14                      ,
25076      attribute15                      ,
25077      object_version_number            --,
25078     -- null parent_tbl_index                 ,
25079     -- null processed_flag                   ,
25080     -- null interface_id
25081     FROM CSI_I_VERSION_LABELS
25082    WHERE VERSION_LABEL_ID = p_ver_label_id
25083     AND (( ACTIVE_END_DATE IS NULL) OR (ACTIVE_END_DATE >= SYSDATE))
25084     FOR UPDATE OF OBJECT_VERSION_NUMBER ;
25085 
25086 BEGIN
25087       -- Standard Start of API savepoint
25088     SAVEPOINT  expire_version_label_pvt;
25089 
25090         -- Standard call to check for call compatibility.
25091       IF NOT FND_API.Compatible_API_Call (l_api_version            ,
25092                                                            p_api_version           ,
25093                                                      l_api_name                 ,
25094                                                     G_PKG_NAME                 )
25095       THEN
25096             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
25097       END IF;
25098 
25099     -- Initialize message list if p_init_msg_list is set to TRUE.
25100       IF FND_API.to_Boolean( p_init_msg_list ) THEN
25101             FND_MSG_PUB.initialize;
25102       END IF;
25103       --  Initialize API return status to success
25104       x_return_status := FND_API.G_RET_STS_SUCCESS;
25105 
25106     -- Check the profile option debug_level for debug message reporting
25107     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
25108 
25109     -- If debug_level = 1 then dump the procedure name
25110     IF (l_debug_level > 0) THEN
25111          CSI_gen_utility_pvt.put_line( 'update_version_label');
25112     END IF;
25113 
25114     -- If the debug level = 2 then dump all the parameters values.
25115     IF (l_debug_level > 1) THEN
25116              CSI_gen_utility_pvt.put_line( 'update_version_label:'||
25117                                                  p_api_version             ||'-'||
25118                                                 p_commit                  ||'-'||
25119                                                  p_init_msg_list                 );
25120       END IF;
25121 
25122      -- Start API body
25123 
25124     -- Check if all the required parameters are passed
25125         CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
25126             (    p_version_label_rec.version_label_id  ,
25127                 '  p_version_label_rec.version_label_id  ',
25128                    l_api_name           );
25129 
25130      CSI_Instance_parties_vld_pvt.Check_Reqd_Param_num
25131             (    p_version_label_rec.object_version_number  ,
25132                 '  p_version_label_rec.object_version_number  ',
25133                    l_api_name           );
25134 
25135      CSI_Instance_parties_vld_pvt.Check_Reqd_Param_date
25136             (    p_version_label_rec.active_end_date  ,
25137                 '  p_version_label_rec.active_end_date  ',
25138                    l_api_name           );
25139 
25140      IF  p_version_label_rec.version_label_id <> FND_API.G_MISS_NUM THEN
25141           -- Validate the version label id if exist then raise CSI_API_INVALID_PRIMARY_KEY error
25142           IF NOT(CSI_Instance_parties_vld_pvt.Is_Ver_labelID_exists
25143                                           (p_version_label_rec.version_label_id,
25144                                            FALSE                        )) THEN
25145                 RAISE FND_API.G_EXC_ERROR;
25146           END IF;
25147      END IF;
25148 
25149      -- check if the object_version_number passed matches with the one
25150      -- in the database else raise error
25151      OPEN get_curr_ver_label_rec(p_version_label_rec.version_label_id);
25152      FETCH get_curr_ver_label_rec INTO l_curr_ver_label_rec;
25153      IF  (l_curr_ver_label_rec.object_version_number <> nvl(p_version_label_rec.OBJECT_VERSION_NUMBER,-1)) THEN
25154             FND_MESSAGE.Set_Name('CSI', 'CSI_API_OBJ_VER_MISMATCH');
25155             FND_MSG_PUB.ADD;
25156             RAISE FND_API.G_EXC_ERROR;
25157      END IF;
25158 
25159      IF get_curr_ver_label_rec%NOTFOUND THEN
25160         FND_MESSAGE.Set_Name('CSI', 'CSI_API_RECORD_LOCKED');
25161         FND_MSG_PUB.ADD;
25162         RAISE FND_API.G_EXC_ERROR;
25163      END IF;
25164      CLOSE get_curr_ver_label_rec;
25165 
25166      -- Increment the object_version_number before updating
25167      l_OBJECT_VERSION_NUMBER := l_curr_ver_label_rec.OBJECT_VERSION_NUMBER + 1 ;
25168 
25169      CSI_I_VERSION_LABELS_PKG.Update_Row(
25170           p_VERSION_LABEL_ID    =>  p_version_label_rec.version_label_id,
25171           p_INSTANCE_ID         =>  l_version_label_rec.instance_id,
25172           p_VERSION_LABEL       =>  l_version_label_rec.VERSION_LABEL,
25173           p_DATE_TIME_STAMP     =>  l_version_label_rec.DATE_TIME_STAMP,
25174           p_DESCRIPTION         =>  l_version_label_rec.DESCRIPTION  ,
25175           p_ACTIVE_START_DATE   =>  l_version_label_rec.ACTIVE_START_DATE,
25176           p_ACTIVE_END_DATE     =>  p_version_label_rec.ACTIVE_END_DATE,
25177           p_CONTEXT             =>  l_version_label_rec.CONTEXT  ,
25178           p_ATTRIBUTE1          =>  l_version_label_rec.ATTRIBUTE1,
25179           p_ATTRIBUTE2          =>  l_version_label_rec.ATTRIBUTE2,
25180           p_ATTRIBUTE3          =>  l_version_label_rec.ATTRIBUTE3,
25181           p_ATTRIBUTE4          =>  l_version_label_rec.ATTRIBUTE4,
25182           p_ATTRIBUTE5          =>  l_version_label_rec.ATTRIBUTE5,
25183           p_ATTRIBUTE6          =>  l_version_label_rec.ATTRIBUTE6,
25184           p_ATTRIBUTE7          =>  l_version_label_rec.ATTRIBUTE7,
25185           p_ATTRIBUTE8          =>  l_version_label_rec.ATTRIBUTE8,
25186           p_ATTRIBUTE9          =>  l_version_label_rec.ATTRIBUTE9,
25187           p_ATTRIBUTE10         =>  l_version_label_rec.ATTRIBUTE10,
25188           p_ATTRIBUTE11         =>  l_version_label_rec.ATTRIBUTE11,
25189           p_ATTRIBUTE12         =>  l_version_label_rec.ATTRIBUTE12,
25190           p_ATTRIBUTE13         =>  l_version_label_rec.ATTRIBUTE13,
25191           p_ATTRIBUTE14         =>  l_version_label_rec.ATTRIBUTE14,
25192           p_ATTRIBUTE15         =>  l_version_label_rec.ATTRIBUTE15,
25193           p_CREATED_BY          =>  fnd_api.g_miss_num ,
25194           p_CREATION_DATE       =>  fnd_api.g_miss_date ,
25195           p_LAST_UPDATED_BY     =>  FND_GLOBAL.USER_ID ,
25196           p_LAST_UPDATE_DATE    =>  sysdate            ,
25197           p_LAST_UPDATE_LOGIN   =>  FND_GLOBAL.LOGIN_ID  ,
25198           p_OBJECT_VERSION_NUMBER => l_OBJECT_VERSION_NUMBER );
25199 
25200 
25201          -- Call create_transaction to create txn log
25202          CSI_TRANSACTIONS_PVT.Create_transaction
25203           (
25204              p_api_version            => p_api_version
25205             ,p_commit                 => p_commit
25206             ,p_init_msg_list          => p_init_msg_list
25207             ,p_validation_level       => p_validation_level
25208             ,p_Success_If_Exists_Flag => 'Y'
25209             ,P_transaction_rec        => p_txn_rec
25210             ,x_return_status          => x_return_status
25211             ,x_msg_count              => x_msg_count
25212             ,x_msg_data               => x_msg_data         );
25213 
25214           IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
25215               FOR i in 1..x_msg_Count LOOP
25216                 FND_MSG_PUB.Get(p_msg_index     => i,
25217                                 p_encoded       => 'F',
25218                                 p_data          => x_msg_data,
25219                                 p_msg_index_out => x_msg_index_out );
25220                 CSI_gen_utility_pvt.put_line( 'message data = '||x_msg_data);
25221               End LOOP;
25222               RAISE FND_API.G_EXC_ERROR;
25223           END IF;
25224 
25225     -- Generate a unique instance_party_history_id from the sequence
25226     l_version_label_hist_id   := CSI_Instance_parties_vld_pvt.gen_ver_label_hist_id;
25227 
25228     -- Get the full_dump_frequency from csi_install_parameter
25229     IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
25230        csi_gen_utility_pvt.populate_install_param_rec;
25231     END IF;
25232     --
25233     l_full_dump_frequency := csi_datastructures_pub.g_install_param_rec.history_full_dump_frequency;
25234     --
25235     IF l_full_dump_frequency IS NULL THEN
25236        FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_FULL_DUMP_FAILED');
25237        FND_MSG_PUB.ADD;
25238        RAISE FND_API.G_EXC_ERROR;
25239     END IF;
25240 
25241     select mod(l_object_version_number,l_full_dump_frequency)
25242     into   l_mod_value
25243     from   dual;
25244 
25245     IF (l_mod_value = 0) THEN
25246        -- If the mod value is 0 then dump all the columns both changed and unchanged
25247        -- changed columns have old and new values while the unchanged values have old and new values
25248        -- exactly same
25249 
25250        -- Call the table handlers to insert into history table
25251        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
25252        (
25253           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
25254           p_VERSION_LABEL_ID            => p_version_label_rec.version_label_id    ,
25255           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
25256           p_OLD_VERSION_LABEL           => l_curr_ver_label_rec.VERSION_LABEL      ,
25257           p_NEW_VERSION_LABEL           => l_curr_ver_label_rec.VERSION_LABEL      ,
25258           p_OLD_DESCRIPTION             => l_curr_ver_label_rec.DESCRIPTION        ,
25259           p_NEW_DESCRIPTION             => l_curr_ver_label_rec.DESCRIPTION        ,
25260           p_OLD_DATE_TIME_STAMP         => l_curr_ver_label_rec.DATE_TIME_STAMP    ,
25261           p_NEW_DATE_TIME_STAMP         => l_curr_ver_label_rec.DATE_TIME_STAMP    ,
25262           p_OLD_ACTIVE_START_DATE       => l_curr_ver_label_rec.ACTIVE_START_DATE  ,
25263           p_NEW_ACTIVE_START_DATE       => l_curr_ver_label_rec.ACTIVE_START_DATE  ,
25264           p_OLD_ACTIVE_END_DATE         => l_curr_ver_label_rec.ACTIVE_END_DATE    ,
25265           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
25266           p_OLD_CONTEXT                 => l_curr_ver_label_rec.CONTEXT    ,
25267           p_NEW_CONTEXT                 => l_curr_ver_label_rec.CONTEXT    ,
25268           p_OLD_ATTRIBUTE1              => l_curr_ver_label_rec.ATTRIBUTE1 ,
25269           p_NEW_ATTRIBUTE1              => l_curr_ver_label_rec.ATTRIBUTE1 ,
25270           p_OLD_ATTRIBUTE2              => l_curr_ver_label_rec.ATTRIBUTE2 ,
25271           p_NEW_ATTRIBUTE2              => l_curr_ver_label_rec.ATTRIBUTE2 ,
25272           p_OLD_ATTRIBUTE3              => l_curr_ver_label_rec.ATTRIBUTE3 ,
25273           p_NEW_ATTRIBUTE3              => l_curr_ver_label_rec.ATTRIBUTE3 ,
25274           p_OLD_ATTRIBUTE4              => l_curr_ver_label_rec.ATTRIBUTE4 ,
25275           p_NEW_ATTRIBUTE4              => l_curr_ver_label_rec.ATTRIBUTE4 ,
25276           p_OLD_ATTRIBUTE5              => l_curr_ver_label_rec.ATTRIBUTE5 ,
25277           p_NEW_ATTRIBUTE5              => l_curr_ver_label_rec.ATTRIBUTE5 ,
25278           p_OLD_ATTRIBUTE6              => l_curr_ver_label_rec.ATTRIBUTE6 ,
25279           p_NEW_ATTRIBUTE6              => l_curr_ver_label_rec.ATTRIBUTE6 ,
25280           p_OLD_ATTRIBUTE7              => l_curr_ver_label_rec.ATTRIBUTE7 ,
25281           p_NEW_ATTRIBUTE7              => l_curr_ver_label_rec.ATTRIBUTE7 ,
25282           p_OLD_ATTRIBUTE8              => l_curr_ver_label_rec.ATTRIBUTE8 ,
25283           p_NEW_ATTRIBUTE8              => l_curr_ver_label_rec.ATTRIBUTE8 ,
25284           p_OLD_ATTRIBUTE9              => l_curr_ver_label_rec.ATTRIBUTE9 ,
25285           p_NEW_ATTRIBUTE9              => l_curr_ver_label_rec.ATTRIBUTE9 ,
25286           p_OLD_ATTRIBUTE10             => l_curr_ver_label_rec.ATTRIBUTE10,
25287           p_NEW_ATTRIBUTE10             => l_curr_ver_label_rec.ATTRIBUTE10,
25288           p_OLD_ATTRIBUTE11             => l_curr_ver_label_rec.ATTRIBUTE11,
25289           p_NEW_ATTRIBUTE11             => l_curr_ver_label_rec.ATTRIBUTE11,
25290           p_OLD_ATTRIBUTE12             => l_curr_ver_label_rec.ATTRIBUTE12,
25291           p_NEW_ATTRIBUTE12             => l_curr_ver_label_rec.ATTRIBUTE12,
25292           p_OLD_ATTRIBUTE13             => l_curr_ver_label_rec.ATTRIBUTE13,
25293           p_NEW_ATTRIBUTE13             => l_curr_ver_label_rec.ATTRIBUTE13,
25294           p_OLD_ATTRIBUTE14             => l_curr_ver_label_rec.ATTRIBUTE14,
25295           p_NEW_ATTRIBUTE14             => l_curr_ver_label_rec.ATTRIBUTE14,
25296           p_OLD_ATTRIBUTE15             => l_curr_ver_label_rec.ATTRIBUTE15,
25297           p_NEW_ATTRIBUTE15             => l_curr_ver_label_rec.ATTRIBUTE15,
25298           p_FULL_DUMP_FLAG              => 'Y'                            ,
25299           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
25300           p_CREATION_DATE               => SYSDATE                        ,
25301           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
25302           p_LAST_UPDATE_DATE            => SYSDATE                        ,
25303           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
25304           p_OBJECT_VERSION_NUMBER       => 1                              );
25305 
25306 
25307        ELSE
25308           -- If the mod value is not equal to zero then dump only the changed columns
25309           -- while the unchanged values have old and new values as null
25310 
25311        -- Call the table handlers to insert into history table
25312        CSI_I_VERSION_LABELS_H_PKG.Insert_Row
25313        (
25314           px_VERSION_LABEL_HISTORY_ID   => l_version_label_hist_id                 ,
25315           p_VERSION_LABEL_ID            => p_version_label_rec.version_label_id    ,
25316           p_TRANSACTION_ID              => p_txn_rec.TRANSACTION_ID                ,
25317           p_OLD_VERSION_LABEL           => l_version_label_rec.VERSION_LABEL       ,
25318           p_NEW_VERSION_LABEL           => l_version_label_rec.VERSION_LABEL       ,
25319           p_OLD_DESCRIPTION             => l_version_label_rec.DESCRIPTION         ,
25320           p_NEW_DESCRIPTION             => l_version_label_rec.DESCRIPTION         ,
25321           p_OLD_DATE_TIME_STAMP         => l_version_label_rec.DATE_TIME_STAMP     ,
25322           p_NEW_DATE_TIME_STAMP         => l_version_label_rec.DATE_TIME_STAMP     ,
25323           p_OLD_ACTIVE_START_DATE       => l_version_label_rec.ACTIVE_START_DATE   ,
25324           p_NEW_ACTIVE_START_DATE       => l_version_label_rec.ACTIVE_START_DATE   ,
25325           p_OLD_ACTIVE_END_DATE         => l_version_label_rec.ACTIVE_END_DATE     ,
25326           p_NEW_ACTIVE_END_DATE         => p_version_label_rec.ACTIVE_END_DATE     ,
25327           p_OLD_CONTEXT                 => l_version_label_rec.CONTEXT             ,
25328           p_NEW_CONTEXT                 => l_version_label_rec.CONTEXT             ,
25329           p_OLD_ATTRIBUTE1              => l_version_label_rec.ATTRIBUTE1          ,
25330           p_NEW_ATTRIBUTE1              => l_version_label_rec.ATTRIBUTE1          ,
25331           p_OLD_ATTRIBUTE2              => l_version_label_rec.ATTRIBUTE2          ,
25332           p_NEW_ATTRIBUTE2              => l_version_label_rec.ATTRIBUTE2          ,
25333           p_OLD_ATTRIBUTE3              => l_version_label_rec.ATTRIBUTE3          ,
25334           p_NEW_ATTRIBUTE3              => l_version_label_rec.ATTRIBUTE3          ,
25335           p_OLD_ATTRIBUTE4              => l_version_label_rec.ATTRIBUTE4          ,
25336           p_NEW_ATTRIBUTE4              => l_version_label_rec.ATTRIBUTE4          ,
25337           p_OLD_ATTRIBUTE5              => l_version_label_rec.ATTRIBUTE5          ,
25338           p_NEW_ATTRIBUTE5              => l_version_label_rec.ATTRIBUTE5          ,
25339           p_OLD_ATTRIBUTE6              => l_version_label_rec.ATTRIBUTE6          ,
25340           p_NEW_ATTRIBUTE6              => l_version_label_rec.ATTRIBUTE6          ,
25341           p_OLD_ATTRIBUTE7              => l_version_label_rec.ATTRIBUTE7          ,
25342           p_NEW_ATTRIBUTE7              => l_version_label_rec.ATTRIBUTE7          ,
25343           p_OLD_ATTRIBUTE8              => l_version_label_rec.ATTRIBUTE8          ,
25344           p_NEW_ATTRIBUTE8              => l_version_label_rec.ATTRIBUTE8          ,
25345           p_OLD_ATTRIBUTE9              => l_version_label_rec.ATTRIBUTE9          ,
25346           p_NEW_ATTRIBUTE9              => l_version_label_rec.ATTRIBUTE9          ,
25347           p_OLD_ATTRIBUTE10             => l_version_label_rec.ATTRIBUTE10         ,
25348           p_NEW_ATTRIBUTE10             => l_version_label_rec.ATTRIBUTE10         ,
25349           p_OLD_ATTRIBUTE11             => l_version_label_rec.ATTRIBUTE11         ,
25350           p_NEW_ATTRIBUTE11             => l_version_label_rec.ATTRIBUTE11         ,
25351           p_OLD_ATTRIBUTE12             => l_version_label_rec.ATTRIBUTE12         ,
25352           p_NEW_ATTRIBUTE12             => l_version_label_rec.ATTRIBUTE12         ,
25353           p_OLD_ATTRIBUTE13             => l_version_label_rec.ATTRIBUTE13         ,
25354           p_NEW_ATTRIBUTE13             => l_version_label_rec.ATTRIBUTE13         ,
25355           p_OLD_ATTRIBUTE14             => l_version_label_rec.ATTRIBUTE14         ,
25356           p_NEW_ATTRIBUTE14             => l_version_label_rec.ATTRIBUTE14         ,
25357           p_OLD_ATTRIBUTE15             => l_version_label_rec.ATTRIBUTE15         ,
25358           p_NEW_ATTRIBUTE15             => l_version_label_rec.ATTRIBUTE15         ,
25359           p_FULL_DUMP_FLAG              => 'N'                            ,
25360           p_CREATED_BY                  => FND_GLOBAL.USER_ID             ,
25361           p_CREATION_DATE               => SYSDATE                        ,
25362           p_LAST_UPDATED_BY             => FND_GLOBAL.USER_ID             ,
25363           p_LAST_UPDATE_DATE            => SYSDATE                        ,
25364           p_LAST_UPDATE_LOGIN           => FND_GLOBAL.LOGIN_ID            ,
25365           p_OBJECT_VERSION_NUMBER       => 1                              );
25366 
25367 
25368     END IF;
25369       --
25370       -- End of API body
25371 
25372       -- Standard check of p_commit.
25373       IF FND_API.To_Boolean( p_commit ) THEN
25374             COMMIT WORK;
25375       END IF;
25376 
25377       -- Standard call to get message count and if count is  get message info.
25378       FND_MSG_PUB.Count_And_Get
25379             (p_encoded => FND_API.G_FALSE,
25380                  p_count       =>       x_msg_count ,
25381          p_data       =>       x_msg_data      );
25382 EXCEPTION
25383     WHEN FND_API.G_EXC_ERROR THEN
25384             ROLLBACK TO expire_version_label_pvt;
25385             x_return_status := FND_API.G_RET_STS_ERROR ;
25386             FND_MSG_PUB.Count_And_Get
25387                 (      p_encoded => FND_API.G_FALSE,
25388                    p_count   =>      x_msg_count,
25389                     p_data    =>      x_msg_data);
25390       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
25391             ROLLBACK TO expire_version_label_pvt;
25392             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
25393             FND_MSG_PUB.Count_And_Get
25394                 (       p_encoded => FND_API.G_FALSE,
25395                   p_count        =>      x_msg_count,
25396                     p_data         =>      x_msg_data);
25397       WHEN OTHERS THEN
25398             ROLLBACK TO expire_version_label_pvt;
25399             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
25400               IF FND_MSG_PUB.Check_Msg_Level
25401                  (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
25402             THEN
25403                          FND_MSG_PUB.Add_Exc_Msg
25404                     ( G_PKG_NAME, l_api_name );
25405             END IF;
25406             FND_MSG_PUB.Count_And_Get
25407                 (     p_encoded => FND_API.G_FALSE,
25408                     p_count         =>      x_msg_count,
25409                     p_data         =>      x_msg_data);
25410 END expire_version_label;
25411 
25412 /*----------------------------------------------------------*/
25413 /* Procedure name:  Initialize_ext_rec_no_dump              */
25414 /* Description : This procedure initialises the first       */
25415 /*                  record from the history                 */
25416 /*----------------------------------------------------------*/
25417 
25418 PROCEDURE Initialize_ext_rec_no_dump
25419 (
25420  x_ext_rec               IN OUT  NOCOPY csi_datastructures_pub.extend_attrib_values_rec,
25421  p_ext_id              IN      NUMBER,
25422  x_no_dump     IN OUT  NOCOPY DATE
25423 ) IS
25424 
25425   CURSOR Int_no_dump(p_ext_id IN NUMBER ) IS
25426   SELECT    creation_date,
25427             NEW_attribute_value,
25428             NEW_active_start_date,
25429             NEW_active_end_date,
25430             NEW_context,
25431             NEW_attribute1 ,
25432             NEW_attribute2,
25433             NEW_attribute3,
25434             NEW_attribute4,
25435             NEW_attribute5,
25436             NEW_attribute6,
25437             NEW_attribute7,
25438             NEW_attribute8,
25439             NEW_attribute9,
25440             NEW_attribute10,
25441             NEW_attribute11,
25442             NEW_attribute12,
25443             NEW_attribute13,
25444             NEW_attribute14,
25445             NEW_attribute15
25446   FROM      csi_iea_values_h
25447   WHERE     attribute_value_id = p_ext_id
25448   ORDER BY  creation_date;
25449 
25450 BEGIN
25451 
25452   FOR C1 IN Int_no_dump(p_ext_id)
25453   LOOP
25454    IF Int_no_dump%ROWCOUNT = 1 THEN
25455     x_no_dump                   := C1.creation_date;
25456     x_ext_rec.attribute_value   := C1.NEW_attribute_value;
25457     x_ext_rec.active_start_date := C1.NEW_active_start_date;
25458     x_ext_rec.active_end_date   := C1.NEW_active_end_date;
25459     x_ext_rec.context           := C1.NEW_context;
25460     x_ext_rec.attribute1        := C1.NEW_attribute1;
25461     x_ext_rec.attribute2        := C1.NEW_attribute2;
25462     x_ext_rec.attribute3        := C1.NEW_attribute3;
25463     x_ext_rec.attribute4        := C1.NEW_attribute4;
25464     x_ext_rec.attribute5        := C1.NEW_attribute5;
25465     x_ext_rec.attribute6        := C1.NEW_attribute6;
25466     x_ext_rec.attribute7        := C1.NEW_attribute7;
25467     x_ext_rec.attribute8        := C1.NEW_attribute8;
25468     x_ext_rec.attribute9        := C1.NEW_attribute9;
25469     x_ext_rec.attribute10       := C1.NEW_attribute10;
25470     x_ext_rec.attribute11       := C1.NEW_attribute11;
25471     x_ext_rec.attribute12       := C1.NEW_attribute12;
25472     x_ext_rec.attribute13       := C1.NEW_attribute13;
25473     x_ext_rec.attribute14       := C1.NEW_attribute14;
25474     x_ext_rec.attribute15       := C1.NEW_attribute15;
25475    ELSE
25476     EXIT;
25477    END IF;
25478   END LOOP;
25479 END Initialize_ext_rec_no_dump;
25480 
25481 
25482 /*----------------------------------------------------------*/
25483 /* Procedure name:  Initialize_ext_rec                      */
25484 /* Description : This procudure recontructs the record      */
25485 /*                 from the history                         */
25486 /*----------------------------------------------------------*/
25487 
25488 PROCEDURE Initialize_ext_rec
25489 (
25490  x_ext_rec               IN OUT  NOCOPY csi_datastructures_pub.extend_attrib_values_rec,
25491  p_ext_h_id              IN      NUMBER,
25492  x_nearest_full_dump     IN OUT  NOCOPY DATE
25493 ) IS
25494 
25495   CURSOR Int_nearest_full_dump(p_ext_hist_id IN NUMBER ) IS
25496   SELECT    creation_date,
25497             NEW_attribute_value,
25498             NEW_active_start_date,
25499             NEW_active_end_date,
25500             NEW_context,
25501             NEW_attribute1 ,
25502             NEW_attribute2,
25503             NEW_attribute3,
25504             NEW_attribute4,
25505             NEW_attribute5,
25506             NEW_attribute6,
25507             NEW_attribute7,
25508             NEW_attribute8,
25509             NEW_attribute9,
25510             NEW_attribute10,
25511             NEW_attribute11,
25512             NEW_attribute12,
25513             NEW_attribute13,
25514             NEW_attribute14,
25515             NEW_attribute15
25516   FROM      csi_iea_values_h
25517   WHERE     attribute_value_history_id = p_ext_hist_id
25518   AND       full_dump_flag = 'Y';
25519 
25520 BEGIN
25521 
25522   FOR C1 IN Int_nearest_full_dump(p_ext_h_id)
25523   LOOP
25524     x_nearest_full_dump         := C1.creation_date;
25525     x_ext_rec.attribute_value   := C1.NEW_attribute_value;
25526     x_ext_rec.active_start_date := C1.NEW_active_start_date;
25527     x_ext_rec.active_end_date   := C1.NEW_active_end_date;
25528     x_ext_rec.context           := C1.NEW_context;
25529     x_ext_rec.attribute1        := C1.NEW_attribute1;
25530     x_ext_rec.attribute2        := C1.NEW_attribute2;
25531     x_ext_rec.attribute3        := C1.NEW_attribute3;
25532     x_ext_rec.attribute4        := C1.NEW_attribute4;
25533     x_ext_rec.attribute5        := C1.NEW_attribute5;
25534     x_ext_rec.attribute6        := C1.NEW_attribute6;
25535     x_ext_rec.attribute7        := C1.NEW_attribute7;
25536     x_ext_rec.attribute8        := C1.NEW_attribute8;
25537     x_ext_rec.attribute9        := C1.NEW_attribute9;
25538     x_ext_rec.attribute10       := C1.NEW_attribute10;
25539     x_ext_rec.attribute11       := C1.NEW_attribute11;
25540     x_ext_rec.attribute12       := C1.NEW_attribute12;
25541     x_ext_rec.attribute13       := C1.NEW_attribute13;
25542     x_ext_rec.attribute14       := C1.NEW_attribute14;
25543     x_ext_rec.attribute15       := C1.NEW_attribute15;
25544   END LOOP;
25545 END Initialize_ext_rec ;
25546 
25547 
25548 
25549 /*----------------------------------------------------------*/
25550 /* Procedure name:  Construct_ext_from_hist                 */
25551 /* Description : This procudure recontructs the record      */
25552 /*                 from the history                         */
25553 /*----------------------------------------------------------*/
25554 
25555 PROCEDURE Construct_ext_from_hist
25556 ( x_ext_tbl           IN OUT  NOCOPY  csi_datastructures_pub.extend_attrib_values_tbl,
25557   p_time_stamp        IN       DATE
25558  ) IS
25559 
25560  l_nearest_full_dump      DATE := p_time_stamp;
25561  l_att_val_hist_id        NUMBER;
25562  l_ext_tbl                csi_datastructures_pub.extend_attrib_values_tbl;
25563  l_ext_count              NUMBER := 0;
25564  --
25565  Process_next             EXCEPTION;
25566 
25567  CURSOR get_nearest_full_dump(p_att_val_id IN NUMBER ,p_time IN DATE) IS
25568  SELECT MAX(attribute_value_history_id)
25569  FROM   csi_iea_values_h
25570  WHERE  creation_date <= p_time
25571  AND    attribute_value_id = p_att_val_id
25572  AND    full_dump_flag = 'Y' ;
25573 
25574 
25575  CURSOR get_ext_hist(p_att_val_id IN NUMBER ,
25576                      p_nearest_full_dump IN DATE,
25577                      p_time IN DATE ) IS
25578  SELECT    attribute_value_history_id,
25579            OLD_ATTRIBUTE_VALUE    ,
25580            NEW_ATTRIBUTE_VALUE,
25581            OLD_ACTIVE_START_DATE,
25582            NEW_ACTIVE_START_DATE,
25583            OLD_ACTIVE_END_DATE  ,
25584            NEW_ACTIVE_END_DATE  ,
25585            OLD_CONTEXT      ,
25586            NEW_CONTEXT      ,
25587            OLD_ATTRIBUTE1   ,
25588            NEW_ATTRIBUTE1   ,
25589            OLD_ATTRIBUTE2   ,
25590            NEW_ATTRIBUTE2   ,
25591            OLD_ATTRIBUTE3   ,
25592            NEW_ATTRIBUTE3   ,
25593            OLD_ATTRIBUTE4   ,
25594            NEW_ATTRIBUTE4   ,
25595            OLD_ATTRIBUTE5   ,
25596            NEW_ATTRIBUTE5   ,
25597            OLD_ATTRIBUTE6   ,
25598            NEW_ATTRIBUTE6   ,
25599            OLD_ATTRIBUTE7   ,
25600            NEW_ATTRIBUTE7   ,
25601            OLD_ATTRIBUTE8   ,
25602            NEW_ATTRIBUTE8   ,
25603            OLD_ATTRIBUTE9   ,
25604            NEW_ATTRIBUTE9   ,
25605            OLD_ATTRIBUTE10  ,
25606            NEW_ATTRIBUTE10  ,
25607            OLD_ATTRIBUTE11  ,
25608            NEW_ATTRIBUTE11  ,
25609            OLD_ATTRIBUTE12  ,
25610            NEW_ATTRIBUTE12  ,
25611            OLD_ATTRIBUTE13  ,
25612            NEW_ATTRIBUTE13  ,
25613            OLD_ATTRIBUTE14  ,
25614            NEW_ATTRIBUTE14  ,
25615            OLD_ATTRIBUTE15  ,
25616            NEW_ATTRIBUTE15
25617   FROM     csi_iea_values_h
25618   WHERE    creation_date <= p_time
25619   AND      creation_date >= p_nearest_full_dump
25620   AND      attribute_value_id = p_att_val_id
25621   ORDER BY creation_date;
25622 
25623   l_time_stamp  DATE := p_time_stamp;
25624 
25625 BEGIN
25626   l_ext_tbl := x_ext_tbl;
25627   IF l_ext_tbl.COUNT > 0 THEN
25628     FOR i IN l_ext_tbl.FIRST..l_ext_tbl.LAST LOOP
25629      BEGIN
25630         OPEN get_nearest_full_dump(l_ext_tbl(i).attribute_value_id, p_time_stamp);
25631         FETCH get_nearest_full_dump INTO l_att_val_hist_id ;
25632         CLOSE get_nearest_full_dump;
25633 
25634         IF  l_att_val_hist_id IS NOT NULL THEN
25635            Initialize_ext_rec( l_ext_tbl(i), l_att_val_hist_id  ,l_nearest_full_dump);
25636         ELSE
25637            Initialize_ext_rec_no_dump( l_ext_tbl(i), l_ext_tbl(i).attribute_value_id, l_time_stamp);
25638 
25639            l_nearest_full_dump :=  l_time_stamp;
25640          -- If the user chooses a date before the creation date of the instance
25641          -- then raise an error
25642            IF p_time_stamp < l_time_stamp THEN
25643               -- Messages Commented for bug 2423342. Records that do not qualify should get deleted.
25644               -- FND_MESSAGE.SET_NAME('CSI','CSI_H_DATE_BEFORE_CRE_DATE');
25645               -- FND_MESSAGE.SET_TOKEN('CREATION_DATE',to_char(l_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
25646               -- FND_MESSAGE.SET_TOKEN('USER_DATE',to_char(p_time_stamp, 'DD-MON-YYYY HH24:MI:SS'));
25647               -- FND_MSG_PUB.Add;
25648               -- RAISE FND_API.G_EXC_ERROR;
25649               l_ext_tbl.DELETE(i);
25650               RAISE Process_next;
25651            END IF;
25652         END IF;
25653 
25654         FOR C2 IN get_ext_hist(l_ext_tbl(i).attribute_value_id ,l_nearest_full_dump,p_time_stamp )
25655         LOOP
25656               IF (C2.OLD_ATTRIBUTE_VALUE IS NULL AND C2.NEW_ATTRIBUTE_VALUE IS NOT NULL)
25657               OR (C2.OLD_ATTRIBUTE_VALUE IS NOT NULL AND C2.NEW_ATTRIBUTE_VALUE IS NULL)
25658               OR (C2.OLD_ATTRIBUTE_VALUE <> C2.NEW_ATTRIBUTE_VALUE) THEN
25659                             l_ext_tbl(i).ATTRIBUTE_VALUE := C2.NEW_ATTRIBUTE_VALUE;
25660               END IF;
25661 
25662               IF (C2.OLD_ACTIVE_START_DATE IS NULL AND C2.NEW_ACTIVE_START_DATE IS NOT NULL)
25663               OR (C2.OLD_ACTIVE_START_DATE IS NOT NULL AND C2.NEW_ACTIVE_START_DATE IS NULL)
25664               OR (C2.OLD_ACTIVE_START_DATE <> C2.NEW_ACTIVE_START_DATE) THEN
25665                    l_ext_tbl(i).ACTIVE_START_DATE := C2.NEW_ACTIVE_START_DATE;
25666               END IF;
25667 
25668 
25669               IF (C2.OLD_ACTIVE_END_DATE IS NULL AND C2.NEW_ACTIVE_END_DATE IS NOT NULL)
25670               OR (C2.OLD_ACTIVE_END_DATE IS NOT NULL AND C2.NEW_ACTIVE_END_DATE IS NULL)
25671               OR (C2.OLD_ACTIVE_END_DATE <> C2.NEW_ACTIVE_END_DATE) THEN
25672                    l_ext_tbl(i).ACTIVE_END_DATE := C2.NEW_ACTIVE_END_DATE;
25673               END IF;
25674 
25675 
25676               IF (C2.OLD_CONTEXT IS NULL AND C2.NEW_CONTEXT IS NOT NULL)
25677               OR (C2.OLD_CONTEXT IS NOT NULL AND C2.NEW_CONTEXT IS NULL)
25678               OR (C2.OLD_CONTEXT <> C2.NEW_CONTEXT) THEN
25679                    l_ext_tbl(i).CONTEXT := C2.NEW_CONTEXT;
25680               END IF;
25681 
25682               IF (C2.OLD_ATTRIBUTE1 IS NULL AND C2.NEW_ATTRIBUTE1 IS NOT NULL)
25683               OR (C2.OLD_ATTRIBUTE1 IS NOT NULL AND C2.NEW_ATTRIBUTE1 IS NULL)
25684               OR (C2.OLD_ATTRIBUTE1 <> C2.NEW_ATTRIBUTE1) THEN
25685                    l_ext_tbl(i).ATTRIBUTE1 := C2.NEW_ATTRIBUTE1;
25686               END IF;
25687 
25688               IF (C2.OLD_ATTRIBUTE2 IS NULL AND C2.NEW_ATTRIBUTE2 IS NOT NULL)
25689               OR (C2.OLD_ATTRIBUTE2 IS NOT NULL AND C2.NEW_ATTRIBUTE2 IS NULL)
25690               OR (C2.OLD_ATTRIBUTE2 <> C2.NEW_ATTRIBUTE2) THEN
25691                    l_ext_tbl(i).ATTRIBUTE2 := C2.NEW_ATTRIBUTE2;
25692               END IF;
25693 
25694               IF (C2.OLD_ATTRIBUTE3 IS NULL AND C2.NEW_ATTRIBUTE3 IS NOT NULL)
25695               OR (C2.OLD_ATTRIBUTE3 IS NOT NULL AND C2.NEW_ATTRIBUTE3 IS NULL)
25696               OR (C2.OLD_ATTRIBUTE3 <> C2.NEW_ATTRIBUTE3) THEN
25697                    l_ext_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
25698               END IF;
25699 
25700               IF (C2.OLD_ATTRIBUTE4 IS NULL AND C2.NEW_ATTRIBUTE4 IS NOT NULL)
25701               OR (C2.OLD_ATTRIBUTE4 IS NOT NULL AND C2.NEW_ATTRIBUTE4 IS NULL)
25702               OR (C2.OLD_ATTRIBUTE4 <> C2.NEW_ATTRIBUTE4) THEN
25703                    l_ext_tbl(i).ATTRIBUTE4 := C2.NEW_ATTRIBUTE4;
25704               END IF;
25705 
25706 
25707               IF (C2.OLD_ATTRIBUTE5 IS NULL AND C2.NEW_ATTRIBUTE5 IS NOT NULL)
25708               OR (C2.OLD_ATTRIBUTE5 IS NOT NULL AND C2.NEW_ATTRIBUTE5 IS NULL)
25709               OR (C2.OLD_ATTRIBUTE5 <> C2.NEW_ATTRIBUTE5) THEN
25710                    l_ext_tbl(i).ATTRIBUTE5 := C2.NEW_ATTRIBUTE5;
25711               END IF;
25712 
25713 
25714               IF (C2.OLD_ATTRIBUTE6 IS NULL AND C2.NEW_ATTRIBUTE6 IS NOT NULL)
25715               OR (C2.OLD_ATTRIBUTE6 IS NOT NULL AND C2.NEW_ATTRIBUTE6 IS NULL)
25716               OR (C2.OLD_ATTRIBUTE6 <> C2.NEW_ATTRIBUTE6) THEN
25717                    l_ext_tbl(i).ATTRIBUTE6 := C2.NEW_ATTRIBUTE6;
25718               END IF;
25719 
25720               IF (C2.OLD_ATTRIBUTE7 IS NULL AND C2.NEW_ATTRIBUTE7 IS NOT NULL)
25721               OR (C2.OLD_ATTRIBUTE7 IS NOT NULL AND C2.NEW_ATTRIBUTE7 IS NULL)
25722               OR (C2.OLD_ATTRIBUTE7 <> C2.NEW_ATTRIBUTE7) THEN
25723                    l_ext_tbl(i).ATTRIBUTE7 := C2.NEW_ATTRIBUTE7;
25724               END IF;
25725 
25726               IF (C2.OLD_ATTRIBUTE8 IS NULL AND C2.NEW_ATTRIBUTE8 IS NOT NULL)
25727               OR (C2.OLD_ATTRIBUTE8 IS NOT NULL AND C2.NEW_ATTRIBUTE8 IS NULL)
25728               OR (C2.OLD_ATTRIBUTE8 <> C2.NEW_ATTRIBUTE8) THEN
25729                    l_ext_tbl(i).ATTRIBUTE8 := C2.NEW_ATTRIBUTE8;
25730               END IF;
25731 
25732               IF (C2.OLD_ATTRIBUTE9 IS NULL AND C2.NEW_ATTRIBUTE9 IS NOT NULL)
25733               OR (C2.OLD_ATTRIBUTE9 IS NOT NULL AND C2.NEW_ATTRIBUTE9 IS NULL)
25734               OR (C2.OLD_ATTRIBUTE9 <> C2.NEW_ATTRIBUTE9) THEN
25735                    l_ext_tbl(i).ATTRIBUTE3 := C2.NEW_ATTRIBUTE3;
25736               END IF;
25737 
25738 
25739               IF (C2.OLD_ATTRIBUTE10 IS NULL AND C2.NEW_ATTRIBUTE10 IS NOT NULL)
25740               OR (C2.OLD_ATTRIBUTE10 IS NOT NULL AND C2.NEW_ATTRIBUTE10 IS NULL)
25741               OR (C2.OLD_ATTRIBUTE10 <> C2.NEW_ATTRIBUTE10) THEN
25742                    l_ext_tbl(i).ATTRIBUTE10 := C2.NEW_ATTRIBUTE10;
25743               END IF;
25744 
25745 
25746 
25747               IF (C2.OLD_ATTRIBUTE11 IS NULL AND C2.NEW_ATTRIBUTE11 IS NOT NULL)
25748               OR (C2.OLD_ATTRIBUTE11 IS NOT NULL AND C2.NEW_ATTRIBUTE11 IS NULL)
25749               OR (C2.OLD_ATTRIBUTE11 <> C2.NEW_ATTRIBUTE11) THEN
25750                    l_ext_tbl(i).ATTRIBUTE11 := C2.NEW_ATTRIBUTE11;
25751               END IF;
25752 
25753               IF (C2.OLD_ATTRIBUTE12 IS NULL AND C2.NEW_ATTRIBUTE12 IS NOT NULL)
25754               OR (C2.OLD_ATTRIBUTE12 IS NOT NULL AND C2.NEW_ATTRIBUTE12 IS NULL)
25755               OR (C2.OLD_ATTRIBUTE12 <> C2.NEW_ATTRIBUTE12) THEN
25756                    l_ext_tbl(i).ATTRIBUTE12 := C2.NEW_ATTRIBUTE12;
25757               END IF;
25758 
25759 
25760               IF (C2.OLD_ATTRIBUTE13 IS NULL AND C2.NEW_ATTRIBUTE13 IS NOT NULL)
25761               OR (C2.OLD_ATTRIBUTE13 IS NOT NULL AND C2.NEW_ATTRIBUTE13 IS NULL)
25762               OR (C2.OLD_ATTRIBUTE13 <> C2.NEW_ATTRIBUTE13) THEN
25763                    l_ext_tbl(i).ATTRIBUTE13 := C2.NEW_ATTRIBUTE13;
25764               END IF;
25765 
25766 
25767               IF (C2.OLD_ATTRIBUTE14 IS NULL AND C2.NEW_ATTRIBUTE14 IS NOT NULL)
25768               OR (C2.OLD_ATTRIBUTE14 IS NOT NULL AND C2.NEW_ATTRIBUTE14 IS NULL)
25769               OR (C2.OLD_ATTRIBUTE14 <> C2.NEW_ATTRIBUTE14) THEN
25770                    l_ext_tbl(i).ATTRIBUTE14 := C2.NEW_ATTRIBUTE14;
25771               END IF;
25772 
25773               IF (C2.OLD_ATTRIBUTE15 IS NULL AND C2.NEW_ATTRIBUTE15 IS NOT NULL)
25774               OR (C2.OLD_ATTRIBUTE15 IS NOT NULL AND C2.NEW_ATTRIBUTE15 IS NULL)
25775               OR (C2.OLD_ATTRIBUTE15 <> C2.NEW_ATTRIBUTE15) THEN
25776                    l_ext_tbl(i).ATTRIBUTE15 := C2.NEW_ATTRIBUTE15;
25777               END IF;
25778         END LOOP;
25779        EXCEPTION
25780           WHEN Process_next THEN
25781              NULL;
25782        END;
25783      END LOOP;
25784      x_ext_tbl.DELETE;
25785      IF l_ext_tbl.count > 0 THEN
25786         FOR ext_row in l_ext_tbl.FIRST .. l_ext_tbl.LAST
25787         LOOP
25788            IF l_ext_tbl.EXISTS(ext_row) THEN
25789               l_ext_count := l_ext_count + 1;
25790               x_ext_tbl(l_ext_count) := l_ext_tbl(ext_row);
25791            END IF;
25792         END LOOP;
25793      END IF;
25794   END IF;
25795 END Construct_ext_from_hist;
25796 
25797 
25798 /*----------------------------------------------------------*/
25799 /* Procedure name:  Define_ext_Columns                      */
25800 /* Description : This procudure defines the columns         */
25801 /*                        for the Dynamic SQL               */
25802 /*----------------------------------------------------------*/
25803 
25804 
25805 PROCEDURE Define_ext_Columns
25806   ( p_get_ext_cursor_id      IN   NUMBER
25807    )
25808 IS
25809   l_ext_rec           csi_datastructures_pub.extend_attrib_values_rec;
25810 
25811 BEGIN
25812     dbms_sql.define_column(p_get_ext_cursor_id, 1,  l_ext_rec.attribute_value_id);
25813     dbms_sql.define_column(p_get_ext_cursor_id, 2,  l_ext_rec.attribute_id);
25814     dbms_sql.define_column(p_get_ext_cursor_id, 3,  l_ext_rec.instance_id);
25815     dbms_sql.define_column(p_get_ext_cursor_id, 4,  l_ext_rec.attribute_code,30);
25816     dbms_sql.define_column(p_get_ext_cursor_id, 5,  l_ext_rec.attribute_value,240);
25817     dbms_sql.define_column(p_get_ext_cursor_id, 6,  l_ext_rec.active_start_date);
25818     dbms_sql.define_column(p_get_ext_cursor_id, 7,  l_ext_rec.active_end_date);
25819     dbms_sql.define_column(p_get_ext_cursor_id, 8,  l_ext_rec.context,30);
25820     dbms_sql.define_column(p_get_ext_cursor_id, 9,  l_ext_rec.attribute1,150);
25821     dbms_sql.define_column(p_get_ext_cursor_id, 10,  l_ext_rec.attribute2,150);
25822     dbms_sql.define_column(p_get_ext_cursor_id, 11, l_ext_rec.attribute3,150);
25823     dbms_sql.define_column(p_get_ext_cursor_id, 12, l_ext_rec.attribute4,150);
25824     dbms_sql.define_column(p_get_ext_cursor_id, 13, l_ext_rec.attribute5,150);
25825     dbms_sql.define_column(p_get_ext_cursor_id, 14, l_ext_rec.attribute6,150);
25826     dbms_sql.define_column(p_get_ext_cursor_id, 15, l_ext_rec.attribute7,150);
25827     dbms_sql.define_column(p_get_ext_cursor_id, 16, l_ext_rec.attribute8,150);
25828     dbms_sql.define_column(p_get_ext_cursor_id, 17, l_ext_rec.attribute9,150);
25829     dbms_sql.define_column(p_get_ext_cursor_id, 18, l_ext_rec.attribute10,150);
25830     dbms_sql.define_column(p_get_ext_cursor_id, 19, l_ext_rec.attribute11,150);
25831     dbms_sql.define_column(p_get_ext_cursor_id, 20, l_ext_rec.attribute12,150);
25832     dbms_sql.define_column(p_get_ext_cursor_id, 21, l_ext_rec.attribute13,150);
25833     dbms_sql.define_column(p_get_ext_cursor_id, 22, l_ext_rec.attribute14,150);
25834     dbms_sql.define_column(p_get_ext_cursor_id, 23, l_ext_rec.attribute15,150);
25835     dbms_sql.define_column(p_get_ext_cursor_id, 24, l_ext_rec.object_version_number);
25836 END Define_ext_Columns;
25837 
25838 
25839 /*----------------------------------------------------------*/
25840 /* Procedure name:  Get_ext_Column_Values                   */
25841 /* Description : This procudure gets the column values      */
25842 /*                        for the Dynamic SQL               */
25843 /*----------------------------------------------------------*/
25844 
25845 PROCEDURE Get_ext_Column_Values
25846    (p_get_ext_cursor_id      IN   NUMBER,
25847     x_ext_rec                OUT  NOCOPY csi_datastructures_pub.extend_attrib_values_rec
25848     )
25849 IS
25850 BEGIN
25851      dbms_sql.column_value(p_get_ext_cursor_id, 1, x_ext_rec.attribute_value_id);
25852      dbms_sql.column_value(p_get_ext_cursor_id, 2, x_ext_rec.attribute_id);
25853      dbms_sql.column_value(p_get_ext_cursor_id, 3, x_ext_rec.instance_id);
25854      dbms_sql.column_value(p_get_ext_cursor_id, 4, x_ext_rec.attribute_code);
25855      dbms_sql.column_value(p_get_ext_cursor_id, 5, x_ext_rec.attribute_value);
25856      dbms_sql.column_value(p_get_ext_cursor_id, 6, x_ext_rec.active_start_date);
25857      dbms_sql.column_value(p_get_ext_cursor_id, 7, x_ext_rec.active_end_date);
25858      dbms_sql.column_value(p_get_ext_cursor_id, 8, x_ext_rec.context);
25859      dbms_sql.column_value(p_get_ext_cursor_id, 9, x_ext_rec.attribute1);
25860      dbms_sql.column_value(p_get_ext_cursor_id, 10, x_ext_rec.attribute2);
25861      dbms_sql.column_value(p_get_ext_cursor_id, 11, x_ext_rec.attribute3);
25862      dbms_sql.column_value(p_get_ext_cursor_id, 12, x_ext_rec.attribute4);
25863      dbms_sql.column_value(p_get_ext_cursor_id, 13, x_ext_rec.attribute5);
25864      dbms_sql.column_value(p_get_ext_cursor_id, 14, x_ext_rec.attribute6);
25865      dbms_sql.column_value(p_get_ext_cursor_id, 15, x_ext_rec.attribute7);
25866      dbms_sql.column_value(p_get_ext_cursor_id, 16, x_ext_rec.attribute8);
25867      dbms_sql.column_value(p_get_ext_cursor_id, 17, x_ext_rec.attribute9);
25868      dbms_sql.column_value(p_get_ext_cursor_id, 18, x_ext_rec.attribute10);
25869      dbms_sql.column_value(p_get_ext_cursor_id, 19, x_ext_rec.attribute11);
25870      dbms_sql.column_value(p_get_ext_cursor_id, 20, x_ext_rec.attribute12);
25871      dbms_sql.column_value(p_get_ext_cursor_id, 21, x_ext_rec.attribute13);
25872      dbms_sql.column_value(p_get_ext_cursor_id, 22, x_ext_rec.attribute14);
25873      dbms_sql.column_value(p_get_ext_cursor_id, 23, x_ext_rec.attribute15);
25874      dbms_sql.column_value(p_get_ext_cursor_id, 24, x_ext_rec.object_version_number);
25875 
25876 END Get_ext_Column_Values;
25877 
25878 
25879 
25880 
25881 /*----------------------------------------------------------*/
25882 /* Procedure name:  Bind_ext_variable                       */
25883 /* Description : This procudure binds the column values     */
25884 /*                        for the Dynamic SQL               */
25885 /*----------------------------------------------------------*/
25886 
25887 PROCEDURE Bind_ext_variable
25888  ( p_ext_query_rec    IN    csi_datastructures_pub.extend_attrib_query_rec,
25889    p_cur_get_ext      IN    NUMBER
25890  )
25891 IS
25892 BEGIN
25893      IF( (p_ext_query_rec.attribute_value_id IS NOT NULL)
25894        AND (p_ext_query_rec.attribute_value_id <> FND_API.G_MISS_NUM))  THEN
25895         DBMS_SQL.BIND_VARIABLE(p_cur_get_ext, ':attribute_value_id', p_ext_query_rec.attribute_value_id);
25896      END IF;
25897 
25898      IF( (p_ext_query_rec.instance_id IS NOT NULL)
25899        AND (p_ext_query_rec.instance_id <> FND_API.G_MISS_NUM))  THEN
25900         DBMS_SQL.BIND_VARIABLE(p_cur_get_ext, ':instance_id', p_ext_query_rec.instance_id);
25901      END IF;
25902 
25903      IF( (p_ext_query_rec.attribute_id IS NOT NULL)
25904        AND (p_ext_query_rec.attribute_id<> FND_API.G_MISS_NUM))  THEN
25905         DBMS_SQL.BIND_VARIABLE(p_cur_get_ext, ':attribute_id', p_ext_query_rec.attribute_id);
25906      END IF;
25907 
25908 END Bind_ext_variable;
25909 
25910 
25911 
25912 
25913 
25914 /*----------------------------------------------------------*/
25915 /* Procedure name:  Gen_ext_Where_Clause                    */
25916 /* Description : Procedure used to  generate the where      */
25917 /*                clause  for Extended Attributes units     */
25918 /*----------------------------------------------------------*/
25919 
25920 PROCEDURE Gen_ext_Where_Clause
25921 ( p_ext_query_rec       IN       csi_datastructures_pub.extend_attrib_query_rec
25922  ,x_where_clause           OUT   NOCOPY VARCHAR2
25923  ) IS
25924 
25925 BEGIN
25926 
25927    -- Assign null at the start
25928    x_where_clause := '';
25929 
25930    IF (( p_ext_query_rec.attribute_value_id  IS NOT NULL)  AND
25931        ( p_ext_query_rec.attribute_value_id  <> FND_API.G_MISS_NUM)) THEN
25932         x_where_clause := ' cv.attribute_value_id = :attribute_value_id ';
25933    ELSIF ( p_ext_query_rec.attribute_value_id  IS NULL)  THEN
25934         x_where_clause := ' cv.attribute_value_id IS NULL ';
25935    END IF;
25936 
25937    IF ((p_ext_query_rec.instance_id IS NOT NULL)  AND
25938        (p_ext_query_rec.instance_id <> FND_API.G_MISS_NUM))   THEN
25939         IF x_where_clause IS NULL THEN
25940             x_where_clause := ' cv.instance_id = :instance_id ';
25941         ELSE
25942             x_where_clause := x_where_clause||' AND '||' cv.instance_id = :instance_id ';
25943         END IF;
25944    ELSIF (p_ext_query_rec.instance_id IS NULL)  THEN
25945         IF x_where_clause IS NULL THEN
25946             x_where_clause := ' cv.instance_id IS NULL ';
25947         ELSE
25948             x_where_clause := x_where_clause||' AND '||' cv.instance_id IS NULL ';
25949         END IF;
25950    END IF;
25951 
25952    IF ((p_ext_query_rec.attribute_id  IS NOT NULL) AND
25953        (p_ext_query_rec.attribute_id  <> FND_API.G_MISS_NUM)) THEN
25954         IF x_where_clause IS NULL THEN
25955             x_where_clause := ' cv.attribute_id = :attribute_id ';
25956         ELSE
25957             x_where_clause := x_where_clause||' AND '||' cv.attribute_id = :attribute_id ';
25958         END IF;
25959    ELSIF (p_ext_query_rec.attribute_id  IS NULL) THEN
25960         IF x_where_clause IS NULL THEN
25961             x_where_clause := ' cv.attribute_id IS NULL ';
25962         ELSE
25963             x_where_clause := x_where_clause||' AND '||' cv.attribute_id IS NULL ';
25964         END IF;
25965    END IF ;
25966 
25967 END Gen_ext_Where_Clause;
25968 
25969 
25970 
25971 /*------------------------------------------------------*/
25972 /* procedure name: create_extended_attrib_values        */
25973 /* description :  Associates extended attributes to an  */
25974 /*                item instance                         */
25975 /*                                                      */
25976 /*------------------------------------------------------*/
25977 
25978 PROCEDURE create_extended_attrib_values
25979  (
25980       p_api_version        IN       NUMBER
25981      ,p_commit             IN       VARCHAR2
25982      ,p_init_msg_list      IN       VARCHAR2
25983      ,p_validation_level   IN       NUMBER
25984      ,p_ext_attrib_rec     IN OUT NOCOPY csi_datastructures_pub.extend_attrib_values_rec
25985      ,p_txn_rec            IN OUT NOCOPY csi_datastructures_pub.transaction_rec
25986      ,x_return_status         OUT NOCOPY VARCHAR2
25987      ,x_msg_count             OUT NOCOPY NUMBER
25988      ,x_msg_data              OUT NOCOPY VARCHAR2
25989      ,p_ext_id_tbl         IN OUT NOCOPY csi_item_instance_pvt.ext_id_tbl
25990      ,p_ext_count_rec      IN OUT NOCOPY csi_item_instance_pvt.ext_count_rec
25991      ,p_ext_attr_tbl       IN OUT NOCOPY csi_item_instance_pvt.ext_attr_tbl
25992      ,p_ext_cat_tbl        IN OUT NOCOPY csi_item_instance_pvt.ext_cat_tbl
25993      ,p_called_from_grp    IN VARCHAR2
25994  )
25995 IS
25996     l_api_name                   CONSTANT VARCHAR2(30) := 'create_extended_attrib_values';
25997     l_api_version                CONSTANT NUMBER       := 1.0;
25998     l_debug_level                         NUMBER;
25999     l_msg_index                           NUMBER;
26000     l_msg_count                           NUMBER;
26001     l_attribute_value_id                  NUMBER       := p_ext_attrib_rec.attribute_value_id;
26002     l_attribute_level                     VARCHAR2(30);
26003     l_master_organization_id              NUMBER;
26004     l_inventory_item_id                   NUMBER;
26005     l_ori_inventory_item_id               NUMBER;
26006     l_ori_master_org_id                   NUMBER;
26007     l_item_category_id                    NUMBER;
26008     l_instance_id                         NUMBER;
26009     l_attribute_value_h_id                NUMBER;
26010     l_dump_frequency_flag                 VARCHAR2(30);
26011     l_record_found               BOOLEAN := FALSE;
26012     l_exists_flag                         VARCHAR2(1);
26013     l_valid_flag                          VARCHAR2(1);
26014 
26015 BEGIN
26016 
26017     -- Standard Start of API savepoint
26018     SAVEPOINT create_extended_attrib_values;
26019 
26020     -- Standard call to check for call compatibility.
26021     IF NOT FND_API.Compatible_API_Call (l_api_version,
26022                                         p_api_version,
26023                                         l_api_name ,
26024                                         g_pkg_name)
26025     THEN
26026       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
26027     END IF;
26028 
26029 
26030     -- Initialize message list if p_init_msg_list is set to TRUE.
26031     IF FND_API.to_Boolean( p_init_msg_list ) THEN
26032       FND_MSG_PUB.initialize;
26033     END IF;
26034 
26035 
26036     --  Initialize API return status to success
26037     x_return_status := FND_API.G_RET_STS_SUCCESS;
26038 
26039 
26040     -- Check the profile option debug_level for debug message reporting
26041     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
26042 
26043     -- If debug_level = 1 then dump the procedure name
26044     IF (l_debug_level > 0) THEN
26045             csi_gen_utility_pvt.put_line( 'create_extended_attrib_values');
26046     END IF;
26047 
26048 
26049      -- If the debug level = 2 then dump all the parameters values.
26050      IF (l_debug_level > 1) THEN
26051            csi_gen_utility_pvt.put_line( p_api_version ||'-'
26052                                       || p_commit           ||'-'
26053                                       || p_init_msg_list     ||'-'
26054                                       || p_validation_level  );
26055          -- Dump extended attribute rec
26056          csi_gen_utility_pvt.dump_ext_attrib_values_rec(p_ext_attrib_rec);
26057           -- Dump txn_rec
26058          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
26059       END IF;
26060 
26061 
26062       -- Start API body
26063       --
26064       -- Initialize the Extended Attrib count
26065       --
26066       IF p_ext_count_rec.ext_count IS NULL OR
26067          p_ext_count_rec.ext_count = FND_API.G_MISS_NUM THEN
26068          p_ext_count_rec.ext_count := 0;
26069       END IF;
26070       --
26071       IF p_ext_count_rec.ext_attr_count IS NULL OR
26072          p_ext_count_rec.ext_attr_count = FND_API.G_MISS_NUM THEN
26073          p_ext_count_rec.ext_attr_count := 0;
26074       END IF;
26075       IF p_ext_count_rec.ext_cat_count IS NULL OR
26076          p_ext_count_rec.ext_cat_count = FND_API.G_MISS_NUM THEN
26077          p_ext_count_rec.ext_cat_count := 0;
26078       END IF;
26079       --
26080       -- Verify if instance id is ok
26081          l_valid_flag := 'Y';
26082          l_exists_flag := 'N';
26083          IF ((p_ext_attrib_rec.instance_id IS NOT NULL AND
26084               p_ext_attrib_rec.instance_id <> FND_API.G_MISS_NUM))
26085          THEN
26086             IF p_ext_id_tbl.count > 0 THEN
26087                FOR ext_count in p_ext_id_tbl.FIRST .. p_ext_id_tbl.LAST
26088                LOOP
26089                   IF p_ext_id_tbl(ext_count).instance_id = p_ext_attrib_rec.instance_id
26090                   THEN
26091                      l_ori_inventory_item_id := p_ext_id_tbl(ext_count).inv_item_id;
26092                      l_ori_master_org_id  := p_ext_id_tbl(ext_count).inv_mast_org_id;
26093                      l_valid_flag := p_ext_id_tbl(ext_count).valid_flag;
26094                      l_exists_flag := 'Y';
26095                      EXIT;
26096                   END IF;
26097                END LOOP;
26098                --
26099                IF l_valid_flag <> 'Y'
26100                THEN
26101                    FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_INSTANCE_ID');
26102                    FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_ext_attrib_rec.instance_id);
26103                    FND_MSG_PUB.Add;
26104                   RAISE fnd_api.g_exc_error;
26105                END IF;
26106             END IF;
26107             --
26108             IF l_exists_flag <> 'Y'
26109             THEN
26110                p_ext_count_rec.ext_count := p_ext_count_rec.ext_count + 1;
26111                p_ext_id_tbl(p_ext_count_rec.ext_count).instance_id := p_ext_attrib_rec.instance_id;
26112                    IF NOT(csi_extend_attrib_vld_pvt.Is_valid_instance_id
26113                               (p_ext_attrib_rec.instance_id
26114                                ,'INSERT'
26115                                ,l_ori_inventory_item_id
26116                                ,l_ori_master_org_id)) THEN
26117                       p_ext_id_tbl(p_ext_count_rec.ext_count).valid_flag := 'N';
26118                       RAISE fnd_api.g_exc_error;
26119                    ELSE
26120                       p_ext_id_tbl(p_ext_count_rec.ext_count).valid_flag := 'Y';
26121                       p_ext_id_tbl(p_ext_count_rec.ext_count).inv_item_id := l_ori_inventory_item_id;
26122                       p_ext_id_tbl(p_ext_count_rec.ext_count).inv_mast_org_id := l_ori_master_org_id;
26123                    END IF;
26124             END IF;
26125          END IF;
26126       --
26127 
26128       -- Verify if attribute_id is ok
26129          l_valid_flag := 'Y';
26130          l_exists_flag := 'N';
26131          IF ((p_ext_attrib_rec.attribute_id IS NOT NULL) AND
26132              (p_ext_attrib_rec.attribute_id <> FND_API.G_MISS_NUM))
26133          THEN
26134             IF p_ext_attr_tbl.count > 0
26135             THEN
26136                FOR ext_attr_count in p_ext_attr_tbl.FIRST .. p_ext_attr_tbl.LAST
26137                LOOP
26138                   IF p_ext_attr_tbl(ext_attr_count).attribute_id = p_ext_attrib_rec.attribute_id
26139                   THEN
26140                      l_inventory_item_id := p_ext_attr_tbl(ext_attr_count).inv_item_id;
26141                      l_master_organization_id := p_ext_attr_tbl(ext_attr_count).inv_mast_org_id;
26142                      l_item_category_id := p_ext_attr_tbl(ext_attr_count).item_category_id;
26143                      l_attribute_level := p_ext_attr_tbl(ext_attr_count).attribute_level;
26144                      l_instance_id := p_ext_attr_tbl(ext_attr_count).instance_id;
26145                      l_valid_flag := p_ext_attr_tbl(ext_attr_count).valid_flag;
26146                      l_exists_flag := 'Y';
26147                      EXIT;
26148                   END IF;
26149                END LOOP;
26150                --
26151                IF l_valid_flag <> 'Y'
26152                THEN
26153                   FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ATTRIBUTE_ID');
26154                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE_ID',p_ext_attrib_rec.attribute_id);
26155                   FND_MSG_PUB.Add;
26156                   RAISE fnd_api.g_exc_error;
26157                END IF;
26158             END IF;
26159             --
26160             IF l_exists_flag <> 'Y'
26161             THEN
26162                p_ext_count_rec.ext_attr_count := p_ext_count_rec.ext_attr_count + 1;
26163                p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).attribute_id := p_ext_attrib_rec.attribute_id;
26164                    IF NOT(csi_extend_attrib_vld_pvt.Is_valid_attribute_id
26165                              (p_ext_attrib_rec.attribute_id
26166                               ,l_attribute_level
26167                               ,l_master_organization_id
26168                               ,l_inventory_item_id
26169                               ,l_item_category_id
26170                               ,l_instance_id
26171                             )) THEN
26172                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).valid_flag := 'N';
26173                       RAISE fnd_api.g_exc_error;
26174                    ELSE
26175                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).valid_flag := 'Y';
26176                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).inv_item_id := l_inventory_item_id;
26177                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).inv_mast_org_id := l_master_organization_id;
26178                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).attribute_level := l_attribute_level;
26179                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).item_category_id := l_item_category_id;
26180                        p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).instance_id := l_instance_id;
26181                    END IF;
26182             END IF;
26183          ELSE
26184             FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_ATTRIBUTE_ID');
26185             FND_MESSAGE.SET_TOKEN('ATTRIBUTE_ID',p_ext_attrib_rec.attribute_id);
26186             FND_MSG_PUB.Add;
26187          END IF;
26188        --
26189 
26190        -- Added by sk for bug 2232880
26191             l_record_found  := FALSE;
26192             IF ( (p_called_from_grp <> FND_API.G_TRUE) AND
26193                  (p_ext_attrib_rec.attribute_value_id IS NULL OR
26194                   p_ext_attrib_rec.attribute_value_id = fnd_api.g_miss_num) )
26195             THEN
26196              BEGIN
26197                   SELECT attribute_value_id,
26198                          object_version_number
26199                   INTO   p_ext_attrib_rec.attribute_value_id,
26200                          p_ext_attrib_rec.object_version_number
26201                   FROM csi_iea_values
26202                   WHERE instance_id          = p_ext_attrib_rec.instance_id
26203                   AND attribute_id           = p_ext_attrib_rec.attribute_id
26204                   AND active_end_date        < SYSDATE
26205                   AND ROWNUM=1;
26206                   l_record_found  := TRUE;
26207              EXCEPTION
26208                WHEN OTHERS THEN
26209                 NULL;
26210              END;
26211             END IF;
26212         IF l_record_found
26213         THEN
26214            -- Unexpire the extended attrib values
26215             IF p_ext_attrib_rec.active_end_date = fnd_api.g_miss_date
26216             THEN
26217                p_ext_attrib_rec.active_end_date := NULL;
26218             END IF;
26219              csi_item_instance_pvt.update_extended_attrib_values
26220              (p_api_version       => p_api_version
26221              ,p_commit            => fnd_api.g_false
26222              ,p_init_msg_list     => p_init_msg_list
26223              ,p_validation_level  => p_validation_level
26224              ,p_ext_attrib_rec    => p_ext_attrib_rec
26225              ,p_txn_rec           => p_txn_rec
26226              ,x_return_status     => x_return_status
26227              ,x_msg_count         => x_msg_count
26228              ,x_msg_data          => x_msg_data
26229              );
26230 
26231              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
26232                 l_msg_index := 1;
26233                    l_msg_count := x_msg_count;
26234                 WHILE l_msg_count > 0 LOOP
26235                      x_msg_data := FND_MSG_PUB.GET
26236                           (l_msg_index,
26237                            FND_API.G_FALSE      );
26238 
26239                      csi_gen_utility_pvt.put_line( ' Failed Pvt:update_extended_attrib_values..');
26240                      csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
26241                      l_msg_index := l_msg_index + 1;
26242                      l_msg_count := l_msg_count - 1;
26243                 END LOOP;
26244                 RAISE FND_API.G_EXC_ERROR;
26245              END IF;
26246         ELSE -- -- Added by sk for bug 2232880
26247     -- Verify that alternate PK is valid
26248        IF p_called_from_grp <> FND_API.G_TRUE THEN
26249           IF NOT(csi_extend_attrib_vld_pvt.Alternate_PK_exists
26250                (p_ext_attrib_rec.instance_id
26251                 ,p_ext_attrib_rec.attribute_id
26252                 )) THEN
26253              RAISE FND_API.G_EXC_ERROR;
26254           END IF;
26255        END IF;
26256 
26257        -- Check start effective date
26258        IF p_called_from_grp <> FND_API.G_TRUE THEN
26259           IF NOT(csi_extend_attrib_vld_pvt.Is_StartDate_Valid
26260                                 (p_ext_attrib_rec.ACTIVE_START_DATE,
26261                                  p_ext_attrib_rec.ACTIVE_END_DATE ,
26262                                  p_ext_attrib_rec.INSTANCE_ID )) THEN
26263              RAISE FND_API.G_EXC_ERROR;
26264           END IF;
26265        END IF;
26266 
26267 
26268        -- Check end effective date
26269        IF p_called_from_grp <> FND_API.G_TRUE THEN
26270           IF p_ext_attrib_rec.ACTIVE_END_DATE is NOT NULL THEN
26271              IF NOT(csi_extend_attrib_vld_pvt.Is_EndDate_Valid
26272                              (p_ext_attrib_rec.ACTIVE_START_DATE,
26273                               p_ext_attrib_rec.ACTIVE_END_DATE ,
26274                               p_ext_attrib_rec.INSTANCE_ID ,
26275                               p_ext_attrib_rec.ATTRIBUTE_VALUE_ID,
26276 					          p_txn_rec.TRANSACTION_ID)) THEN
26277                 RAISE FND_API.G_EXC_ERROR;
26278              END IF;
26279           END IF;
26280        END IF;
26281        --
26282        -- Verify that the attribute level satisfies all requirements
26283        IF l_attribute_level = 'CATEGORY'
26284        THEN
26285          IF ((l_item_category_id IS NOT NULL) AND (l_item_category_id <> FND_API.G_MISS_NUM))
26286          THEN
26287             l_valid_flag := 'Y';
26288             l_exists_flag := 'N';
26289               IF p_ext_cat_tbl.count > 0
26290               THEN
26291                  FOR ext_cat_count in p_ext_cat_tbl.FIRST .. p_ext_cat_tbl.LAST
26292                  LOOP
26293                     IF p_ext_cat_tbl(ext_cat_count).item_cat_id = l_item_category_id
26294                     THEN
26295                        l_valid_flag := p_ext_cat_tbl(ext_cat_count).valid_flag;
26296                        l_exists_flag := 'Y';
26297                        EXIT;
26298                     END IF;
26299                  END LOOP;
26300                  --
26301                  IF l_valid_flag <> 'Y'
26302                  THEN
26303                     FND_MESSAGE.SET_NAME('CSI','CSI_API_INV_ATT_LEV_CAT');
26304                     FND_MESSAGE.SET_TOKEN('ATTRIBUTE_LEVEL_ITEM',l_ori_inventory_item_id);
26305                     FND_MESSAGE.SET_TOKEN('ATTRIBUTE_LEVEL_ORG',l_ori_master_org_id);
26306                     FND_MESSAGE.SET_TOKEN('ATTRIBUTE_LEVEL_CAT',l_item_category_id);
26307                     FND_MSG_PUB.Add;
26308                     RAISE fnd_api.g_exc_error;
26309                  END IF;
26310               END IF;
26311               --
26312               IF l_exists_flag <> 'Y'
26313               THEN
26314                  p_ext_count_rec.ext_cat_count := p_ext_count_rec.ext_cat_count + 1;
26315                  p_ext_cat_tbl(p_ext_count_rec.ext_cat_count).item_cat_id := l_item_category_id;
26316                       IF NOT(csi_extend_attrib_vld_pvt.Is_Valid_attrib_level_content
26317                                 ( l_attribute_level
26318                                  ,l_master_organization_id
26319                                  ,l_inventory_item_id
26320                                  ,l_item_category_id
26321                                  ,l_instance_id
26322                                  ,p_ext_attrib_rec.instance_id
26323                                  ,l_ori_inventory_item_id
26324                                  ,l_ori_master_org_id
26325                              )) THEN
26326                            --p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).valid_flag := 'N'; -- commented for bug 3114946
26327                            p_ext_cat_tbl(p_ext_count_rec.ext_cat_count).valid_flag := 'N'; -- Added for bug 3114946
26328                          RAISE fnd_api.g_exc_error;
26329                       ELSE
26330                            --p_ext_attr_tbl(p_ext_count_rec.ext_attr_count).valid_flag := 'Y'; -- commented for bug 3114946
26331                            p_ext_cat_tbl(p_ext_count_rec.ext_cat_count).valid_flag := 'Y'; -- Added for bug 3114946
26332                       END IF;
26333               END IF;
26334          END IF;
26335        ELSE -- attribute level <> 'CATEGORY'
26336             IF NOT(csi_extend_attrib_vld_pvt.Is_Valid_attrib_level_content
26337                     (l_attribute_level
26338                     ,l_master_organization_id
26339                     ,l_inventory_item_id
26340                     ,l_item_category_id
26341                     ,l_instance_id
26342                     ,p_ext_attrib_rec.instance_id
26343                     ,l_ori_inventory_item_id
26344                     ,l_ori_master_org_id
26345                   )) THEN
26346               RAISE FND_API.G_EXC_ERROR;
26347             END IF;
26348        END IF;
26349 
26350        -- If the attribute_value_id passed is null then generate from sequence
26351        -- and check if the value exists . If exists then generate again from the sequence
26352        -- till we get a value that does not exist
26353        IF l_attribute_value_id IS NULL OR
26354           l_attribute_value_id = FND_API.G_MISS_NUM THEN
26355              l_attribute_value_id := csi_extend_attrib_vld_pvt.get_attribute_value_id;
26356            p_ext_attrib_rec.attribute_value_id := l_attribute_value_id;
26357            WHILE NOT(csi_extend_attrib_vld_pvt.Is_valid_attribute_value_id
26358                (l_attribute_value_id))
26359            LOOP
26360               l_attribute_value_id := csi_extend_attrib_vld_pvt.get_attribute_value_id;
26361             p_ext_attrib_rec.attribute_value_id := l_attribute_value_id;
26362          END LOOP;
26363        ELSE
26364           -- Validate attribute_value_id
26365           IF NOT(csi_extend_attrib_vld_pvt.Is_valid_attribute_value_id
26366                (p_ext_attrib_rec.attribute_value_id)) THEN
26367             RAISE FND_API.G_EXC_ERROR;
26368           END IF;
26369 
26370        END IF;
26371 
26372        IF p_called_from_grp <> FND_API.G_TRUE THEN
26373           -- Create a record in csi_iea_values
26374           CSI_IEA_VALUES_PKG.Insert_Row
26375                   (
26376                   l_attribute_value_id
26377                   ,p_ext_attrib_rec.attribute_id
26378                   ,p_ext_attrib_rec.instance_id
26379                   ,p_ext_attrib_rec.attribute_value
26380                   ,p_ext_attrib_rec.active_start_date
26381                   ,p_ext_attrib_rec.active_end_date
26382                   ,p_ext_attrib_rec.context
26383                   ,p_ext_attrib_rec.attribute1
26384                   ,p_ext_attrib_rec.attribute2
26385                   ,p_ext_attrib_rec.attribute3
26386                   ,p_ext_attrib_rec.attribute4
26387                   ,p_ext_attrib_rec.attribute5
26388                   ,p_ext_attrib_rec.attribute6
26389                   ,p_ext_attrib_rec.attribute7
26390                   ,p_ext_attrib_rec.attribute8
26391                   ,p_ext_attrib_rec.attribute9
26392                   ,p_ext_attrib_rec.attribute10
26393                   ,p_ext_attrib_rec.attribute11
26394                   ,p_ext_attrib_rec.attribute12
26395                   ,p_ext_attrib_rec.attribute13
26396                   ,p_ext_attrib_rec.attribute14
26397                   ,p_ext_attrib_rec.attribute15
26398                   ,fnd_global.user_id
26399                   ,sysdate
26400                   ,fnd_global.user_id
26401                   ,sysdate
26402                   ,fnd_global.user_id
26403                   ,1
26404                   );
26405 
26406 
26407         -- IF CSI_Instance_parties_vld_pvt.Is_Instance_creation_complete( p_ext_attrib_rec.INSTANCE_ID ) THEN
26408         -- Call create_transaction to create txn log
26409 
26410         CSI_TRANSACTIONS_PVT.Create_transaction
26411           ( p_api_version             => p_api_version
26412             ,p_commit                 => fnd_api.g_false
26413             ,p_init_msg_list          => p_init_msg_list
26414             ,p_validation_level       => p_validation_level
26415             ,p_Success_If_Exists_Flag => 'Y'
26416             ,P_transaction_rec        => p_txn_rec
26417             ,x_return_status          => x_return_status
26418             ,x_msg_count              => x_msg_count
26419             ,x_msg_data               => x_msg_data
26420           );
26421 
26422            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
26423                    l_msg_index := 1;
26424                    l_msg_count := x_msg_count;
26425                    WHILE l_msg_count > 0 LOOP
26426                       x_msg_data := FND_MSG_PUB.GET
26427                       (l_msg_index,
26428                        FND_API.G_FALSE      );
26429 
26430                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
26431                        l_msg_index := l_msg_index + 1;
26432                        l_msg_count := l_msg_count - 1;
26433                    END LOOP;
26434                    RAISE FND_API.G_EXC_ERROR;
26435            END IF;
26436 
26437 
26438         -- Get a unique org_assignment number from the sequence
26439         l_attribute_value_h_id := csi_extend_attrib_vld_pvt.get_attribute_value_h_id;
26440 
26441         l_dump_frequency_flag :='N';
26442         -- Create a history
26443         CSI_IEA_VALUES_H_PKG.Insert_Row(
26444              l_attribute_value_h_id
26445             ,l_attribute_value_id
26446             ,p_txn_rec.transaction_id
26447             ,NULL
26448             ,p_ext_attrib_rec.attribute_value
26449             ,NULL
26450             ,p_ext_attrib_rec.active_start_date
26451             ,NULL
26452             ,p_ext_attrib_rec.active_end_date
26453             ,NULL
26454             ,p_ext_attrib_rec.context
26455             ,NULL
26456             ,p_ext_attrib_rec.ATTRIBUTE1
26457             ,NULL
26458             ,p_ext_attrib_rec.ATTRIBUTE2
26459             ,NULL
26460             ,p_ext_attrib_rec.ATTRIBUTE3
26461             ,NULL
26462             ,p_ext_attrib_rec.ATTRIBUTE4
26463             ,NULL
26464             ,p_ext_attrib_rec.ATTRIBUTE5
26465             ,NULL
26466             ,p_ext_attrib_rec.ATTRIBUTE6
26467             ,NULL
26468             ,p_ext_attrib_rec.ATTRIBUTE7
26469             ,NULL
26470             ,p_ext_attrib_rec.ATTRIBUTE8
26471             ,NULL
26472             ,p_ext_attrib_rec.ATTRIBUTE9
26473             ,NULL
26474             ,p_ext_attrib_rec.ATTRIBUTE10
26475             ,NULL
26476             ,p_ext_attrib_rec.ATTRIBUTE11
26477             ,NULL
26478             ,p_ext_attrib_rec.ATTRIBUTE12
26479             ,NULL
26480             ,p_ext_attrib_rec.ATTRIBUTE13
26481             ,NULL
26482             ,p_ext_attrib_rec.ATTRIBUTE14
26483             ,NULL
26484             ,p_ext_attrib_rec.ATTRIBUTE15
26485             ,l_dump_frequency_flag
26486             ,fnd_global.user_id
26487             ,sysdate
26488             ,fnd_global.user_id
26489             ,sysdate
26490             ,fnd_global.user_id
26491             ,1);
26492 
26493 
26494           -- END IF;
26495         END IF; -- Called from grp check
26496 
26497      END IF;  -- Added by sk for bug 2232880
26498       -- End of API body
26499 
26500       -- Standard check of p_commit.
26501       IF FND_API.To_Boolean( p_commit ) THEN
26502          COMMIT WORK;
26503       END IF;
26504 
26505       -- Standard call to get message count and if count is  get message info.
26506       FND_MSG_PUB.Count_And_Get
26507           (p_encoded => FND_API.G_FALSE,
26508                  p_count       =>       x_msg_count ,
26509            p_data        =>       x_msg_data
26510            );
26511 
26512 
26513 EXCEPTION
26514 
26515     WHEN FND_API.G_EXC_ERROR THEN
26516             ROLLBACK TO create_extended_attrib_values;
26517             x_return_status := FND_API.G_RET_STS_ERROR ;
26518             FND_MSG_PUB.Count_And_Get
26519                 (  p_encoded => FND_API.G_FALSE,
26520                  p_count    =>      x_msg_count,
26521                    p_data     =>      x_msg_data
26522                 );
26523 
26524       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
26525             ROLLBACK TO create_extended_attrib_values;
26526             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
26527             FND_MSG_PUB.Count_And_Get
26528                 ( p_encoded => FND_API.G_FALSE,
26529                   p_count    =>      x_msg_count,
26530                    p_data     =>      x_msg_data
26531                 );
26532 
26533       WHEN OTHERS THEN
26534 
26535             ROLLBACK TO  create_extended_attrib_values;
26536             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
26537 
26538             IF       FND_MSG_PUB.Check_Msg_Level
26539                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
26540             THEN
26541                     FND_MSG_PUB.Add_Exc_Msg
26542                     (     g_pkg_name,
26543                           l_api_name
26544                      );
26545             END IF;
26546 
26547             FND_MSG_PUB.Count_And_Get
26548                 (  p_encoded => FND_API.G_FALSE,
26549                   p_count   =>      x_msg_count,
26550                     p_data    =>      x_msg_data
26551                  );
26552 
26553 END create_extended_attrib_values;
26554 
26555 
26556 /*------------------------------------------------------*/
26557 /* procedure name: update_extended_attrib_values        */
26558 /* description :  Updates the existing extended         */
26559 /*                attributes for an item instance       */
26560 /*                                                      */
26561 /*------------------------------------------------------*/
26562 
26563 PROCEDURE update_extended_attrib_values
26564  (
26565       p_api_version        IN     NUMBER
26566      ,p_commit             IN     VARCHAR2
26567      ,p_init_msg_list      IN     VARCHAR2
26568      ,p_validation_level   IN     NUMBER
26569      ,p_ext_attrib_rec     IN     csi_datastructures_pub.extend_attrib_values_rec
26570      ,p_txn_rec            IN OUT NOCOPY csi_datastructures_pub.transaction_rec
26571      ,x_return_status         OUT NOCOPY VARCHAR2
26572      ,x_msg_count             OUT NOCOPY NUMBER
26573      ,x_msg_data              OUT NOCOPY VARCHAR2
26574  )
26575 
26576 IS
26577     l_api_name                  CONSTANT VARCHAR2(30)   := 'update_extended_attrib_values';
26578     l_api_version               CONSTANT NUMBER         := 1.0;
26579     l_debug_level                        NUMBER;
26580     l_msg_index                          NUMBER;
26581     l_msg_count                          NUMBER;
26582     l_ori_inventory_item_id              NUMBER;
26583     l_ori_master_org_id                  NUMBER;
26584     l_attribute_value_id                 NUMBER:= p_ext_attrib_rec.attribute_value_id;
26585     l_attribute_value_h_id               NUMBER;
26586     l_dump_frequency                     NUMBER;
26587     l_dump_frequency_flag                VARCHAR2(30);
26588     l_ext_attrib_rec                     csi_datastructures_pub.extend_attrib_values_rec;
26589     l_temp_ext_attrib_rec                csi_datastructures_pub.extend_attrib_values_rec;
26590     l_ext_att_hist_rec                   csi_datastructures_pub.ext_attrib_val_history_rec;
26591 
26592 CURSOR ieav_hist_csr (p_ieav_hist_id NUMBER) IS
26593        SELECT  *
26594        FROM    csi_iea_values_h
26595        WHERE   csi_iea_values_h.attribute_value_history_id = p_ieav_hist_id
26596        FOR UPDATE OF OBJECT_VERSION_NUMBER ;
26597 l_ieav_hist_id    NUMBER;
26598 l_ieav_hist_csr   ieav_hist_csr%ROWTYPE;
26599 
26600 BEGIN
26601     -- Standard Start of API savepoint
26602     SAVEPOINT      update_extended_attrib_values;
26603 
26604     -- Standard call to check for call compatibility.
26605     IF NOT FND_API.Compatible_API_Call (l_api_version,
26606                                         p_api_version,
26607                                         l_api_name ,
26608                                         g_pkg_name)
26609     THEN
26610           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
26611     END IF;
26612 
26613 
26614     -- Initialize message list if p_init_msg_list is set to TRUE.
26615     IF FND_API.to_Boolean( p_init_msg_list ) THEN
26616           FND_MSG_PUB.initialize;
26617     END IF;
26618 
26619 
26620     --  Initialize API return status to success
26621     x_return_status := FND_API.G_RET_STS_SUCCESS;
26622 
26623 
26624     -- Check the profile option debug_level for debug message reporting
26625     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
26626 
26627     -- If debug_level = 1 then dump the procedure name
26628     IF (l_debug_level > 0) THEN
26629         csi_gen_utility_pvt.put_line( 'update_extended_attrib_values');
26630     END IF;
26631 
26632 
26633     -- If the debug level = 2 then dump all the parameters values.
26634     IF (l_debug_level > 1) THEN
26635           csi_gen_utility_pvt.put_line(
26636                                        p_api_version       ||'-'
26637                                     || p_commit            ||'-'
26638                                     || p_init_msg_list     ||'-'
26639                                     || p_validation_level   );
26640          -- Dump extended attribute rec
26641          csi_gen_utility_pvt.dump_ext_attrib_values_rec(p_ext_attrib_rec);
26642          -- Dump txn_rec
26643          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
26644      END IF;
26645 
26646 
26647      -- Start API body
26648 
26649      -- Validate extended_attribute_value_id
26650      IF NOT(csi_extend_attrib_vld_pvt.Val_and_get_ext_att_id
26651              (p_ext_attrib_rec.attribute_value_id,
26652               l_ext_attrib_rec )) THEN
26653           RAISE FND_API.G_EXC_ERROR;
26654      END IF;
26655 
26656 
26657      -- Validate object_version_number
26658      IF NOT(csi_extend_attrib_vld_pvt.Is_valid_obj_ver_num
26659             (p_ext_attrib_rec.object_version_number
26660           ,l_ext_attrib_rec.object_version_number
26661           )) THEN
26662          RAISE FND_API.G_EXC_ERROR;
26663      END IF;
26664 
26665 
26666      -- Validate if the instance is updatable
26667      IF NOT(csi_extend_attrib_vld_pvt.Is_Updatable
26668              (l_ext_attrib_rec.active_end_date ,
26669             p_ext_attrib_rec.active_end_date )) THEN
26670          RAISE FND_API.G_EXC_ERROR;
26671      END IF;
26672 
26673      -- Validate instance id for which the update is related to
26674      IF NOT(csi_extend_attrib_vld_pvt.Is_Valid_instance_id
26675             (l_ext_attrib_rec.instance_id
26676            ,'UPDATE'
26677            ,l_ori_inventory_item_id
26678            ,l_ori_master_org_id)) THEN
26679         -- Check if it is an expire operation
26680            IF NOT(csi_extend_attrib_vld_pvt.Is_Expire_Op
26681                      (p_ext_attrib_rec)) THEN
26682            RAISE FND_API.G_EXC_ERROR;
26683            END IF;
26684      END IF;
26685 
26686      -- Validate instance id
26687      IF ( p_ext_attrib_rec.instance_id <> FND_API.G_MISS_NUM ) THEN
26688         IF NOT(csi_extend_attrib_vld_pvt.Val_inst_id_for_update
26689             (p_ext_attrib_rec.instance_id
26690            ,l_ext_attrib_rec.instance_id
26691           )) THEN
26692            RAISE FND_API.G_EXC_ERROR;
26693          END IF;
26694      END IF;
26695 
26696 
26697      -- Verify start effective date
26698      IF ( p_ext_attrib_rec.active_start_date <> FND_API.G_MISS_DATE) THEN
26699        IF (p_ext_attrib_rec.active_start_date <> l_ext_attrib_rec.active_start_date) THEN
26700                FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
26701                FND_MESSAGE.Set_Token('COLUMN', 'EXTENDED ATTRIBUTE START_DATE');
26702                FND_MSG_PUB.ADD;
26703                RAISE FND_API.G_EXC_ERROR;
26704        END IF;
26705      END IF;
26706 
26707      -- Verify end effective date
26708      IF ( p_ext_attrib_rec.active_end_date <> FND_API.G_MISS_DATE) THEN
26709        IF p_ext_attrib_rec.active_end_date is NOT NULL THEN
26710          IF g_expire_ext_att_flag  <> 'Y' THEN
26711            IF NOT(csi_extend_attrib_vld_pvt.Is_EndDate_Valid
26712                (p_ext_attrib_rec.active_start_date,
26713                             p_ext_attrib_rec.active_end_date,
26714                             p_ext_attrib_rec.instance_id ,
26715 					   p_ext_attrib_rec.attribute_value_id ,
26716 					   p_txn_rec.transaction_id)) THEN
26717                 RAISE FND_API.G_EXC_ERROR;
26718            END IF;
26719          END IF;
26720        END IF;
26721      END IF;
26722 
26723      -- Verify attribute id
26724      IF ( p_ext_attrib_rec.attribute_id <> FND_API.G_MISS_NUM) THEN
26725        IF (l_ext_attrib_rec.attribute_id <> l_ext_attrib_rec.attribute_id) THEN
26726                FND_MESSAGE.Set_Name('CSI', 'CSI_API_UPD_NOT_ALLOWED');
26727                FND_MESSAGE.Set_Token('COLUMN', 'EXTENDED ATTRIBUTE_ID');
26728                FND_MSG_PUB.ADD;
26729                RAISE FND_API.G_EXC_ERROR;
26730        END IF;
26731      END IF;
26732 
26733 
26734      -- Get the new object version number
26735      l_ext_attrib_rec.object_version_number :=
26736       csi_extend_attrib_vld_pvt.get_object_version_number(l_ext_attrib_rec.object_version_number);
26737 
26738      CSI_IEA_VALUES_PKG.Update_Row
26739                   (
26740                   l_attribute_value_id
26741                   ,p_ext_attrib_rec.attribute_id
26742                   ,p_ext_attrib_rec.instance_id
26743                   ,p_ext_attrib_rec.attribute_value
26744                   ,p_ext_attrib_rec.active_start_date
26745                   ,p_ext_attrib_rec.active_end_date
26746                   ,p_ext_attrib_rec.context
26747                   ,p_ext_attrib_rec.attribute1
26748                   ,p_ext_attrib_rec.attribute2
26749                   ,p_ext_attrib_rec.attribute3
26750                   ,p_ext_attrib_rec.attribute4
26751                   ,p_ext_attrib_rec.attribute5
26752                   ,p_ext_attrib_rec.attribute6
26753                   ,p_ext_attrib_rec.attribute7
26754                   ,p_ext_attrib_rec.attribute8
26755                   ,p_ext_attrib_rec.attribute9
26756                   ,p_ext_attrib_rec.attribute10
26757                   ,p_ext_attrib_rec.attribute11
26758                   ,p_ext_attrib_rec.attribute12
26759                   ,p_ext_attrib_rec.attribute13
26760                   ,p_ext_attrib_rec.attribute14
26761                   ,p_ext_attrib_rec.attribute15
26762                   ,fnd_api.g_miss_num
26763                   ,fnd_api.g_miss_date
26764                   ,fnd_global.user_id
26765                   ,sysdate
26766                   ,fnd_global.user_id
26767                   ,l_ext_attrib_rec.object_version_number
26768                   );
26769 
26770 
26771 
26772     -- IF CSI_Instance_parties_vld_pvt.Is_Instance_creation_complete( p_ext_attrib_rec.INSTANCE_ID ) THEN
26773     -- Call create_transaction to create txn log
26774 
26775      CSI_TRANSACTIONS_PVT.Create_transaction
26776           (  p_api_version            => p_api_version
26777             ,p_commit                 => fnd_api.g_false
26778             ,p_init_msg_list          => p_init_msg_list
26779             ,p_validation_level       => p_validation_level
26780             ,p_Success_If_Exists_Flag => 'Y'
26781             ,p_transaction_rec        => p_txn_rec
26782             ,x_return_status          => x_return_status
26783             ,x_msg_count              => x_msg_count
26784             ,x_msg_data               => x_msg_data
26785           );
26786 
26787            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
26788                    l_msg_index := 1;
26789                    l_msg_count := x_msg_count;
26790                    WHILE l_msg_count > 0 LOOP
26791                       x_msg_data := FND_MSG_PUB.GET
26792                       (l_msg_index,
26793                        FND_API.G_FALSE      );
26794 
26795                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
26796                        l_msg_index := l_msg_index + 1;
26797                        l_msg_count := l_msg_count - 1;
26798                    END LOOP;
26799                    RAISE FND_API.G_EXC_ERROR;
26800            END IF;
26801 
26802      -- Get a unique org_assignment number from the sequence
26803      l_attribute_value_h_id := csi_extend_attrib_vld_pvt.get_attribute_value_h_id;
26804 
26805      -- Get full dump frequency from CSI_INSTALL_PARAMETERS
26806      l_dump_frequency := csi_org_unit_vld_pvt.get_full_dump_frequency;
26807      --
26808      IF l_dump_frequency IS NULL THEN
26809         RAISE FND_API.G_EXC_ERROR;
26810      END IF;
26811 
26812      -- Grab the input record in a temporary record
26813      l_temp_ext_attrib_rec := p_ext_attrib_rec;
26814 
26815      -- Start of modifications for Bug#2547034 on 09/20/02 - rtalluri
26816      BEGIN
26817        SELECT  attribute_value_history_id
26818        INTO    l_ieav_hist_id
26819        FROM    csi_iea_values_h h
26820        WHERE   h.transaction_id = p_txn_rec.transaction_id
26821        AND     h.attribute_value_id = p_ext_attrib_rec.attribute_value_id;
26822 
26823        OPEN   ieav_hist_csr(l_ieav_hist_id);
26824        FETCH  ieav_hist_csr INTO l_ieav_hist_csr ;
26825        CLOSE  ieav_hist_csr;
26826 
26827        IF l_ieav_hist_csr.full_dump_flag = 'Y'
26828        THEN
26829          csi_iea_values_h_pkg.update_row (
26830           p_attribute_value_history_id    => l_ieav_hist_id                         ,
26831           p_attribute_value_id            => fnd_api.g_miss_num                     ,
26832           p_transaction_id                => fnd_api.g_miss_num                     ,
26833           p_old_attribute_value           => fnd_api.g_miss_char                    ,
26834           p_new_attribute_value           => l_temp_ext_attrib_rec.attribute_value  ,
26835           p_old_active_start_date         => fnd_api.g_miss_date                    ,
26836           p_new_active_start_date         => l_temp_ext_attrib_rec.active_start_date,
26837           p_old_active_end_date           => fnd_api.g_miss_date                    ,
26838           p_new_active_end_date           => l_temp_ext_attrib_rec.active_end_date  ,
26839           p_old_context                   => fnd_api.g_miss_char                    ,
26840           p_new_context                   => l_temp_ext_attrib_rec.context          ,
26841           p_old_attribute1                => fnd_api.g_miss_char                    ,
26842           p_new_attribute1                => l_temp_ext_attrib_rec.attribute1       ,
26843           p_old_attribute2                => fnd_api.g_miss_char                    ,
26844           p_new_attribute2                => l_temp_ext_attrib_rec.attribute2       ,
26845           p_old_attribute3                => fnd_api.g_miss_char                    ,
26846           p_new_attribute3                => l_temp_ext_attrib_rec.attribute3       ,
26847           p_old_attribute4                => fnd_api.g_miss_char                    ,
26848           p_new_attribute4                => l_temp_ext_attrib_rec.attribute4       ,
26849           p_old_attribute5                => fnd_api.g_miss_char                    ,
26850           p_new_attribute5                => l_temp_ext_attrib_rec.attribute5       ,
26851           p_old_attribute6                => fnd_api.g_miss_char                    ,
26852           p_new_attribute6                => l_temp_ext_attrib_rec.attribute6       ,
26853           p_old_attribute7                => fnd_api.g_miss_char                    ,
26854           p_new_attribute7                => l_temp_ext_attrib_rec.attribute7       ,
26855           p_old_attribute8                => fnd_api.g_miss_char                    ,
26856           p_new_attribute8                => l_temp_ext_attrib_rec.attribute8       ,
26857           p_old_attribute9                => fnd_api.g_miss_char                    ,
26858           p_new_attribute9                => l_temp_ext_attrib_rec.attribute9       ,
26859           p_old_attribute10               => fnd_api.g_miss_char                    ,
26860           p_new_attribute10               => l_temp_ext_attrib_rec.attribute10      ,
26861           p_old_attribute11               => fnd_api.g_miss_char                    ,
26862           p_new_attribute11               => l_temp_ext_attrib_rec.attribute11      ,
26863           p_old_attribute12               => fnd_api.g_miss_char                    ,
26864           p_new_attribute12               => l_temp_ext_attrib_rec.attribute12      ,
26865           p_old_attribute13               => fnd_api.g_miss_char                    ,
26866           p_new_attribute13               => l_temp_ext_attrib_rec.attribute13      ,
26867           p_old_attribute14               => fnd_api.g_miss_char                    ,
26868           p_new_attribute14               => l_temp_ext_attrib_rec.attribute14      ,
26869           p_old_attribute15               => fnd_api.g_miss_char                    ,
26870           p_new_attribute15               => l_temp_ext_attrib_rec.attribute15      ,
26871           p_full_dump_flag                => fnd_api.g_miss_char                    ,
26872           p_created_by                    => fnd_api.g_miss_num                     ,
26873           p_creation_date                 => fnd_api.g_miss_date                    ,
26874           p_last_updated_by               => fnd_global.user_id                     ,
26875           p_last_update_date              => sysdate                                ,
26876           p_last_update_login             => fnd_global.user_id                     ,
26877           p_object_version_number         => fnd_api.g_miss_num);
26878 
26879        ELSE
26880           --
26881              IF    ( l_ieav_hist_csr.old_attribute_value IS NULL
26882                 AND  l_ieav_hist_csr.new_attribute_value IS NULL ) THEN
26883                      IF  ( l_temp_ext_attrib_rec.attribute_value = l_ext_attrib_rec.attribute_value )
26884                       OR ( l_temp_ext_attrib_rec.attribute_value = fnd_api.g_miss_char ) THEN
26885                            l_ieav_hist_csr.old_attribute_value := NULL;
26886                            l_ieav_hist_csr.new_attribute_value := NULL;
26887                      ELSE
26888                            l_ieav_hist_csr.old_attribute_value := fnd_api.g_miss_char;
26889                            l_ieav_hist_csr.new_attribute_value := l_temp_ext_attrib_rec.attribute_value;
26890                      END IF;
26891              ELSE
26892                      l_ieav_hist_csr.old_attribute_value := fnd_api.g_miss_char;
26893                      l_ieav_hist_csr.new_attribute_value := l_temp_ext_attrib_rec.attribute_value;
26894              END IF;
26895              --
26896              IF    ( l_ieav_hist_csr.old_active_start_date IS NULL
26897                 AND  l_ieav_hist_csr.new_active_start_date IS NULL ) THEN
26898                      IF  ( l_temp_ext_attrib_rec.active_start_date = l_ext_attrib_rec.active_start_date )
26899                       OR ( l_temp_ext_attrib_rec.active_start_date = fnd_api.g_miss_date ) THEN
26900                            l_ieav_hist_csr.old_active_start_date := NULL;
26901                            l_ieav_hist_csr.new_active_start_date := NULL;
26902                      ELSE
26903                            l_ieav_hist_csr.old_active_start_date := fnd_api.g_miss_date;
26904                            l_ieav_hist_csr.new_active_start_date := l_temp_ext_attrib_rec.active_start_date;
26905                      END IF;
26906              ELSE
26907                      l_ieav_hist_csr.old_active_start_date := fnd_api.g_miss_date;
26908                      l_ieav_hist_csr.new_active_start_date := l_temp_ext_attrib_rec.active_start_date;
26909              END IF;
26910              --
26911              IF    ( l_ieav_hist_csr.old_active_end_date IS NULL
26912                 AND  l_ieav_hist_csr.new_active_end_date IS NULL ) THEN
26913                      IF  ( l_temp_ext_attrib_rec.active_end_date = l_ext_attrib_rec.active_end_date )
26914                       OR ( l_temp_ext_attrib_rec.active_end_date = fnd_api.g_miss_date ) THEN
26915                            l_ieav_hist_csr.old_active_end_date := NULL;
26916                            l_ieav_hist_csr.new_active_end_date := NULL;
26917                      ELSE
26918                            l_ieav_hist_csr.old_active_end_date := fnd_api.g_miss_date;
26919                            l_ieav_hist_csr.new_active_end_date := l_temp_ext_attrib_rec.active_end_date;
26920                      END IF;
26921              ELSE
26922                      l_ieav_hist_csr.old_active_end_date := fnd_api.g_miss_date;
26923                      l_ieav_hist_csr.new_active_end_date := l_temp_ext_attrib_rec.active_end_date;
26924              END IF;
26925              --
26926              IF    ( l_ieav_hist_csr.old_context IS NULL
26927                 AND  l_ieav_hist_csr.new_context IS NULL ) THEN
26928                      IF  ( l_temp_ext_attrib_rec.context = l_ext_attrib_rec.context )
26929                       OR ( l_temp_ext_attrib_rec.context = fnd_api.g_miss_char ) THEN
26930                            l_ieav_hist_csr.old_context := NULL;
26931                            l_ieav_hist_csr.new_context := NULL;
26932                      ELSE
26933                            l_ieav_hist_csr.old_context := fnd_api.g_miss_char;
26934                            l_ieav_hist_csr.new_context := l_temp_ext_attrib_rec.context;
26935                      END IF;
26936              ELSE
26937                      l_ieav_hist_csr.old_context := fnd_api.g_miss_char;
26938                      l_ieav_hist_csr.new_context := l_temp_ext_attrib_rec.context;
26939              END IF;
26940              --
26941              IF    ( l_ieav_hist_csr.old_attribute1 IS NULL
26942                 AND  l_ieav_hist_csr.new_attribute1 IS NULL ) THEN
26943                      IF  ( l_temp_ext_attrib_rec.attribute1 = l_ext_attrib_rec.attribute1 )
26944                       OR ( l_temp_ext_attrib_rec.attribute1 = fnd_api.g_miss_char ) THEN
26945                            l_ieav_hist_csr.old_attribute1 := NULL;
26946                            l_ieav_hist_csr.new_attribute1 := NULL;
26947                      ELSE
26948                            l_ieav_hist_csr.old_attribute1 := fnd_api.g_miss_char;
26949                            l_ieav_hist_csr.new_attribute1 := l_temp_ext_attrib_rec.attribute1;
26950                      END IF;
26951              ELSE
26952                      l_ieav_hist_csr.old_attribute1 := fnd_api.g_miss_char;
26953                      l_ieav_hist_csr.new_attribute1 := l_temp_ext_attrib_rec.attribute1;
26954              END IF;
26955              --
26956              IF    ( l_ieav_hist_csr.old_attribute2 IS NULL
26957                 AND  l_ieav_hist_csr.new_attribute2 IS NULL ) THEN
26958                      IF  ( l_temp_ext_attrib_rec.attribute2 = l_ext_attrib_rec.attribute2 )
26959                       OR ( l_temp_ext_attrib_rec.attribute2 = fnd_api.g_miss_char ) THEN
26960                            l_ieav_hist_csr.old_attribute2 := NULL;
26961                            l_ieav_hist_csr.new_attribute2 := NULL;
26962                      ELSE
26963                            l_ieav_hist_csr.old_attribute2 := fnd_api.g_miss_char;
26964                            l_ieav_hist_csr.new_attribute2 := l_temp_ext_attrib_rec.attribute2;
26965                      END IF;
26966              ELSE
26967                      l_ieav_hist_csr.old_attribute2 := fnd_api.g_miss_char;
26968                      l_ieav_hist_csr.new_attribute2 := l_temp_ext_attrib_rec.attribute2;
26969              END IF;
26970              --
26971              IF    ( l_ieav_hist_csr.old_attribute3 IS NULL
26972                 AND  l_ieav_hist_csr.new_attribute3 IS NULL ) THEN
26973                      IF  ( l_temp_ext_attrib_rec.attribute3 = l_ext_attrib_rec.attribute3 )
26974                       OR ( l_temp_ext_attrib_rec.attribute3 = fnd_api.g_miss_char ) THEN
26975                            l_ieav_hist_csr.old_attribute3 := NULL;
26976                            l_ieav_hist_csr.new_attribute3 := NULL;
26977                      ELSE
26978                            l_ieav_hist_csr.old_attribute3 := fnd_api.g_miss_char;
26979                            l_ieav_hist_csr.new_attribute3 := l_temp_ext_attrib_rec.attribute3;
26980                      END IF;
26981              ELSE
26982                      l_ieav_hist_csr.old_attribute3 := fnd_api.g_miss_char;
26983                      l_ieav_hist_csr.new_attribute3 := l_temp_ext_attrib_rec.attribute3;
26984              END IF;
26985              --
26986              IF    ( l_ieav_hist_csr.old_attribute4 IS NULL
26987                 AND  l_ieav_hist_csr.new_attribute4 IS NULL ) THEN
26988                      IF  ( l_temp_ext_attrib_rec.attribute4 = l_ext_attrib_rec.attribute4 )
26989                       OR ( l_temp_ext_attrib_rec.attribute4 = fnd_api.g_miss_char ) THEN
26990                            l_ieav_hist_csr.old_attribute4 := NULL;
26991                            l_ieav_hist_csr.new_attribute4 := NULL;
26992                      ELSE
26993                            l_ieav_hist_csr.old_attribute4 := fnd_api.g_miss_char;
26994                            l_ieav_hist_csr.new_attribute4 := l_temp_ext_attrib_rec.attribute4;
26995                      END IF;
26996              ELSE
26997                      l_ieav_hist_csr.old_attribute4 := fnd_api.g_miss_char;
26998                      l_ieav_hist_csr.new_attribute4 := l_temp_ext_attrib_rec.attribute4;
26999              END IF;
27000              --
27001              IF    ( l_ieav_hist_csr.old_attribute5 IS NULL
27002                 AND  l_ieav_hist_csr.new_attribute5 IS NULL ) THEN
27003                      IF  ( l_temp_ext_attrib_rec.attribute5 = l_ext_attrib_rec.attribute5 )
27004                       OR ( l_temp_ext_attrib_rec.attribute5 = fnd_api.g_miss_char ) THEN
27005                            l_ieav_hist_csr.old_attribute5 := NULL;
27006                            l_ieav_hist_csr.new_attribute5 := NULL;
27007                      ELSE
27008                            l_ieav_hist_csr.old_attribute5 := fnd_api.g_miss_char;
27009                            l_ieav_hist_csr.new_attribute5 := l_temp_ext_attrib_rec.attribute5;
27010                      END IF;
27011              ELSE
27012                      l_ieav_hist_csr.old_attribute5 := fnd_api.g_miss_char;
27013                      l_ieav_hist_csr.new_attribute5 := l_temp_ext_attrib_rec.attribute5;
27014              END IF;
27015              --
27016              IF    ( l_ieav_hist_csr.old_attribute6 IS NULL
27017                 AND  l_ieav_hist_csr.new_attribute6 IS NULL ) THEN
27018                      IF  ( l_temp_ext_attrib_rec.attribute6 = l_ext_attrib_rec.attribute6 )
27019                       OR ( l_temp_ext_attrib_rec.attribute6 = fnd_api.g_miss_char ) THEN
27020                            l_ieav_hist_csr.old_attribute6 := NULL;
27021                            l_ieav_hist_csr.new_attribute6 := NULL;
27022                      ELSE
27023                            l_ieav_hist_csr.old_attribute6 := fnd_api.g_miss_char;
27024                            l_ieav_hist_csr.new_attribute6 := l_temp_ext_attrib_rec.attribute6;
27025                      END IF;
27026              ELSE
27027                      l_ieav_hist_csr.old_attribute6 := fnd_api.g_miss_char;
27028                      l_ieav_hist_csr.new_attribute6 := l_temp_ext_attrib_rec.attribute6;
27029              END IF;
27030              --
27031              IF    ( l_ieav_hist_csr.old_attribute7 IS NULL
27032                 AND  l_ieav_hist_csr.new_attribute7 IS NULL ) THEN
27033                      IF  ( l_temp_ext_attrib_rec.attribute7 = l_ext_attrib_rec.attribute7 )
27034                       OR ( l_temp_ext_attrib_rec.attribute7 = fnd_api.g_miss_char ) THEN
27035                            l_ieav_hist_csr.old_attribute7 := NULL;
27036                            l_ieav_hist_csr.new_attribute7 := NULL;
27037                      ELSE
27038                            l_ieav_hist_csr.old_attribute7 := fnd_api.g_miss_char;
27039                            l_ieav_hist_csr.new_attribute7 := l_temp_ext_attrib_rec.attribute7;
27040                      END IF;
27041              ELSE
27042                      l_ieav_hist_csr.old_attribute7 := fnd_api.g_miss_char;
27043                      l_ieav_hist_csr.new_attribute7 := l_temp_ext_attrib_rec.attribute7;
27044              END IF;
27045              --
27046              IF    ( l_ieav_hist_csr.old_attribute8 IS NULL
27047                 AND  l_ieav_hist_csr.new_attribute8 IS NULL ) THEN
27048                      IF  ( l_temp_ext_attrib_rec.attribute8 = l_ext_attrib_rec.attribute8 )
27049                       OR ( l_temp_ext_attrib_rec.attribute8 = fnd_api.g_miss_char ) THEN
27050                            l_ieav_hist_csr.old_attribute8 := NULL;
27051                            l_ieav_hist_csr.new_attribute8 := NULL;
27052                      ELSE
27053                            l_ieav_hist_csr.old_attribute8 := fnd_api.g_miss_char;
27054                            l_ieav_hist_csr.new_attribute8 := l_temp_ext_attrib_rec.attribute8;
27055                      END IF;
27056              ELSE
27057                      l_ieav_hist_csr.old_attribute8 := fnd_api.g_miss_char;
27058                      l_ieav_hist_csr.new_attribute8 := l_temp_ext_attrib_rec.attribute8;
27059              END IF;
27060              --
27061              IF    ( l_ieav_hist_csr.old_attribute9 IS NULL
27062                 AND  l_ieav_hist_csr.new_attribute9 IS NULL ) THEN
27063                      IF  ( l_temp_ext_attrib_rec.attribute9 = l_ext_attrib_rec.attribute9 )
27064                       OR ( l_temp_ext_attrib_rec.attribute9 = fnd_api.g_miss_char ) THEN
27065                            l_ieav_hist_csr.old_attribute9 := NULL;
27066                            l_ieav_hist_csr.new_attribute9 := NULL;
27067                      ELSE
27068                            l_ieav_hist_csr.old_attribute9 := fnd_api.g_miss_char;
27069                            l_ieav_hist_csr.new_attribute9 := l_temp_ext_attrib_rec.attribute9;
27070                      END IF;
27071              ELSE
27072                      l_ieav_hist_csr.old_attribute9 := fnd_api.g_miss_char;
27073                      l_ieav_hist_csr.new_attribute9 := l_temp_ext_attrib_rec.attribute9;
27074              END IF;
27075              --
27076              IF    ( l_ieav_hist_csr.old_attribute10 IS NULL
27077                 AND  l_ieav_hist_csr.new_attribute10 IS NULL ) THEN
27078                      IF  ( l_temp_ext_attrib_rec.attribute10 = l_ext_attrib_rec.attribute10 )
27079                       OR ( l_temp_ext_attrib_rec.attribute10 = fnd_api.g_miss_char ) THEN
27080                            l_ieav_hist_csr.old_attribute10 := NULL;
27081                            l_ieav_hist_csr.new_attribute10 := NULL;
27082                      ELSE
27083                            l_ieav_hist_csr.old_attribute10 := fnd_api.g_miss_char;
27084                            l_ieav_hist_csr.new_attribute10 := l_temp_ext_attrib_rec.attribute10;
27085                      END IF;
27086              ELSE
27087                      l_ieav_hist_csr.old_attribute10 := fnd_api.g_miss_char;
27088                      l_ieav_hist_csr.new_attribute10 := l_temp_ext_attrib_rec.attribute10;
27089              END IF;
27090              --
27091              IF    ( l_ieav_hist_csr.old_attribute11 IS NULL
27092                 AND  l_ieav_hist_csr.new_attribute11 IS NULL ) THEN
27093                      IF  ( l_temp_ext_attrib_rec.attribute11 = l_ext_attrib_rec.attribute11 )
27094                       OR ( l_temp_ext_attrib_rec.attribute11 = fnd_api.g_miss_char ) THEN
27095                            l_ieav_hist_csr.old_attribute11 := NULL;
27096                            l_ieav_hist_csr.new_attribute11 := NULL;
27097                      ELSE
27098                            l_ieav_hist_csr.old_attribute11 := fnd_api.g_miss_char;
27099                            l_ieav_hist_csr.new_attribute11 := l_temp_ext_attrib_rec.attribute11;
27100                      END IF;
27101              ELSE
27102                      l_ieav_hist_csr.old_attribute11 := fnd_api.g_miss_char;
27103                      l_ieav_hist_csr.new_attribute11 := l_temp_ext_attrib_rec.attribute11;
27104              END IF;
27105              --
27106              IF    ( l_ieav_hist_csr.old_attribute12 IS NULL
27107                 AND  l_ieav_hist_csr.new_attribute12 IS NULL ) THEN
27108                      IF  ( l_temp_ext_attrib_rec.attribute12 = l_ext_attrib_rec.attribute12 )
27109                       OR ( l_temp_ext_attrib_rec.attribute12 = fnd_api.g_miss_char ) THEN
27110                            l_ieav_hist_csr.old_attribute12 := NULL;
27111                            l_ieav_hist_csr.new_attribute12 := NULL;
27112                      ELSE
27113                            l_ieav_hist_csr.old_attribute12 := fnd_api.g_miss_char;
27114                            l_ieav_hist_csr.new_attribute12 := l_temp_ext_attrib_rec.attribute12;
27115                      END IF;
27116              ELSE
27117                      l_ieav_hist_csr.old_attribute12 := fnd_api.g_miss_char;
27118                      l_ieav_hist_csr.new_attribute12 := l_temp_ext_attrib_rec.attribute12;
27119              END IF;
27120              --
27121              IF    ( l_ieav_hist_csr.old_attribute13 IS NULL
27122                 AND  l_ieav_hist_csr.new_attribute13 IS NULL ) THEN
27123                      IF  ( l_temp_ext_attrib_rec.attribute13 = l_ext_attrib_rec.attribute13 )
27124                       OR ( l_temp_ext_attrib_rec.attribute13 = fnd_api.g_miss_char ) THEN
27125                            l_ieav_hist_csr.old_attribute13 := NULL;
27126                            l_ieav_hist_csr.new_attribute13 := NULL;
27127                      ELSE
27128                            l_ieav_hist_csr.old_attribute13 := fnd_api.g_miss_char;
27129                            l_ieav_hist_csr.new_attribute13 := l_temp_ext_attrib_rec.attribute13;
27130                      END IF;
27131              ELSE
27132                      l_ieav_hist_csr.old_attribute13 := fnd_api.g_miss_char;
27133                      l_ieav_hist_csr.new_attribute13 := l_temp_ext_attrib_rec.attribute13;
27134              END IF;
27135              --
27136              IF    ( l_ieav_hist_csr.old_attribute14 IS NULL
27137                 AND  l_ieav_hist_csr.new_attribute14 IS NULL ) THEN
27138                      IF  ( l_temp_ext_attrib_rec.attribute14 = l_ext_attrib_rec.attribute14 )
27139                       OR ( l_temp_ext_attrib_rec.attribute14 = fnd_api.g_miss_char ) THEN
27140                            l_ieav_hist_csr.old_attribute14 := NULL;
27141                            l_ieav_hist_csr.new_attribute14 := NULL;
27142                      ELSE
27143                            l_ieav_hist_csr.old_attribute14 := fnd_api.g_miss_char;
27144                            l_ieav_hist_csr.new_attribute14 := l_temp_ext_attrib_rec.attribute14;
27145                      END IF;
27146              ELSE
27147                      l_ieav_hist_csr.old_attribute14 := fnd_api.g_miss_char;
27148                      l_ieav_hist_csr.new_attribute14 := l_temp_ext_attrib_rec.attribute14;
27149              END IF;
27150              --
27151              IF    ( l_ieav_hist_csr.old_attribute15 IS NULL
27152                 AND  l_ieav_hist_csr.new_attribute15 IS NULL ) THEN
27153                      IF  ( l_temp_ext_attrib_rec.attribute15 = l_ext_attrib_rec.attribute15 )
27154                       OR ( l_temp_ext_attrib_rec.attribute15 = fnd_api.g_miss_char ) THEN
27155                            l_ieav_hist_csr.old_attribute15 := NULL;
27156                            l_ieav_hist_csr.new_attribute15 := NULL;
27157                      ELSE
27158                            l_ieav_hist_csr.old_attribute15 := fnd_api.g_miss_char;
27159                            l_ieav_hist_csr.new_attribute15 := l_temp_ext_attrib_rec.attribute15;
27160                      END IF;
27161              ELSE
27162                      l_ieav_hist_csr.old_attribute15 := fnd_api.g_miss_char;
27163                      l_ieav_hist_csr.new_attribute15 := l_temp_ext_attrib_rec.attribute15;
27164              END IF;
27165              --
27166 
27167          csi_iea_values_h_pkg.update_row (
27168           p_attribute_value_history_id    => l_ieav_hist_id                         ,
27169           p_attribute_value_id            => fnd_api.g_miss_num                     ,
27170           p_transaction_id                => fnd_api.g_miss_num                     ,
27171           p_old_attribute_value           => l_ieav_hist_csr.old_attribute_value    ,
27172           p_new_attribute_value           => l_temp_ext_attrib_rec.attribute_value  ,
27173           p_old_active_start_date         => l_ieav_hist_csr.old_active_start_date  ,
27174           p_new_active_start_date         => l_temp_ext_attrib_rec.active_start_date,
27175           p_old_active_end_date           => l_ieav_hist_csr.old_active_end_date    ,
27176           p_new_active_end_date           => l_temp_ext_attrib_rec.active_end_date  ,
27177           p_old_context                   => l_ieav_hist_csr.old_context            ,
27178           p_new_context                   => l_temp_ext_attrib_rec.context          ,
27179           p_old_attribute1                => l_ieav_hist_csr.old_attribute1         ,
27180           p_new_attribute1                => l_temp_ext_attrib_rec.attribute1       ,
27181           p_old_attribute2                => l_ieav_hist_csr.old_attribute2         ,
27182           p_new_attribute2                => l_temp_ext_attrib_rec.attribute2       ,
27183           p_old_attribute3                => l_ieav_hist_csr.old_attribute3         ,
27184           p_new_attribute3                => l_temp_ext_attrib_rec.attribute3       ,
27185           p_old_attribute4                => l_ieav_hist_csr.old_attribute4         ,
27186           p_new_attribute4                => l_temp_ext_attrib_rec.attribute4       ,
27187           p_old_attribute5                => l_ieav_hist_csr.old_attribute5         ,
27188           p_new_attribute5                => l_temp_ext_attrib_rec.attribute5       ,
27189           p_old_attribute6                => l_ieav_hist_csr.old_attribute6         ,
27190           p_new_attribute6                => l_temp_ext_attrib_rec.attribute6       ,
27191           p_old_attribute7                => l_ieav_hist_csr.old_attribute7         ,
27192           p_new_attribute7                => l_temp_ext_attrib_rec.attribute7       ,
27193           p_old_attribute8                => l_ieav_hist_csr.old_attribute8         ,
27194           p_new_attribute8                => l_temp_ext_attrib_rec.attribute8       ,
27195           p_old_attribute9                => l_ieav_hist_csr.old_attribute9         ,
27196           p_new_attribute9                => l_temp_ext_attrib_rec.attribute9       ,
27197           p_old_attribute10               => l_ieav_hist_csr.old_attribute10        ,
27198           p_new_attribute10               => l_temp_ext_attrib_rec.attribute10      ,
27199           p_old_attribute11               => l_ieav_hist_csr.old_attribute11        ,
27200           p_new_attribute11               => l_temp_ext_attrib_rec.attribute11      ,
27201           p_old_attribute12               => l_ieav_hist_csr.old_attribute12        ,
27202           p_new_attribute12               => l_temp_ext_attrib_rec.attribute12      ,
27203           p_old_attribute13               => l_ieav_hist_csr.old_attribute13        ,
27204           p_new_attribute13               => l_temp_ext_attrib_rec.attribute13      ,
27205           p_old_attribute14               => l_ieav_hist_csr.old_attribute14        ,
27206           p_new_attribute14               => l_temp_ext_attrib_rec.attribute14      ,
27207           p_old_attribute15               => l_ieav_hist_csr.old_attribute15        ,
27208           p_new_attribute15               => l_temp_ext_attrib_rec.attribute15      ,
27209           p_full_dump_flag                => fnd_api.g_miss_char                    ,
27210           p_created_by                    => fnd_api.g_miss_num                     ,
27211           p_creation_date                 => fnd_api.g_miss_date                    ,
27212           p_last_updated_by               => fnd_global.user_id                     ,
27213           p_last_update_date              => SYSDATE                                ,
27214           p_last_update_login             => fnd_global.user_id                     ,
27215           p_object_version_number         => fnd_api.g_miss_num);
27216        END IF;
27217      EXCEPTION
27218         WHEN NO_DATA_FOUND THEN
27219 
27220           IF (mod(l_ext_attrib_rec.object_version_number, l_dump_frequency) = 0) THEN
27221 
27222           -- If the mod value is 0 then dump all the columns both changed and unchanged
27223           -- changed columns have old and new values while the unchanged values have old and new values
27224           -- exactly same
27225 
27226            l_dump_frequency_flag := 'Y';
27227           -- Grab the input record in a temporary record
27228           l_temp_ext_attrib_rec := p_ext_attrib_rec;
27229 
27230            IF (p_ext_attrib_rec.ATTRIBUTE_VALUE = FND_API.G_MISS_CHAR) THEN
27231                 l_temp_ext_attrib_rec.ATTRIBUTE_VALUE  := l_ext_attrib_rec.ATTRIBUTE_VALUE;
27232            END IF;
27233 
27234            IF (p_ext_attrib_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
27235                 l_temp_ext_attrib_rec.ACTIVE_START_DATE  := l_ext_attrib_rec.ACTIVE_START_DATE;
27236            END IF;
27237 
27238            IF (p_ext_attrib_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
27239                 l_temp_ext_attrib_rec.ACTIVE_END_DATE  := l_ext_attrib_rec.ACTIVE_END_DATE;
27240            END IF;
27241 
27242            IF (p_ext_attrib_rec.CONTEXT = FND_API.G_MISS_CHAR) THEN
27243                 l_temp_ext_attrib_rec.CONTEXT  := l_ext_attrib_rec.CONTEXT;
27244            END IF;
27245 
27246            IF (p_ext_attrib_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
27247                 l_temp_ext_attrib_rec.ATTRIBUTE1  := l_ext_attrib_rec.ATTRIBUTE1;
27248            END IF;
27249            IF (p_ext_attrib_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
27250                 l_temp_ext_attrib_rec.ATTRIBUTE2  := l_ext_attrib_rec.ATTRIBUTE2;
27251            END IF;
27252            IF (p_ext_attrib_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
27253                 l_temp_ext_attrib_rec.ATTRIBUTE3  := l_ext_attrib_rec.ATTRIBUTE3;
27254            END IF;
27255            IF (p_ext_attrib_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
27256                 l_temp_ext_attrib_rec.ATTRIBUTE4  := l_ext_attrib_rec.ATTRIBUTE4;
27257            END IF;
27258            IF (p_ext_attrib_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
27259                 l_temp_ext_attrib_rec.ATTRIBUTE5  := l_ext_attrib_rec.ATTRIBUTE5;
27260            END IF;
27261            IF (p_ext_attrib_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
27262                 l_temp_ext_attrib_rec.ATTRIBUTE6  := l_ext_attrib_rec.ATTRIBUTE6;
27263            END IF;
27264            IF (p_ext_attrib_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
27265                 l_temp_ext_attrib_rec.ATTRIBUTE7  := l_ext_attrib_rec.ATTRIBUTE7;
27266            END IF;
27267            IF (p_ext_attrib_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
27268                 l_temp_ext_attrib_rec.ATTRIBUTE8  := l_ext_attrib_rec.ATTRIBUTE8;
27269            END IF;
27270            IF (p_ext_attrib_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
27271                 l_temp_ext_attrib_rec.ATTRIBUTE9  := l_ext_attrib_rec.ATTRIBUTE9;
27272            END IF;
27273            IF (p_ext_attrib_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
27274                 l_temp_ext_attrib_rec.ATTRIBUTE10  := l_ext_attrib_rec.ATTRIBUTE10;
27275            END IF;
27276            IF (p_ext_attrib_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
27277                 l_temp_ext_attrib_rec.ATTRIBUTE11  := l_ext_attrib_rec.ATTRIBUTE11;
27278            END IF;
27279            IF (p_ext_attrib_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
27280                 l_temp_ext_attrib_rec.ATTRIBUTE12  := l_ext_attrib_rec.ATTRIBUTE12;
27281            END IF;
27282            IF (p_ext_attrib_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
27283                 l_temp_ext_attrib_rec.ATTRIBUTE13  := l_ext_attrib_rec.ATTRIBUTE13;
27284            END IF;
27285            IF (p_ext_attrib_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
27286                 l_temp_ext_attrib_rec.ATTRIBUTE14  := l_ext_attrib_rec.ATTRIBUTE14;
27287            END IF;
27288            IF (p_ext_attrib_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
27289                 l_temp_ext_attrib_rec.ATTRIBUTE15  := l_ext_attrib_rec.ATTRIBUTE15;
27290            END IF;
27291 
27292            -- Create a history
27293            CSI_IEA_VALUES_H_PKG.Insert_Row(
27294              l_attribute_value_h_id
27295             ,l_attribute_value_id
27296             ,p_txn_rec.transaction_id
27297             ,l_ext_attrib_rec.attribute_value
27298             ,l_temp_ext_attrib_rec.attribute_value
27299             ,l_ext_attrib_rec.active_start_date
27300             ,l_temp_ext_attrib_rec.active_start_date
27301             ,l_ext_attrib_rec.active_end_date
27302             ,l_temp_ext_attrib_rec.active_end_date
27303             ,l_ext_attrib_rec.context
27304             ,l_temp_ext_attrib_rec.context
27305             ,l_ext_attrib_rec.ATTRIBUTE1
27306             ,l_temp_ext_attrib_rec.ATTRIBUTE1
27307             ,l_ext_attrib_rec.ATTRIBUTE2
27308             ,l_temp_ext_attrib_rec.ATTRIBUTE2
27309             ,l_ext_attrib_rec.ATTRIBUTE3
27310             ,l_temp_ext_attrib_rec.ATTRIBUTE3
27311             ,l_ext_attrib_rec.ATTRIBUTE4
27312             ,l_temp_ext_attrib_rec.ATTRIBUTE4
27313             ,l_ext_attrib_rec.ATTRIBUTE5
27314             ,l_temp_ext_attrib_rec.ATTRIBUTE5
27315             ,l_ext_attrib_rec.ATTRIBUTE6
27316             ,l_temp_ext_attrib_rec.ATTRIBUTE6
27317             ,l_ext_attrib_rec.ATTRIBUTE7
27318             ,l_temp_ext_attrib_rec.ATTRIBUTE7
27319             ,l_ext_attrib_rec.ATTRIBUTE8
27320             ,l_temp_ext_attrib_rec.ATTRIBUTE8
27321             ,l_ext_attrib_rec.ATTRIBUTE9
27322             ,l_temp_ext_attrib_rec.ATTRIBUTE9
27323             ,l_ext_attrib_rec.ATTRIBUTE10
27324             ,l_temp_ext_attrib_rec.ATTRIBUTE10
27325             ,l_ext_attrib_rec.ATTRIBUTE11
27326             ,l_temp_ext_attrib_rec.ATTRIBUTE11
27327             ,l_ext_attrib_rec.ATTRIBUTE12
27328             ,l_temp_ext_attrib_rec.ATTRIBUTE12
27329             ,l_ext_attrib_rec.ATTRIBUTE13
27330             ,l_temp_ext_attrib_rec.ATTRIBUTE13
27331             ,l_ext_attrib_rec.ATTRIBUTE14
27332             ,l_temp_ext_attrib_rec.ATTRIBUTE14
27333             ,l_ext_attrib_rec.ATTRIBUTE15
27334             ,l_temp_ext_attrib_rec.ATTRIBUTE15
27335             ,l_dump_frequency_flag
27336             ,fnd_global.user_id
27337             ,sysdate
27338             ,fnd_global.user_id
27339             ,sysdate
27340             ,fnd_global.user_id
27341             ,1);
27342 
27343      ELSE
27344             l_dump_frequency_flag := 'N';
27345          -- Grab the input record in a temporary record
27346             l_temp_ext_attrib_rec := l_ext_attrib_rec;
27347 
27348          -- If the mod value is not equal to zero then dump only the changed columns
27349          -- while the unchanged values have old and new values as null
27350            IF (p_ext_attrib_rec.attribute_value = fnd_api.g_miss_char) OR
27351                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
27352                 l_ext_att_hist_rec.old_attribute_value := NULL;
27353                 l_ext_att_hist_rec.new_attribute_value := NULL;
27354            ELSIF
27355               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
27356                 l_ext_att_hist_rec.old_attribute_value := l_temp_ext_attrib_rec.attribute_value ;
27357                 l_ext_att_hist_rec.new_attribute_value := p_ext_attrib_rec.attribute_value ;
27358            END IF;
27359            --
27360            IF (p_ext_attrib_rec.active_start_date = fnd_api.g_miss_date) OR
27361                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
27362                 l_ext_att_hist_rec.old_active_start_date := NULL;
27363                 l_ext_att_hist_rec.new_active_start_date := NULL;
27364            ELSIF
27365               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
27366                 l_ext_att_hist_rec.old_active_start_date := l_temp_ext_attrib_rec.active_start_date ;
27367                 l_ext_att_hist_rec.new_active_start_date := p_ext_attrib_rec.active_start_date ;
27368            END IF;
27369            --
27370            IF (p_ext_attrib_rec.active_end_date = fnd_api.g_miss_date) OR
27371                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
27372                 l_ext_att_hist_rec.old_active_end_date := NULL;
27373                 l_ext_att_hist_rec.new_active_end_date := NULL;
27374            ELSIF
27375               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
27376                 l_ext_att_hist_rec.old_active_end_date := l_temp_ext_attrib_rec.active_end_date ;
27377                 l_ext_att_hist_rec.new_active_end_date := p_ext_attrib_rec.active_end_date ;
27378            END IF;
27379            --
27380            IF (p_ext_attrib_rec.context = fnd_api.g_miss_char) OR
27381                NVL(p_ext_attrib_rec.context, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.context, fnd_api.g_miss_char) THEN
27382                 l_ext_att_hist_rec.old_context := NULL;
27383                 l_ext_att_hist_rec.new_context := NULL;
27384            ELSIF
27385               NVL(l_temp_ext_attrib_rec.context,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.context,fnd_api.g_miss_char) THEN
27386                 l_ext_att_hist_rec.old_context := l_temp_ext_attrib_rec.context ;
27387                 l_ext_att_hist_rec.new_context := p_ext_attrib_rec.context ;
27388            END IF;
27389            --
27390            IF (p_ext_attrib_rec.attribute1 = fnd_api.g_miss_char) OR
27391                NVL(p_ext_attrib_rec.attribute1, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute1, fnd_api.g_miss_char) THEN
27392                 l_ext_att_hist_rec.old_attribute1 := NULL;
27393                 l_ext_att_hist_rec.new_attribute1 := NULL;
27394            ELSIF
27395               NVL(l_temp_ext_attrib_rec.attribute1,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute1,fnd_api.g_miss_char) THEN
27396                 l_ext_att_hist_rec.old_attribute1 := l_temp_ext_attrib_rec.attribute1 ;
27397                 l_ext_att_hist_rec.new_attribute1 := p_ext_attrib_rec.attribute1 ;
27398            END IF;
27399            --
27400            IF (p_ext_attrib_rec.attribute2 = fnd_api.g_miss_char) OR
27401                NVL(p_ext_attrib_rec.attribute2, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute2, fnd_api.g_miss_char) THEN
27402                 l_ext_att_hist_rec.old_attribute2 := NULL;
27403                 l_ext_att_hist_rec.new_attribute2 := NULL;
27404            ELSIF
27405               NVL(l_temp_ext_attrib_rec.attribute2,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute2,fnd_api.g_miss_char) THEN
27406                 l_ext_att_hist_rec.old_attribute2 := l_temp_ext_attrib_rec.attribute2 ;
27407                 l_ext_att_hist_rec.new_attribute2 := p_ext_attrib_rec.attribute2 ;
27408            END IF;
27409            --
27410            IF (p_ext_attrib_rec.attribute3 = fnd_api.g_miss_char) OR
27411                NVL(p_ext_attrib_rec.attribute3, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute3, fnd_api.g_miss_char) THEN
27412                 l_ext_att_hist_rec.old_attribute3 := NULL;
27413                 l_ext_att_hist_rec.new_attribute3 := NULL;
27414            ELSIF
27415               NVL(l_temp_ext_attrib_rec.attribute3,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute3,fnd_api.g_miss_char) THEN
27416                 l_ext_att_hist_rec.old_attribute3 := l_temp_ext_attrib_rec.attribute3 ;
27417                 l_ext_att_hist_rec.new_attribute3 := p_ext_attrib_rec.attribute3 ;
27418            END IF;
27419            --
27420            IF (p_ext_attrib_rec.attribute4 = fnd_api.g_miss_char) OR
27421                NVL(p_ext_attrib_rec.attribute4, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute4, fnd_api.g_miss_char) THEN
27422                 l_ext_att_hist_rec.old_attribute4 := NULL;
27423                 l_ext_att_hist_rec.new_attribute4 := NULL;
27424            ELSIF
27425               NVL(l_temp_ext_attrib_rec.attribute4,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute4,fnd_api.g_miss_char) THEN
27426                 l_ext_att_hist_rec.old_attribute4 := l_temp_ext_attrib_rec.attribute4 ;
27427                 l_ext_att_hist_rec.new_attribute4 := p_ext_attrib_rec.attribute4 ;
27428            END IF;
27429            --
27430            IF (p_ext_attrib_rec.attribute5 = fnd_api.g_miss_char) OR
27431                NVL(p_ext_attrib_rec.attribute5, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute5, fnd_api.g_miss_char) THEN
27432                 l_ext_att_hist_rec.old_attribute5 := NULL;
27433                 l_ext_att_hist_rec.new_attribute5 := NULL;
27434            ELSIF
27435               NVL(l_temp_ext_attrib_rec.attribute5,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute5,fnd_api.g_miss_char) THEN
27436                 l_ext_att_hist_rec.old_attribute5 := l_temp_ext_attrib_rec.attribute5 ;
27437                 l_ext_att_hist_rec.new_attribute5 := p_ext_attrib_rec.attribute5 ;
27438            END IF;
27439            --
27440            IF (p_ext_attrib_rec.attribute6 = fnd_api.g_miss_char) OR
27441                NVL(p_ext_attrib_rec.attribute6, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute6, fnd_api.g_miss_char) THEN
27442                 l_ext_att_hist_rec.old_attribute6 := NULL;
27443                 l_ext_att_hist_rec.new_attribute6 := NULL;
27444            ELSIF
27445               NVL(l_temp_ext_attrib_rec.attribute6,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute6,fnd_api.g_miss_char) THEN
27446                 l_ext_att_hist_rec.old_attribute6 := l_temp_ext_attrib_rec.attribute6 ;
27447                 l_ext_att_hist_rec.new_attribute6 := p_ext_attrib_rec.attribute6 ;
27448            END IF;
27449            --
27450            IF (p_ext_attrib_rec.attribute7 = fnd_api.g_miss_char) OR
27451                NVL(p_ext_attrib_rec.attribute7, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute7, fnd_api.g_miss_char) THEN
27452                 l_ext_att_hist_rec.old_attribute7 := NULL;
27453                 l_ext_att_hist_rec.new_attribute7 := NULL;
27454            ELSIF
27455               NVL(l_temp_ext_attrib_rec.attribute7,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute7,fnd_api.g_miss_char) THEN
27456                 l_ext_att_hist_rec.old_attribute7 := l_temp_ext_attrib_rec.attribute7 ;
27457                 l_ext_att_hist_rec.new_attribute7 := p_ext_attrib_rec.attribute7 ;
27458            END IF;
27459            --
27460            IF (p_ext_attrib_rec.attribute8 = fnd_api.g_miss_char) OR
27461                NVL(p_ext_attrib_rec.attribute8, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute8, fnd_api.g_miss_char) THEN
27462                 l_ext_att_hist_rec.old_attribute8 := NULL;
27463                 l_ext_att_hist_rec.new_attribute8 := NULL;
27464            ELSIF
27465               NVL(l_temp_ext_attrib_rec.attribute8,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute8,fnd_api.g_miss_char) THEN
27466                 l_ext_att_hist_rec.old_attribute8 := l_temp_ext_attrib_rec.attribute8 ;
27467                 l_ext_att_hist_rec.new_attribute8 := p_ext_attrib_rec.attribute8 ;
27468            END IF;
27469            --
27470            IF (p_ext_attrib_rec.attribute9 = fnd_api.g_miss_char) OR
27471                NVL(p_ext_attrib_rec.attribute9, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute9, fnd_api.g_miss_char) THEN
27472                 l_ext_att_hist_rec.old_attribute9 := NULL;
27473                 l_ext_att_hist_rec.new_attribute9 := NULL;
27474            ELSIF
27475               NVL(l_temp_ext_attrib_rec.attribute9,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute9,fnd_api.g_miss_char) THEN
27476                 l_ext_att_hist_rec.old_attribute9 := l_temp_ext_attrib_rec.attribute9 ;
27477                 l_ext_att_hist_rec.new_attribute9 := p_ext_attrib_rec.attribute9 ;
27478            END IF;
27479            --
27480            IF (p_ext_attrib_rec.attribute10 = fnd_api.g_miss_char) OR
27481                NVL(p_ext_attrib_rec.attribute10, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute10, fnd_api.g_miss_char) THEN
27482                 l_ext_att_hist_rec.old_attribute10 := NULL;
27483                 l_ext_att_hist_rec.new_attribute10 := NULL;
27484            ELSIF
27485               NVL(l_temp_ext_attrib_rec.attribute10,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute10,fnd_api.g_miss_char) THEN
27486                 l_ext_att_hist_rec.old_attribute10 := l_temp_ext_attrib_rec.attribute10 ;
27487                 l_ext_att_hist_rec.new_attribute10 := p_ext_attrib_rec.attribute10 ;
27488            END IF;
27489            --
27490            IF (p_ext_attrib_rec.attribute11 = fnd_api.g_miss_char) OR
27491                NVL(p_ext_attrib_rec.attribute11, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute11, fnd_api.g_miss_char) THEN
27492                 l_ext_att_hist_rec.old_attribute11 := NULL;
27493                 l_ext_att_hist_rec.new_attribute11 := NULL;
27494            ELSIF
27495               NVL(l_temp_ext_attrib_rec.attribute11,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute11,fnd_api.g_miss_char) THEN
27496                 l_ext_att_hist_rec.old_attribute11 := l_temp_ext_attrib_rec.attribute11 ;
27497                 l_ext_att_hist_rec.new_attribute11 := p_ext_attrib_rec.attribute11 ;
27498            END IF;
27499            --
27500            IF (p_ext_attrib_rec.attribute12 = fnd_api.g_miss_char) OR
27501                NVL(p_ext_attrib_rec.attribute12, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute12, fnd_api.g_miss_char) THEN
27502                 l_ext_att_hist_rec.old_attribute12 := NULL;
27503                 l_ext_att_hist_rec.new_attribute12 := NULL;
27504            ELSIF
27505               NVL(l_temp_ext_attrib_rec.attribute12,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute12,fnd_api.g_miss_char) THEN
27506                 l_ext_att_hist_rec.old_attribute12 := l_temp_ext_attrib_rec.attribute12 ;
27507                 l_ext_att_hist_rec.new_attribute12 := p_ext_attrib_rec.attribute12 ;
27508            END IF;
27509            --
27510            IF (p_ext_attrib_rec.attribute13 = fnd_api.g_miss_char) OR
27511                NVL(p_ext_attrib_rec.attribute13, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute13, fnd_api.g_miss_char) THEN
27512                 l_ext_att_hist_rec.old_attribute13 := NULL;
27513                 l_ext_att_hist_rec.new_attribute13 := NULL;
27514            ELSIF
27515               NVL(l_temp_ext_attrib_rec.attribute13,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute13,fnd_api.g_miss_char) THEN
27516                 l_ext_att_hist_rec.old_attribute13 := l_temp_ext_attrib_rec.attribute13 ;
27517                 l_ext_att_hist_rec.new_attribute13 := p_ext_attrib_rec.attribute13 ;
27518            END IF;
27519            --
27520            IF (p_ext_attrib_rec.attribute14 = fnd_api.g_miss_char) OR
27521                NVL(p_ext_attrib_rec.attribute14, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute14, fnd_api.g_miss_char) THEN
27522                 l_ext_att_hist_rec.old_attribute14 := NULL;
27523                 l_ext_att_hist_rec.new_attribute14 := NULL;
27524            ELSIF
27525               NVL(l_temp_ext_attrib_rec.attribute14,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute14,fnd_api.g_miss_char) THEN
27526                 l_ext_att_hist_rec.old_attribute14 := l_temp_ext_attrib_rec.attribute14 ;
27527                 l_ext_att_hist_rec.new_attribute14 := p_ext_attrib_rec.attribute14 ;
27528            END IF;
27529            --
27530            IF (p_ext_attrib_rec.attribute15 = fnd_api.g_miss_char) OR
27531                NVL(p_ext_attrib_rec.attribute15, fnd_api.g_miss_char) = NVL(l_temp_ext_attrib_rec.attribute15, fnd_api.g_miss_char) THEN
27532                 l_ext_att_hist_rec.old_attribute15 := NULL;
27533                 l_ext_att_hist_rec.new_attribute15 := NULL;
27534            ELSIF
27535               NVL(l_temp_ext_attrib_rec.attribute15,fnd_api.g_miss_char) <> NVL(p_ext_attrib_rec.attribute15,fnd_api.g_miss_char) THEN
27536                 l_ext_att_hist_rec.old_attribute15 := l_temp_ext_attrib_rec.attribute15 ;
27537                 l_ext_att_hist_rec.new_attribute15 := p_ext_attrib_rec.attribute15 ;
27538            END IF;
27539 
27540           -- Create a history
27541           CSI_IEA_VALUES_H_PKG.Insert_Row(
27542              l_attribute_value_h_id
27543             ,l_attribute_value_id
27544             ,p_txn_rec.transaction_id
27545             ,l_ext_att_hist_rec.old_attribute_value
27546             ,l_ext_att_hist_rec.new_attribute_value
27547             ,l_ext_att_hist_rec.old_active_start_date
27548             ,l_ext_att_hist_rec.new_active_start_date
27549             ,l_ext_att_hist_rec.old_active_end_date
27550             ,l_ext_att_hist_rec.new_active_end_date
27551             ,l_ext_att_hist_rec.old_context
27552             ,l_ext_att_hist_rec.new_context
27553             ,l_ext_att_hist_rec.old_attribute1
27554             ,l_ext_att_hist_rec.new_attribute1
27555             ,l_ext_att_hist_rec.old_attribute2
27556             ,l_ext_att_hist_rec.new_attribute2
27557             ,l_ext_att_hist_rec.old_attribute3
27558             ,l_ext_att_hist_rec.new_attribute3
27559             ,l_ext_att_hist_rec.old_attribute4
27560             ,l_ext_att_hist_rec.new_attribute4
27561             ,l_ext_att_hist_rec.old_attribute5
27562             ,l_ext_att_hist_rec.new_attribute5
27563             ,l_ext_att_hist_rec.old_attribute6
27564             ,l_ext_att_hist_rec.new_attribute6
27565             ,l_ext_att_hist_rec.old_attribute7
27566             ,l_ext_att_hist_rec.new_attribute7
27567             ,l_ext_att_hist_rec.old_attribute8
27568             ,l_ext_att_hist_rec.new_attribute8
27569             ,l_ext_att_hist_rec.old_attribute9
27570             ,l_ext_att_hist_rec.new_attribute9
27571             ,l_ext_att_hist_rec.old_attribute10
27572             ,l_ext_att_hist_rec.new_attribute10
27573             ,l_ext_att_hist_rec.old_attribute11
27574             ,l_ext_att_hist_rec.new_attribute11
27575             ,l_ext_att_hist_rec.old_attribute12
27576             ,l_ext_att_hist_rec.new_attribute12
27577             ,l_ext_att_hist_rec.old_attribute13
27578             ,l_ext_att_hist_rec.new_attribute13
27579             ,l_ext_att_hist_rec.old_attribute14
27580             ,l_ext_att_hist_rec.new_attribute14
27581             ,l_ext_att_hist_rec.old_attribute15
27582             ,l_ext_att_hist_rec.new_attribute15
27583             ,l_dump_frequency_flag
27584             ,fnd_global.user_id
27585             ,sysdate
27586             ,fnd_global.user_id
27587             ,sysdate
27588             ,fnd_global.user_id
27589             ,1);
27590 
27591      END IF;
27592      END;
27593      -- End of modifications for Bug#2547034 on 09/20/02 - rtalluri
27594      -- End of API body
27595 
27596      -- Standard check of p_commit.
27597      IF FND_API.To_Boolean( p_commit ) THEN
27598         COMMIT WORK;
27599      END IF;
27600 
27601      -- Standard call to get message count and if count is  get message info.
27602      FND_MSG_PUB.Count_And_Get
27603            (p_encoded => FND_API.G_FALSE,
27604                  p_count       =>       x_msg_count ,
27605             p_data        =>       x_msg_data
27606             );
27607 
27608 EXCEPTION
27609 
27610     WHEN FND_API.G_EXC_ERROR THEN
27611             ROLLBACK TO update_extended_attrib_values;
27612             x_return_status := FND_API.G_RET_STS_ERROR ;
27613             FND_MSG_PUB.Count_And_Get
27614                 ( p_encoded => FND_API.G_FALSE,
27615                  p_count    =>      x_msg_count,
27616                   p_data     =>      x_msg_data
27617                 );
27618 
27619       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
27620             ROLLBACK TO update_extended_attrib_values;
27621             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
27622             FND_MSG_PUB.Count_And_Get
27623                   ( p_encoded => FND_API.G_FALSE,
27624                  p_count  =>      x_msg_count,
27625                     p_data   =>      x_msg_data
27626                   );
27627 
27628       WHEN OTHERS THEN
27629             ROLLBACK TO  update_extended_attrib_values;
27630             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
27631 
27632             IF FND_MSG_PUB.Check_Msg_Level
27633                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
27634             THEN
27635                     FND_MSG_PUB.Add_Exc_Msg
27636                         ( g_pkg_name,
27637                           l_api_name
27638                         );
27639             END IF;
27640 
27641             FND_MSG_PUB.Count_And_Get
27642                     ( p_encoded => FND_API.G_FALSE,
27643                   p_count =>      x_msg_count,
27644                        p_data  =>      x_msg_data
27645                      );
27646 
27647 END update_extended_attrib_values;
27648 
27649 
27650 
27651 
27652 /*----------------------------------------------------------*/
27653 /* procedure name: expire_extended_attrib_values            */
27654 /* description :  Expires the existing extended             */
27655 /*                attributes for an item instance           */
27656 /*                                                          */
27657 /*----------------------------------------------------------*/
27658 
27659 
27660 PROCEDURE expire_extended_attrib_values
27661  (    p_api_version        IN       NUMBER
27662      ,p_commit             IN       VARCHAR2
27663      ,p_init_msg_list      IN       VARCHAR2
27664      ,p_validation_level   IN       NUMBER
27665      ,p_ext_attrib_rec     IN       csi_datastructures_pub.extend_attrib_values_rec
27666      ,p_txn_rec            IN   OUT NOCOPY csi_datastructures_pub.transaction_rec
27667      ,x_return_status           OUT NOCOPY VARCHAR2
27668      ,x_msg_count               OUT NOCOPY NUMBER
27669      ,x_msg_data                OUT NOCOPY VARCHAR2
27670  )
27671 
27672 IS
27673      l_api_name             CONSTANT VARCHAR2(30)   := 'expire_extended_attrib_values';
27674      l_api_version          CONSTANT NUMBER         := 1.0;
27675      l_debug_level                   NUMBER;
27676      l_msg_index                     NUMBER;
27677      l_msg_count                     NUMBER;
27678      l_ext_attrib_rec                csi_datastructures_pub.extend_attrib_values_rec;
27679 BEGIN
27680 
27681     -- Standard Start of API savepoint
27682     SAVEPOINT      expire_extended_attrib_values;
27683 
27684     -- Standard call to check for call compatibility.
27685     IF NOT FND_API.Compatible_API_Call (l_api_version,
27686                                         p_api_version,
27687                                         l_api_name ,
27688                                         g_pkg_name)
27689     THEN
27690           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
27691     END IF;
27692 
27693     -- Initialize message list if p_init_msg_list is set to TRUE.
27694     IF FND_API.to_Boolean( p_init_msg_list ) THEN
27695           FND_MSG_PUB.initialize;
27696     END IF;
27697 
27698     --  Initialize API return status to success
27699     x_return_status := FND_API.G_RET_STS_SUCCESS;
27700 
27701 
27702     -- Check the profile option debug_level for debug message reporting
27703 
27704     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
27705 
27706     -- If debug_level = 1 then dump the procedure name
27707     IF (l_debug_level > 0) THEN
27708         csi_gen_utility_pvt.put_line( 'expire_extended_attrib_values');
27709     END IF;
27710 
27711 
27712     -- If the debug level = 2 then dump all the parameters values.
27713     IF (l_debug_level > 1) THEN
27714           csi_gen_utility_pvt.put_line(
27715                                        p_api_version     ||'-'
27716                                     || p_commit          ||'-'
27717                                     || p_init_msg_list   ||'-'
27718                                     || p_validation_level);
27719      -- Dump extended attribute rec
27720        csi_gen_utility_pvt.dump_ext_attrib_values_rec(p_ext_attrib_rec);
27721      -- Dump txn_rec
27722        csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
27723     END IF;
27724 
27725 
27726     -- Start API body
27727     -- Validate extended_attribute_value_id
27728       IF NOT(csi_extend_attrib_vld_pvt.Val_and_get_ext_att_id
27729              (p_ext_attrib_rec.attribute_value_id,
27730               l_ext_attrib_rec )) THEN
27731           RAISE FND_API.G_EXC_ERROR;
27732       END IF;
27733 
27734 
27735       l_ext_attrib_rec.attribute_value_id    :=    p_ext_attrib_rec.attribute_value_id;
27736       l_ext_attrib_rec.attribute_id          :=    FND_API.G_MISS_NUM;
27737       l_ext_attrib_rec.instance_id           :=    FND_API.G_MISS_NUM;
27738       l_ext_attrib_rec.attribute_value       :=    FND_API.G_MISS_CHAR;
27739       l_ext_attrib_rec.active_start_date     :=    FND_API.G_MISS_DATE ;
27740       l_ext_attrib_rec.active_end_date       :=    SYSDATE;
27741       l_ext_attrib_rec.context               :=    FND_API.G_MISS_CHAR;
27742       l_ext_attrib_rec.attribute1            :=    FND_API.G_MISS_CHAR;
27743       l_ext_attrib_rec.attribute2            :=    FND_API.G_MISS_CHAR;
27744       l_ext_attrib_rec.attribute3            :=    FND_API.G_MISS_CHAR;
27745       l_ext_attrib_rec.attribute4            :=    FND_API.G_MISS_CHAR;
27746       l_ext_attrib_rec.attribute5            :=    FND_API.G_MISS_CHAR;
27747       l_ext_attrib_rec.attribute6            :=    FND_API.G_MISS_CHAR;
27748       l_ext_attrib_rec.attribute7            :=    FND_API.G_MISS_CHAR;
27749       l_ext_attrib_rec.attribute8            :=    FND_API.G_MISS_CHAR;
27750       l_ext_attrib_rec.attribute9            :=    FND_API.G_MISS_CHAR;
27751       l_ext_attrib_rec.attribute10           :=    FND_API.G_MISS_CHAR;
27752       l_ext_attrib_rec.attribute11           :=    FND_API.G_MISS_CHAR;
27753       l_ext_attrib_rec.attribute12           :=    FND_API.G_MISS_CHAR;
27754       l_ext_attrib_rec.attribute13           :=    FND_API.G_MISS_CHAR;
27755       l_ext_attrib_rec.attribute14           :=    FND_API.G_MISS_CHAR;
27756       l_ext_attrib_rec.attribute15           :=    FND_API.G_MISS_CHAR;
27757       l_ext_attrib_rec.object_version_number :=    p_ext_attrib_rec.object_version_number;
27758 
27759 
27760       g_expire_ext_att_flag  := 'Y';
27761       csi_item_instance_pvt.update_extended_attrib_values
27762            (p_api_version       => p_api_version
27763            ,p_commit            => fnd_api.g_false
27764            ,p_init_msg_list     => p_init_msg_list
27765            ,p_validation_level  => p_validation_level
27766            ,p_ext_attrib_rec    => l_ext_attrib_rec
27767            ,p_txn_rec           => p_txn_rec
27768            ,x_return_status     => x_return_status
27769            ,x_msg_count         =>  x_msg_count
27770            ,x_msg_data          =>  x_msg_data
27771            );
27772 
27773       g_expire_ext_att_flag  := 'N';
27774            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
27775                    l_msg_index := 1;
27776                    l_msg_count := x_msg_count;
27777                    WHILE l_msg_count > 0 LOOP
27778                       x_msg_data := FND_MSG_PUB.GET
27779                       (l_msg_index,
27780                        FND_API.G_FALSE      );
27781 
27782                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
27783                        l_msg_index := l_msg_index + 1;
27784                        l_msg_count := l_msg_count - 1;
27785                    END LOOP;
27786                    RAISE FND_API.G_EXC_ERROR;
27787            END IF;
27788 
27789 
27790 
27791        -- End of API body
27792 
27793        -- Standard check of p_commit.
27794        IF FND_API.To_Boolean( p_commit ) THEN
27795           COMMIT WORK;
27796        END IF;
27797 
27798        -- Standard call to get message count and if count is  get message info.
27799        FND_MSG_PUB.Count_And_Get
27800            (p_encoded => FND_API.G_FALSE,
27801                  p_count       =>       x_msg_count ,
27802             p_data        =>       x_msg_data
27803             );
27804 
27805 
27806 EXCEPTION
27807 
27808     WHEN FND_API.G_EXC_ERROR THEN
27809             ROLLBACK TO expire_extended_attrib_values;
27810             x_return_status := FND_API.G_RET_STS_ERROR ;
27811             FND_MSG_PUB.Count_And_Get
27812                 (  p_encoded => FND_API.G_FALSE,
27813                  p_count     =>      x_msg_count,
27814                    p_data      =>      x_msg_data
27815                 );
27816 
27817       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
27818             ROLLBACK TO expire_extended_attrib_values;
27819             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
27820             FND_MSG_PUB.Count_And_Get
27821                 (  p_encoded => FND_API.G_FALSE,
27822                  p_count     =>      x_msg_count,
27823                    p_data      =>      x_msg_data
27824                  );
27825 
27826       WHEN OTHERS THEN
27827             ROLLBACK TO  expire_extended_attrib_values;
27828             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
27829 
27830               IF FND_MSG_PUB.Check_Msg_Level
27831                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
27832             THEN
27833                     FND_MSG_PUB.Add_Exc_Msg
27834                         (g_pkg_name,
27835                          l_api_name
27836                         );
27837             END IF;
27838 
27839             FND_MSG_PUB.Count_And_Get
27840                     (  p_encoded => FND_API.G_FALSE,
27841                  p_count       =>      x_msg_count,
27842                        p_data        =>      x_msg_data
27843                      );
27844 
27845 END expire_extended_attrib_values;
27846 
27847 
27848 /*------------------------------------------------------*/
27849 /* procedure name: copy_single_item_instance               */
27850 /* description :  Copies an instace from an instance    */
27851 /*                                                      */
27852 /*------------------------------------------------------*/
27853 
27854 
27855 
27856 PROCEDURE copy_single_item_instance
27857  (
27858    p_api_version            IN         NUMBER
27859   ,p_commit                 IN         VARCHAR2
27860   ,p_init_msg_list          IN         VARCHAR2
27861   ,p_validation_level       IN         NUMBER
27862   ,p_source_instance_rec    IN         csi_datastructures_pub.instance_rec
27863   ,p_copy_ext_attribs       IN         VARCHAR2
27864   ,p_copy_org_assignments   IN         VARCHAR2
27865   ,p_copy_parties           IN         VARCHAR2
27866   ,p_copy_contacts          IN         VARCHAR2
27867   ,p_copy_accounts          IN         VARCHAR2
27868   ,p_copy_asset_assignments IN         VARCHAR2
27869   ,p_copy_pricing_attribs   IN         VARCHAR2
27870   ,p_call_from_split        IN         VARCHAR2
27871   ,p_call_from_bom_expl     IN         VARCHAR2
27872   ,p_txn_rec                IN  OUT    NOCOPY csi_datastructures_pub.transaction_rec
27873   ,x_new_instance_tbl           OUT    NOCOPY csi_datastructures_pub.instance_tbl
27874   ,x_return_status              OUT    NOCOPY VARCHAR2
27875   ,x_msg_count                  OUT    NOCOPY NUMBER
27876   ,x_msg_data                   OUT    NOCOPY VARCHAR2
27877  )
27878 
27879  IS
27880     l_api_name                         CONSTANT VARCHAR2(30) := 'copy_single_item_instance';
27881     l_api_version                     CONSTANT NUMBER      := 1.0;
27882     l_debug_level                                NUMBER;
27883     l_curr_instance_rec                     csi_datastructures_pub.instance_rec;
27884     l_new_instance_rec                      csi_datastructures_pub.instance_rec;
27885     l_asset_tbl                             csi_datastructures_pub.instance_asset_tbl;
27886     l_asset_header_tbl                      csi_datastructures_pub.instance_asset_header_tbl;--rk
27887     l_ext_attrib_tbl                        csi_datastructures_pub.extend_attrib_values_tbl;
27888     l_ext_attrib_def_tbl                    csi_datastructures_pub.extend_attrib_tbl;
27889     l_ext_attribs_query_rec                 csi_datastructures_pub.extend_attrib_query_rec;
27890     l_ou_query_rec                          csi_datastructures_pub.organization_unit_query_rec;
27891     l_org_unit_tbl                          csi_datastructures_pub.organization_units_tbl;
27892     l_org_unit_header_tbl                   csi_datastructures_pub.org_units_header_tbl;--rk
27893     l_pricing_attribs_query_rec             csi_datastructures_pub.pricing_attribs_query_rec;
27894     l_pricing_attribs_tbl                   csi_datastructures_pub.pricing_attribs_tbl;
27895     l_account_header_tbl                    csi_datastructures_pub.party_account_header_tbl;
27896     l_instance_asset_query_rec              csi_datastructures_pub.instance_asset_query_rec;
27897     l_instance_asset_rec                    csi_datastructures_pub.instance_asset_rec;
27898     l_party_query_rec                       csi_datastructures_pub.party_query_rec;
27899     l_party_tbl                             csi_datastructures_pub.party_tbl;
27900     l_original_party_tbl                    csi_datastructures_pub.party_tbl;
27901     l_party_input_tbl                       csi_datastructures_pub.party_tbl;
27902     l_new_party_tbl                         csi_datastructures_pub.party_tbl;
27903     l_contact_tbl                           csi_datastructures_pub.party_tbl;
27904     l_contact_input_tbl                       csi_datastructures_pub.party_tbl;
27905     l_contact_found_flag                    BOOLEAN := FALSE;
27906     l_new_contact_tbl                       csi_datastructures_pub.party_tbl;
27907     l_party_header_tbl                      csi_datastructures_pub.party_header_tbl;
27908     l_party_account_query_rec               csi_datastructures_pub.party_account_query_rec;
27909     l_contact_account_query_rec             csi_datastructures_pub.party_account_query_rec;
27910     l_party_account_tbl                     csi_datastructures_pub.party_account_tbl;
27911     l_contact_account_tbl                   csi_datastructures_pub.party_account_tbl;
27912     l_temp_party_account_tbl                csi_datastructures_pub.party_account_tbl;
27913     l_msg_index                             NUMBER;
27914     l_msg_count                             NUMBER;
27915     l_attribute_level                       VARCHAR2(30);
27916     l_vld_org_id                            NUMBER;
27917     l_internal_party_id                     NUMBER;
27918     l_party_id                              NUMBER;
27919     l_item_attribute_tbl                    csi_item_instance_pvt.item_attribute_tbl;
27920     l_location_tbl                          csi_item_instance_pvt.location_tbl;
27921     l_generic_id_tbl                        csi_item_instance_pvt.generic_id_tbl;
27922     l_lookup_tbl                            csi_item_instance_pvt.lookup_tbl;
27923     l_ins_count_rec                         csi_item_instance_pvt.ins_count_rec;
27924     l_asset_lookup_tbl                      csi_asset_pvt.lookup_tbl;
27925     l_asset_count_rec                       csi_asset_pvt.asset_count_rec;
27926     l_asset_id_tbl                          csi_asset_pvt.asset_id_tbl;
27927     l_asset_loc_tbl                         csi_asset_pvt.asset_loc_tbl;
27928     l_version_label                         VARCHAR2(30);
27929     l_version_label_rec                     csi_datastructures_pub.version_label_rec;
27930     l_obj_id                                NUMBER;
27931     --
27932     px_oks_txn_inst_tbl                     oks_ibint_pub.txn_instance_tbl;
27933     l_batch_type                            VARCHAR2(50);
27934     l_batch_id                              NUMBER;
27935     --
27936 BEGIN
27937     -- Standard Start of API savepoint
27938           SAVEPOINT      copy_single_item_instance;
27939     -- Standard call to check for call compatibility.
27940       IF NOT FND_API.Compatible_API_Call (l_api_version,
27941                                           p_api_version,
27942                                           l_api_name ,
27943                                           G_PKG_NAME)
27944       THEN
27945             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
27946       END IF;
27947    -- Initialize message list if p_init_msg_list is set to TRUE.
27948       IF FND_API.to_Boolean( p_init_msg_list ) THEN
27949             FND_MSG_PUB.initialize;
27950       END IF;
27951       --  Initialize API return status to success
27952           x_return_status := FND_API.G_RET_STS_SUCCESS;
27953     -- Check the profile option debug_level for debug message reporting
27954           l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
27955     -- If debug_level = 1 then dump the procedure name
27956    IF (l_debug_level > 0) THEN
27957        csi_gen_utility_pvt.put_line('copy_single_item_instance ');
27958    END IF;
27959     -- If the debug level = 2 then dump all the parameters values.
27960     IF (l_debug_level > 1) THEN
27961          csi_gen_utility_pvt.put_line('copy_single_item_instance '||
27962                               p_api_version ||'-'
27963                            || p_commit ||'-'
27964                            || p_init_msg_list ||'-'
27965                            || p_validation_level ||'-'
27966                            || p_copy_ext_attribs ||'-'
27967                            || p_copy_org_assignments ||'-'
27968                            || p_copy_parties  ||'-'
27969                            || p_copy_contacts  ||'-'
27970                            || p_copy_accounts  ||'-'
27971                            || p_copy_asset_assignments ||'-'
27972                            || p_copy_pricing_attribs
27973                             );
27974      -- Dump item instanc red
27975          csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
27976      -- Dump txn_rec
27977          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
27978 
27979     END IF;
27980     -- Start API body
27981     -- Check if an instance id is passed in p_source_instance_rec or not.
27982     -- If yes, then query the item instance from from csi_item_instances table
27983     -- into l_curr_instance_rec.
27984     /*
27985      IF ((p_source_instance_rec.VLD_ORGANIZATION_ID = FND_API.G_MISS_NUM)
27986          OR (p_source_instance_rec.VLD_ORGANIZATION_ID IS NULL)) THEN
27987              FND_MESSAGE.SET_NAME('CSI','CSI_API_VLD_ORG_ID_NULL');
27988                FND_MSG_PUB.Add;
27989              RAISE FND_API.G_EXC_ERROR;
27990      ELSE
27991         l_new_instance_rec.VLD_ORGANIZATION_ID := p_source_instance_rec.VLD_ORGANIZATION_ID;
27992      END IF;
27993      */
27994 
27995     -- Added by sk for bug 2186683
27996     IF p_source_instance_rec.vld_organization_id IS NULL OR
27997        p_source_instance_rec.vld_organization_id = fnd_api.g_miss_num
27998     THEN
27999        BEGIN
28000           SELECT last_vld_organization_id
28001           INTO   l_vld_org_id
28002           FROM   csi_item_instances
28003           WHERE  instance_id = p_source_instance_rec.instance_id;
28004        EXCEPTION
28005          WHEN OTHERS THEN
28006             NULL;
28007        END;
28008     END IF;
28009     -- End addition by sk for bug 2186683
28010 
28011      IF (p_source_instance_rec.instance_id IS NULL) OR
28012          (p_source_instance_rec.instance_id = FND_API.G_MISS_NUM) THEN
28013                FND_MESSAGE.SET_NAME('CSI','CSI_API_INSTANCE_ID_NULL');
28014                  FND_MSG_PUB.Add;
28015              RAISE FND_API.G_EXC_ERROR;
28016      ELSIF NOT (csi_Item_Instance_Vld_pvt.Val_and_get_inst_rec(
28017                   p_source_instance_rec.instance_id ,
28018                   l_curr_instance_rec )) THEN
28019                RAISE FND_API.G_EXC_ERROR;
28020      END IF;
28021 
28022     -- Check if the user has not passed incorrect options for contacts
28023      IF ((p_copy_parties  = fnd_api.g_false)
28024         AND (p_copy_contacts  = fnd_api.g_true)) THEN
28025           FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_PTY_CONTACT_OPT');
28026           FND_MSG_PUB.Add;
28027           RAISE FND_API.G_EXC_ERROR;
28028      END IF;
28029      -- If the user has passed p_copy_parties as false get only the owner, else get all the parties
28030      IF (p_copy_parties  = fnd_api.g_true) THEN
28031           l_party_query_rec.instance_party_id         := FND_API.G_MISS_NUM;
28032           l_party_query_rec.instance_id               := l_curr_instance_rec.instance_id;
28033           l_party_query_rec.party_id                  := FND_API.G_MISS_NUM;
28034           l_party_query_rec.relationship_type_code    := FND_API.G_MISS_CHAR;
28035          csi_party_relationships_pub.get_inst_party_relationships
28036                     ( p_api_version                 => p_api_version
28037                      ,p_commit                      => p_commit
28038                      ,p_init_msg_list               => p_init_msg_list
28039                      ,p_validation_level            => p_validation_level
28040                      ,p_party_query_rec             => l_party_query_rec
28041                      ,p_resolve_id_columns          => fnd_api.g_true
28042                      ,p_time_stamp                  =>  NULL
28043                      ,x_party_header_tbl            => l_party_header_tbl
28044                      ,x_return_status               => x_return_status
28045                      ,x_msg_count                   => x_msg_count
28046                      ,x_msg_data                    => x_msg_data
28047                      );
28048 
28049                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28050                   l_msg_index := 1;
28051                   l_msg_count := x_msg_count;
28052                   WHILE l_msg_count > 0 LOOP
28053                        x_msg_data := FND_MSG_PUB.GET
28054                                       (l_msg_index,
28055                                      FND_API.G_FALSE      );
28056                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28057                        l_msg_index := l_msg_index + 1;
28058                        l_msg_count := l_msg_count - 1;
28059                   END LOOP;
28060                   RAISE FND_API.G_EXC_ERROR;
28061                 END IF;
28062      ELSE
28063           l_party_query_rec.instance_party_id         := FND_API.G_MISS_NUM;
28064           l_party_query_rec.instance_id               := l_curr_instance_rec.instance_id;
28065           l_party_query_rec.party_id                  := FND_API.G_MISS_NUM;
28066           l_party_query_rec.relationship_type_code    := 'OWNER';
28067          csi_party_relationships_pub.get_inst_party_relationships
28068                     ( p_api_version                 => p_api_version
28069                      ,p_commit                      => p_commit
28070                      ,p_init_msg_list               => p_init_msg_list
28071                      ,p_validation_level            => p_validation_level
28072                      ,p_party_query_rec             => l_party_query_rec
28073                      ,p_resolve_id_columns          => fnd_api.g_true
28074                      ,p_time_stamp                  => NULL
28075                      ,x_party_header_tbl            => l_party_header_tbl
28076                      ,x_return_status               => x_return_status
28077                      ,x_msg_count                   => x_msg_count
28078                      ,x_msg_data                    => x_msg_data
28079                      );
28080 
28081                  IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28082                   l_msg_index := 1;
28083                   l_msg_count := x_msg_count;
28084                   WHILE l_msg_count > 0 LOOP
28085                        x_msg_data := FND_MSG_PUB.GET
28086                                       (l_msg_index,
28087                                      FND_API.G_FALSE      );
28088 
28089                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28090                        l_msg_index := l_msg_index + 1;
28091                        l_msg_count := l_msg_count - 1;
28092                   END LOOP;
28093                   RAISE FND_API.G_EXC_ERROR;
28094                 END IF;
28095 
28096     END IF;
28097 --   This is mean to initialize the l_party_table in order to create an instance.
28098     IF l_party_header_tbl.COUNT > 0 THEN    /*****First change here 07/27/01 - RK***/
28099                 FOR tab_row_party IN l_party_header_tbl.FIRST .. l_party_header_tbl.LAST
28100                 LOOP
28101                      IF l_party_header_tbl.EXISTS(tab_row_party) THEN
28102                         IF  l_party_header_tbl(tab_row_party).contact_flag = 'Y' THEN
28103                             -- build the contacts table
28104                              l_contact_tbl(tab_row_party).instance_party_id := l_party_header_tbl(tab_row_party).instance_party_id;
28105                              l_contact_tbl(tab_row_party).instance_id := l_party_header_tbl(tab_row_party).instance_id;
28106                              l_contact_tbl(tab_row_party).party_id := l_party_header_tbl(tab_row_party).party_id;
28107                              l_contact_tbl(tab_row_party).party_source_table := l_party_header_tbl(tab_row_party).party_source_table;
28108                              l_contact_tbl(tab_row_party).relationship_type_code := l_party_header_tbl(tab_row_party).relationship_type_code;
28109                              l_contact_tbl(tab_row_party).contact_flag := l_party_header_tbl(tab_row_party).contact_flag;
28110                              l_contact_tbl(tab_row_party).contact_ip_id := l_party_header_tbl(tab_row_party).contact_ip_id;
28111                              l_contact_tbl(tab_row_party).active_start_date := l_party_header_tbl(tab_row_party).active_start_date;
28112                              l_contact_tbl(tab_row_party).active_end_date := l_party_header_tbl(tab_row_party).active_end_date;
28113                              l_contact_tbl(tab_row_party).context := l_party_header_tbl(tab_row_party).context;
28114                              l_contact_tbl(tab_row_party).attribute1 := l_party_header_tbl(tab_row_party).attribute1;
28115                              l_contact_tbl(tab_row_party).attribute2 := l_party_header_tbl(tab_row_party).attribute2;
28116                              l_contact_tbl(tab_row_party).attribute3 := l_party_header_tbl(tab_row_party).attribute3;
28117                              l_contact_tbl(tab_row_party).attribute4 := l_party_header_tbl(tab_row_party).attribute4;
28118                              l_contact_tbl(tab_row_party).attribute5 := l_party_header_tbl(tab_row_party).attribute5;
28119                              l_contact_tbl(tab_row_party).attribute6 := l_party_header_tbl(tab_row_party).attribute6;
28120                              l_contact_tbl(tab_row_party).attribute7 := l_party_header_tbl(tab_row_party).attribute7;
28121                              l_contact_tbl(tab_row_party).attribute8 := l_party_header_tbl(tab_row_party).attribute8;
28122                              l_contact_tbl(tab_row_party).attribute9 := l_party_header_tbl(tab_row_party).attribute9;
28123                              l_contact_tbl(tab_row_party).attribute10 := l_party_header_tbl(tab_row_party).attribute10;
28124                              l_contact_tbl(tab_row_party).attribute11 := l_party_header_tbl(tab_row_party).attribute11;
28125                              l_contact_tbl(tab_row_party).attribute12 := l_party_header_tbl(tab_row_party).attribute12;
28126                              l_contact_tbl(tab_row_party).attribute13 := l_party_header_tbl(tab_row_party).attribute13;
28127                              l_contact_tbl(tab_row_party).attribute14 := l_party_header_tbl(tab_row_party).attribute14;
28128                              l_contact_tbl(tab_row_party).attribute15 := l_party_header_tbl(tab_row_party).attribute15;
28129                              l_contact_tbl(tab_row_party).object_version_number := l_party_header_tbl(tab_row_party).object_version_number;
28130   --Start fo Addition for the Bugfix 2354589.
28131                              l_contact_tbl(tab_row_party).preferred_flag := l_party_header_tbl(tab_row_party).preferred_flag;
28132                              l_contact_tbl(tab_row_party).primary_flag := l_party_header_tbl(tab_row_party).primary_flag;
28133   --End of Addition for the Bugfix 2354589.
28134                         ELSE -- Build the parties table
28135                              l_party_tbl(tab_row_party).instance_party_id := l_party_header_tbl(tab_row_party).instance_party_id;
28136                              l_party_tbl(tab_row_party).instance_id := l_party_header_tbl(tab_row_party).instance_id;
28137                              l_party_tbl(tab_row_party).party_id := l_party_header_tbl(tab_row_party).party_id;
28138                              l_party_tbl(tab_row_party).party_source_table := l_party_header_tbl(tab_row_party).party_source_table;
28139                              l_party_tbl(tab_row_party).relationship_type_code := l_party_header_tbl(tab_row_party).relationship_type_code;
28140                              l_party_tbl(tab_row_party).contact_flag := l_party_header_tbl(tab_row_party).contact_flag;
28141                              l_party_tbl(tab_row_party).contact_ip_id := l_party_header_tbl(tab_row_party).contact_ip_id;
28142                              l_party_tbl(tab_row_party).active_start_date := l_party_header_tbl(tab_row_party).active_start_date;
28143                              l_party_tbl(tab_row_party).active_end_date := l_party_header_tbl(tab_row_party).active_end_date;
28144                              l_party_tbl(tab_row_party).context := l_party_header_tbl(tab_row_party).context;
28145                              l_party_tbl(tab_row_party).attribute1 := l_party_header_tbl(tab_row_party).attribute1;
28146                              l_party_tbl(tab_row_party).attribute2 := l_party_header_tbl(tab_row_party).attribute2;
28147                              l_party_tbl(tab_row_party).attribute3 := l_party_header_tbl(tab_row_party).attribute3;
28148                              l_party_tbl(tab_row_party).attribute4 := l_party_header_tbl(tab_row_party).attribute4;
28149                              l_party_tbl(tab_row_party).attribute5 := l_party_header_tbl(tab_row_party).attribute5;
28150                              l_party_tbl(tab_row_party).attribute6 := l_party_header_tbl(tab_row_party).attribute6;
28151                              l_party_tbl(tab_row_party).attribute7 := l_party_header_tbl(tab_row_party).attribute7;
28152                              l_party_tbl(tab_row_party).attribute8 := l_party_header_tbl(tab_row_party).attribute8;
28153                              l_party_tbl(tab_row_party).attribute9 := l_party_header_tbl(tab_row_party).attribute9;
28154                              l_party_tbl(tab_row_party).attribute10 := l_party_header_tbl(tab_row_party).attribute10;
28155                              l_party_tbl(tab_row_party).attribute11 := l_party_header_tbl(tab_row_party).attribute11;
28156                              l_party_tbl(tab_row_party).attribute12 := l_party_header_tbl(tab_row_party).attribute12;
28157                              l_party_tbl(tab_row_party).attribute13 := l_party_header_tbl(tab_row_party).attribute13;
28158                              l_party_tbl(tab_row_party).attribute14 := l_party_header_tbl(tab_row_party).attribute14;
28159                              l_party_tbl(tab_row_party).attribute15 := l_party_header_tbl(tab_row_party).attribute15;
28160                              l_party_tbl(tab_row_party).object_version_number := l_party_header_tbl(tab_row_party).object_version_number;
28161   --Start fo Addition for the Bugfix 2354589.
28162                              l_party_tbl(tab_row_party).preferred_flag := l_party_header_tbl(tab_row_party).preferred_flag;
28163                              l_party_tbl(tab_row_party).primary_flag := l_party_header_tbl(tab_row_party).primary_flag;
28164   --End of Addition for the Bugfix 2354589.
28165                          END IF;
28166                      END IF;
28167                 END LOOP;
28168    END IF; --l_party_header_tbl.COUNT > 0
28169   l_original_party_tbl := l_party_tbl;
28170    -- Empty the party table
28171    l_party_header_tbl.DELETE;
28172     -- Create asset assignments if requested. Asset_assignment_tbl has alredy been fetched
28173     IF  (p_copy_asset_assignments  = fnd_api.g_true) THEN
28174           l_instance_asset_query_rec.instance_asset_id  := FND_API.G_MISS_NUM;
28175           l_instance_asset_query_rec.instance_id  := l_curr_instance_rec.instance_id;
28176           l_instance_asset_query_rec.fa_asset_id   := FND_API.G_MISS_NUM;
28177           l_instance_asset_query_rec.fa_book_type_code := FND_API.G_MISS_CHAR;
28178           l_instance_asset_query_rec.fa_location_id := FND_API.G_MISS_NUM;
28179           l_instance_asset_query_rec.update_status := FND_API.G_MISS_CHAR;
28180            csi_asset_pvt.get_instance_assets
28181             ( p_api_version                 => p_api_version
28182              ,p_commit                      => p_commit
28183              ,p_init_msg_list               => p_init_msg_list
28184              ,p_validation_level            => p_validation_level
28185              ,p_instance_asset_query_rec    => l_instance_asset_query_rec
28186              ,p_resolve_id_columns          => fnd_api.g_true
28187              ,p_time_stamp                  => NULL
28188              ,x_instance_asset_tbl          => l_asset_header_tbl
28189              ,x_return_status               => x_return_status
28190              ,x_msg_count                   => x_msg_count
28191              ,x_msg_data                    => x_msg_data
28192              );
28193 
28194                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28195                   l_msg_index := 1;
28196                   l_msg_count := x_msg_count;
28197                   WHILE l_msg_count > 0 LOOP
28198                        x_msg_data := FND_MSG_PUB.GET
28199                                       (l_msg_index,
28200                                      FND_API.G_FALSE      );
28201                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28202                        l_msg_index := l_msg_index + 1;
28203                        l_msg_count := l_msg_count - 1;
28204                   END LOOP;
28205                   RAISE FND_API.G_EXC_ERROR;
28206                 END IF;
28207 
28208     END IF;
28209 
28210 
28211 
28212     IF l_asset_header_tbl.COUNT > 0 THEN    /*****First change here 08/25/01 - RK***/
28213                 FOR tab_row_party IN l_asset_header_tbl.FIRST .. l_asset_header_tbl.LAST
28214                 LOOP
28215                      IF l_asset_header_tbl.EXISTS(tab_row_party) THEN
28216                              l_asset_tbl(tab_row_party).instance_asset_id := l_asset_header_tbl(tab_row_party).instance_asset_id;
28217                              l_asset_tbl(tab_row_party).instance_id := l_asset_header_tbl(tab_row_party).instance_id;
28218                              l_asset_tbl(tab_row_party).fa_asset_id := l_asset_header_tbl(tab_row_party).fa_asset_id;
28219                              l_asset_tbl(tab_row_party).fa_book_type_code := l_asset_header_tbl(tab_row_party).fa_book_type_code;
28220                              l_asset_tbl(tab_row_party).fa_location_id := l_asset_header_tbl(tab_row_party).fa_location_id;
28221                              l_asset_tbl(tab_row_party).asset_quantity := l_asset_header_tbl(tab_row_party).asset_quantity;
28222                              l_asset_tbl(tab_row_party).update_status := l_asset_header_tbl(tab_row_party).update_status;
28223                              l_asset_tbl(tab_row_party).active_start_date := l_asset_header_tbl(tab_row_party).active_start_date;
28224                              l_asset_tbl(tab_row_party).active_end_date := l_asset_header_tbl(tab_row_party).active_end_date;
28225                              l_asset_tbl(tab_row_party).object_version_number := l_asset_header_tbl(tab_row_party).object_version_number;
28226                      END IF;
28227                 END LOOP;
28228    END IF; --l_asset_header_tbl.COUNT > 0
28229    -- Set the non-copiable attributes as follows
28230 
28231        l_new_instance_rec.CREATION_COMPLETE_FLAG := p_source_instance_rec.CREATION_COMPLETE_FLAG;
28232        l_new_instance_rec.COMPLETENESS_FLAG := p_source_instance_rec.COMPLETENESS_FLAG;
28233 
28234     IF (p_source_instance_rec.EXTERNAL_REFERENCE = FND_API.G_MISS_CHAR) THEN
28235         l_new_instance_rec.EXTERNAL_REFERENCE := l_curr_instance_rec.EXTERNAL_REFERENCE;
28236     ELSE
28237         l_new_instance_rec.EXTERNAL_REFERENCE := p_source_instance_rec.EXTERNAL_REFERENCE;
28238     END IF;
28239     IF ((p_source_instance_rec.INVENTORY_ITEM_ID = FND_API.G_MISS_NUM)
28240             OR (p_source_instance_rec.INVENTORY_ITEM_ID IS NULL)) THEN
28241         l_new_instance_rec.INVENTORY_ITEM_ID := l_curr_instance_rec.INVENTORY_ITEM_ID;
28242     ELSE
28243         l_new_instance_rec.INVENTORY_ITEM_ID := p_source_instance_rec.INVENTORY_ITEM_ID;
28244     END IF;
28245 
28246      -- srramakr commented for bug # 2558156
28247      -- Uncommented for bug 2985165
28248      IF p_call_from_split=fnd_api.g_true
28249      THEN
28250          IF  (p_source_instance_rec.INVENTORY_REVISION = FND_API.G_MISS_CHAR) THEN
28251               l_new_instance_rec.INVENTORY_REVISION := l_curr_instance_rec.INVENTORY_REVISION;
28252          ELSE
28253               l_new_instance_rec.INVENTORY_REVISION := p_source_instance_rec.INVENTORY_REVISION;
28254          END IF;
28255      ELSE
28256      -- Uncommented for bug 2985165
28257      -- srramakr Bug # 2558156 Revision should not be copied
28258          IF p_source_instance_rec.INVENTORY_REVISION <> FND_API.G_MISS_CHAR THEN
28259             l_new_instance_rec.INVENTORY_REVISION := p_source_instance_rec.INVENTORY_REVISION;
28260          END IF;
28261      END IF;
28262 
28263      IF ((p_source_instance_rec.INV_MASTER_ORGANIZATION_ID = FND_API.G_MISS_NUM)
28264              OR (p_source_instance_rec.INV_MASTER_ORGANIZATION_ID IS NULL)) THEN
28265         l_new_instance_rec.INV_MASTER_ORGANIZATION_ID := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
28266       ELSE
28267        l_new_instance_rec.INV_MASTER_ORGANIZATION_ID := p_source_instance_rec.INV_MASTER_ORGANIZATION_ID ;
28268       END IF;
28269 
28270      IF (p_source_instance_rec.SERIAL_NUMBER <> FND_API.G_MISS_CHAR) THEN
28271         l_new_instance_rec.SERIAL_NUMBER := p_source_instance_rec.SERIAL_NUMBER;
28272      END IF;
28273 
28274      IF ((p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG = FND_API.G_MISS_CHAR)
28275         OR (p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG IS NULL)) THEN
28276         l_new_instance_rec.MFG_SERIAL_NUMBER_FLAG := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
28277       ELSE
28278        l_new_instance_rec.MFG_SERIAL_NUMBER_FLAG := p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG ;
28279      END IF;
28280 
28281      IF (p_source_instance_rec.LOT_NUMBER = FND_API.G_MISS_CHAR) THEN
28282         l_new_instance_rec.LOT_NUMBER := l_curr_instance_rec.LOT_NUMBER;
28283     ELSE
28284         l_new_instance_rec.LOT_NUMBER := p_source_instance_rec.LOT_NUMBER;
28285      END IF;
28286 
28287      IF ((p_source_instance_rec.QUANTITY = FND_API.G_MISS_NUM)
28288         OR (p_source_instance_rec.QUANTITY IS NULL)) THEN
28289         l_new_instance_rec.QUANTITY := l_curr_instance_rec.QUANTITY;
28290      ELSE
28291        l_new_instance_rec.QUANTITY := p_source_instance_rec.QUANTITY ;
28292      END IF;
28293 
28294      IF ((p_source_instance_rec.UNIT_OF_MEASURE = FND_API.G_MISS_CHAR)
28295         OR  (p_source_instance_rec.UNIT_OF_MEASURE IS NULL)) THEN
28296         l_new_instance_rec.UNIT_OF_MEASURE := l_curr_instance_rec.UNIT_OF_MEASURE;
28297      ELSE
28298        l_new_instance_rec.UNIT_OF_MEASURE := p_source_instance_rec.UNIT_OF_MEASURE ;
28299      END IF;
28300 
28301      IF (p_source_instance_rec.ACCOUNTING_CLASS_CODE = FND_API.G_MISS_CHAR) THEN
28302         l_new_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
28303      ELSE
28304          l_new_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
28305      END IF;
28306 
28307      IF (p_source_instance_rec.INSTANCE_CONDITION_ID = FND_API.G_MISS_NUM) THEN
28308         l_new_instance_rec.INSTANCE_CONDITION_ID := l_curr_instance_rec.INSTANCE_CONDITION_ID;
28309      ELSE
28310         l_new_instance_rec.INSTANCE_CONDITION_ID := p_source_instance_rec.INSTANCE_CONDITION_ID;
28311      END IF;
28312 
28313      IF ((p_source_instance_rec.INSTANCE_STATUS_ID = FND_API.G_MISS_NUM)
28314         OR (p_source_instance_rec.INSTANCE_STATUS_ID IS NULL)) THEN
28315         l_new_instance_rec.INSTANCE_STATUS_ID := l_curr_instance_rec.INSTANCE_STATUS_ID;
28316         ELSE
28317        l_new_instance_rec.INSTANCE_STATUS_ID := p_source_instance_rec.INSTANCE_STATUS_ID ;
28318      END IF;
28319 
28320      IF ((p_source_instance_rec.CUSTOMER_VIEW_FLAG = FND_API.G_MISS_CHAR)
28321          OR (p_source_instance_rec.CUSTOMER_VIEW_FLAG IS NULL )) THEN
28322         l_new_instance_rec.CUSTOMER_VIEW_FLAG := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
28323        ELSE
28324        l_new_instance_rec.CUSTOMER_VIEW_FLAG := p_source_instance_rec.CUSTOMER_VIEW_FLAG ;
28325      END IF;
28326 
28327      IF ((p_source_instance_rec.MERCHANT_VIEW_FLAG = FND_API.G_MISS_CHAR)
28328         OR (p_source_instance_rec.MERCHANT_VIEW_FLAG IS NULL)) THEN
28329         l_new_instance_rec.MERCHANT_VIEW_FLAG := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
28330       ELSE
28331        l_new_instance_rec.MERCHANT_VIEW_FLAG := p_source_instance_rec.MERCHANT_VIEW_FLAG ;
28332      END IF;
28333 
28334      IF (p_source_instance_rec.SELLABLE_FLAG = FND_API.G_MISS_CHAR) THEN
28335         l_new_instance_rec.SELLABLE_FLAG := l_curr_instance_rec.SELLABLE_FLAG;
28336      ELSE
28337         l_new_instance_rec.SELLABLE_FLAG := p_source_instance_rec.SELLABLE_FLAG;
28338      END IF;
28339 
28340      IF (p_source_instance_rec.SYSTEM_ID = FND_API.G_MISS_NUM) THEN
28341         l_new_instance_rec.SYSTEM_ID := l_curr_instance_rec.SYSTEM_ID;
28342      ELSE
28343         l_new_instance_rec.SYSTEM_ID := p_source_instance_rec.SYSTEM_ID;
28344      END IF;
28345 
28346      IF (p_source_instance_rec.INSTANCE_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
28347         l_new_instance_rec.INSTANCE_TYPE_CODE := l_curr_instance_rec.INSTANCE_TYPE_CODE;
28348      ELSE
28349         l_new_instance_rec.INSTANCE_TYPE_CODE := p_source_instance_rec.INSTANCE_TYPE_CODE;
28350      END IF;
28351 
28352      IF (p_source_instance_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
28353         l_new_instance_rec.ACTIVE_START_DATE := l_curr_instance_rec.ACTIVE_START_DATE;
28354      ELSE
28355         l_new_instance_rec.ACTIVE_START_DATE := p_source_instance_rec.ACTIVE_START_DATE;
28356       END IF;
28357 
28358       IF (p_source_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
28359         l_new_instance_rec.ACTIVE_END_DATE := l_curr_instance_rec.ACTIVE_END_DATE;
28360       ELSE
28361         l_new_instance_rec.ACTIVE_END_DATE := p_source_instance_rec.ACTIVE_END_DATE;
28362       END IF;
28363 
28364       IF (p_source_instance_rec.LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR)  THEN
28365         l_new_instance_rec.LOCATION_TYPE_CODE := l_curr_instance_rec.LOCATION_TYPE_CODE;
28366       ELSE
28367         l_new_instance_rec.LOCATION_TYPE_CODE := p_source_instance_rec.LOCATION_TYPE_CODE;
28368       END IF;
28369 
28370       IF (p_source_instance_rec.LOCATION_ID = FND_API.G_MISS_NUM) THEN
28371         l_new_instance_rec.LOCATION_ID := l_curr_instance_rec.LOCATION_ID;
28372       ELSE
28373         l_new_instance_rec.LOCATION_ID := p_source_instance_rec.LOCATION_ID;
28374       END IF;
28375 
28376       IF (p_source_instance_rec.INV_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
28377         l_new_instance_rec.INV_ORGANIZATION_ID := l_curr_instance_rec.INV_ORGANIZATION_ID;
28378       ELSE
28379         l_new_instance_rec.INV_ORGANIZATION_ID := p_source_instance_rec.INV_ORGANIZATION_ID;
28380       END IF;
28381 
28382       IF (p_source_instance_rec.INV_SUBINVENTORY_NAME = FND_API.G_MISS_CHAR) THEN
28383          l_new_instance_rec.INV_SUBINVENTORY_NAME := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
28384       ELSE
28385           l_new_instance_rec.INV_SUBINVENTORY_NAME := p_source_instance_rec.INV_SUBINVENTORY_NAME;
28386       END IF;
28387 
28388       IF (p_source_instance_rec.INV_LOCATOR_ID = FND_API.G_MISS_NUM) THEN
28389         l_new_instance_rec.INV_LOCATOR_ID := l_curr_instance_rec.INV_LOCATOR_ID;
28390       ELSE
28391         l_new_instance_rec.INV_LOCATOR_ID := p_source_instance_rec.INV_LOCATOR_ID;
28392       END IF;
28393 
28394       IF (p_source_instance_rec.PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
28395         l_new_instance_rec.PA_PROJECT_ID := l_curr_instance_rec.PA_PROJECT_ID;
28396       ELSE
28397         l_new_instance_rec.PA_PROJECT_ID := p_source_instance_rec.PA_PROJECT_ID;
28398       END IF;
28399 
28400       IF (p_source_instance_rec.PA_PROJECT_TASK_ID = FND_API.G_MISS_NUM) THEN
28401         l_new_instance_rec.PA_PROJECT_TASK_ID := l_curr_instance_rec.PA_PROJECT_TASK_ID;
28402       ELSE
28403         l_new_instance_rec.PA_PROJECT_TASK_ID := p_source_instance_rec.PA_PROJECT_TASK_ID;
28404       END IF;
28405 
28406       IF (p_source_instance_rec.IN_TRANSIT_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
28407         l_new_instance_rec.IN_TRANSIT_ORDER_LINE_ID := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
28408       ELSE
28409         l_new_instance_rec.IN_TRANSIT_ORDER_LINE_ID := p_source_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
28410       END IF;
28411 
28412       IF (p_source_instance_rec.WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
28413         l_new_instance_rec.WIP_JOB_ID := l_curr_instance_rec.WIP_JOB_ID;
28414       ELSE
28415         l_new_instance_rec.WIP_JOB_ID := p_source_instance_rec.WIP_JOB_ID;
28416       END IF;
28417 
28418       IF (p_source_instance_rec.PO_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
28419         l_new_instance_rec.PO_ORDER_LINE_ID := l_curr_instance_rec.PO_ORDER_LINE_ID;
28420       ELSE
28421         l_new_instance_rec.PO_ORDER_LINE_ID := p_source_instance_rec.PO_ORDER_LINE_ID;
28422       END IF;
28423 
28424       IF (p_source_instance_rec.LAST_TXN_LINE_DETAIL_ID = FND_API.G_MISS_NUM) THEN
28425         l_new_instance_rec.LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
28426       ELSE
28427         l_new_instance_rec.LAST_TXN_LINE_DETAIL_ID := p_source_instance_rec.LAST_TXN_LINE_DETAIL_ID;
28428       END IF;
28429 
28430       IF (p_source_instance_rec.LAST_OE_RMA_LINE_ID = FND_API.G_MISS_NUM) THEN
28431         l_new_instance_rec.LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
28432       ELSE
28433         l_new_instance_rec.LAST_OE_RMA_LINE_ID := p_source_instance_rec.LAST_OE_RMA_LINE_ID;
28434       END IF;
28435 
28436       IF (p_source_instance_rec.LAST_PO_PO_LINE_ID  = FND_API.G_MISS_NUM) THEN
28437         l_new_instance_rec.LAST_PO_PO_LINE_ID  := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
28438       ELSE
28439          l_new_instance_rec.LAST_PO_PO_LINE_ID  := p_source_instance_rec.LAST_PO_PO_LINE_ID ;
28440       END IF;
28441 
28442       IF (p_source_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
28443         l_new_instance_rec.LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER;
28444       ELSE
28445          l_new_instance_rec.LAST_OE_PO_NUMBER := p_source_instance_rec.LAST_OE_PO_NUMBER;
28446       END IF;
28447 
28448       IF (p_source_instance_rec.LAST_WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
28449           l_new_instance_rec.LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID;
28450       ELSE
28451           l_new_instance_rec.LAST_WIP_JOB_ID := p_source_instance_rec.LAST_WIP_JOB_ID;
28452       END IF;
28453 
28454       IF (p_source_instance_rec.LAST_PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
28455         l_new_instance_rec.LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID;
28456       ELSE
28457         l_new_instance_rec.LAST_PA_PROJECT_ID := p_source_instance_rec.LAST_PA_PROJECT_ID;
28458       END IF;
28459 
28460       IF (p_source_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
28461         l_new_instance_rec.LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID;
28462       ELSE
28463         l_new_instance_rec.LAST_PA_TASK_ID := p_source_instance_rec.LAST_PA_TASK_ID;
28464       END IF;
28465 
28466       IF (p_source_instance_rec.LAST_OE_AGREEMENT_ID = FND_API.G_MISS_NUM) THEN
28467         l_new_instance_rec.LAST_OE_AGREEMENT_ID  := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
28468       ELSE
28469          l_new_instance_rec.LAST_OE_AGREEMENT_ID  := p_source_instance_rec.LAST_OE_AGREEMENT_ID;
28470       END IF;
28471 
28472       IF (p_source_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
28473         l_new_instance_rec.INSTALL_DATE := l_curr_instance_rec.INSTALL_DATE;
28474       ELSE
28475         l_new_instance_rec.INSTALL_DATE := p_source_instance_rec.INSTALL_DATE;
28476       END IF;
28477 
28478       IF (p_source_instance_rec.MANUALLY_CREATED_FLAG = FND_API.G_MISS_CHAR) THEN
28479         l_new_instance_rec.MANUALLY_CREATED_FLAG := l_curr_instance_rec.MANUALLY_CREATED_FLAG;
28480       ELSE
28481         l_new_instance_rec.MANUALLY_CREATED_FLAG := p_source_instance_rec.MANUALLY_CREATED_FLAG;
28482       END IF;
28483 
28484       IF (p_source_instance_rec.RETURN_BY_DATE  = FND_API.G_MISS_DATE) THEN
28485         l_new_instance_rec.RETURN_BY_DATE  := l_curr_instance_rec.RETURN_BY_DATE ;
28486       ELSE
28487         l_new_instance_rec.RETURN_BY_DATE  := p_source_instance_rec.RETURN_BY_DATE ;
28488       END IF;
28489 
28490       IF (p_source_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
28491         l_new_instance_rec.ACTUAL_RETURN_DATE := l_curr_instance_rec.ACTUAL_RETURN_DATE;
28492       ELSE
28493         l_new_instance_rec.ACTUAL_RETURN_DATE := p_source_instance_rec.ACTUAL_RETURN_DATE;
28494       END IF;
28495 
28496       IF (p_source_instance_rec.VERSION_LABEL = FND_API.G_MISS_CHAR) THEN
28497         l_new_instance_rec.VERSION_LABEL := l_curr_instance_rec.VERSION_LABEL;
28498       ELSE
28499         l_new_instance_rec.VERSION_LABEL := p_source_instance_rec.VERSION_LABEL;
28500       END IF;
28501 
28502       IF (p_source_instance_rec.VERSION_LABEL_DESCRIPTION = FND_API.G_MISS_CHAR) THEN
28503         l_new_instance_rec.VERSION_LABEL_DESCRIPTION := l_curr_instance_rec.VERSION_LABEL_DESCRIPTION;
28504       ELSE
28505         l_new_instance_rec.VERSION_LABEL_DESCRIPTION := p_source_instance_rec.VERSION_LABEL_DESCRIPTION;
28506       END IF;
28507 
28508       IF (p_source_instance_rec.CONTEXT = FND_API.G_MISS_CHAR) THEN
28509         l_new_instance_rec.CONTEXT := l_curr_instance_rec.CONTEXT;
28510       ELSE
28511         l_new_instance_rec.CONTEXT := p_source_instance_rec.CONTEXT;
28512       END IF;
28513 
28514       IF (p_source_instance_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
28515         l_new_instance_rec.ATTRIBUTE1 := l_curr_instance_rec.ATTRIBUTE1;
28516       ELSE
28517         l_new_instance_rec.ATTRIBUTE1 := p_source_instance_rec.ATTRIBUTE1;
28518       END IF;
28519 
28520       IF (p_source_instance_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
28521         l_new_instance_rec.ATTRIBUTE2 := l_curr_instance_rec.ATTRIBUTE2;
28522        ELSE
28523          l_new_instance_rec.ATTRIBUTE2 := p_source_instance_rec.ATTRIBUTE2;
28524       END IF;
28525 
28526       IF (p_source_instance_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
28527         l_new_instance_rec.ATTRIBUTE3 := l_curr_instance_rec.ATTRIBUTE3;
28528        ELSE
28529         l_new_instance_rec.ATTRIBUTE3 := p_source_instance_rec.ATTRIBUTE3;
28530       END IF;
28531 
28532       IF (p_source_instance_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
28533         l_new_instance_rec.ATTRIBUTE4 := l_curr_instance_rec.ATTRIBUTE4;
28534       ELSE
28535        l_new_instance_rec.ATTRIBUTE4 := p_source_instance_rec.ATTRIBUTE4;
28536       END IF;
28537 
28538       IF (p_source_instance_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
28539         l_new_instance_rec.ATTRIBUTE5 := l_curr_instance_rec.ATTRIBUTE5;
28540       ELSE
28541         l_new_instance_rec.ATTRIBUTE5 := p_source_instance_rec.ATTRIBUTE5;
28542       END IF;
28543 
28544       IF (p_source_instance_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
28545         l_new_instance_rec.ATTRIBUTE6 := l_curr_instance_rec.ATTRIBUTE6;
28546       ELSE
28547         l_new_instance_rec.ATTRIBUTE6 := p_source_instance_rec.ATTRIBUTE6;
28548       END IF;
28549 
28550       IF (p_source_instance_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
28551         l_new_instance_rec.ATTRIBUTE7 := l_curr_instance_rec.ATTRIBUTE7;
28552       ELSE
28553         l_new_instance_rec.ATTRIBUTE7 := p_source_instance_rec.ATTRIBUTE7;
28554       END IF;
28555 
28556       IF (p_source_instance_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
28557         l_new_instance_rec.ATTRIBUTE9 := l_curr_instance_rec.ATTRIBUTE9;
28558       ELSE
28559          l_new_instance_rec.ATTRIBUTE9 := p_source_instance_rec.ATTRIBUTE9;
28560       END IF;
28561 
28562       IF (p_source_instance_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
28563         l_new_instance_rec.ATTRIBUTE10 := l_curr_instance_rec.ATTRIBUTE10;
28564       ELSE
28565         l_new_instance_rec.ATTRIBUTE10 := p_source_instance_rec.ATTRIBUTE10;
28566       END IF;
28567 
28568       IF (p_source_instance_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
28569         l_new_instance_rec.ATTRIBUTE11 := l_curr_instance_rec.ATTRIBUTE11;
28570       ELSE
28571         l_new_instance_rec.ATTRIBUTE11 := p_source_instance_rec.ATTRIBUTE11;
28572       END IF;
28573 
28574       IF (p_source_instance_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
28575         l_new_instance_rec.ATTRIBUTE12 := l_curr_instance_rec.ATTRIBUTE12;
28576       ELSE
28577         l_new_instance_rec.ATTRIBUTE12 := p_source_instance_rec.ATTRIBUTE12;
28578       END IF;
28579 
28580       IF (p_source_instance_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
28581         l_new_instance_rec.ATTRIBUTE13 := l_curr_instance_rec.ATTRIBUTE13;
28582       ELSE
28583          l_new_instance_rec.ATTRIBUTE13 := p_source_instance_rec.ATTRIBUTE13;
28584       END IF;
28585 
28586       IF (p_source_instance_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
28587         l_new_instance_rec.ATTRIBUTE14 := l_curr_instance_rec.ATTRIBUTE14;
28588       ELSE
28589         l_new_instance_rec.ATTRIBUTE14 := p_source_instance_rec.ATTRIBUTE14;
28590       END IF;
28591 
28592       IF (p_source_instance_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
28593         l_new_instance_rec.ATTRIBUTE15 := l_curr_instance_rec.ATTRIBUTE15;
28594       ELSE
28595         l_new_instance_rec.ATTRIBUTE15 := p_source_instance_rec.ATTRIBUTE15;
28596       END IF;
28597 
28598       IF (p_source_instance_rec.LAST_OE_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
28599         l_new_instance_rec.LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
28600       ELSE
28601         l_new_instance_rec.LAST_OE_ORDER_LINE_ID := p_source_instance_rec.LAST_OE_ORDER_LINE_ID;
28602       END IF;
28603 
28604                IF (p_source_instance_rec.LAST_OE_RMA_LINE_ID  = FND_API.G_MISS_NUM) THEN
28605                   l_new_instance_rec.LAST_OE_RMA_LINE_ID     := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
28606                ELSE
28607                   l_new_instance_rec.LAST_OE_RMA_LINE_ID     := p_source_instance_rec.LAST_OE_RMA_LINE_ID;
28608                END IF;
28609 
28610                IF (p_source_instance_rec.LAST_PO_PO_LINE_ID  = FND_API.G_MISS_NUM) THEN
28611                   l_new_instance_rec.LAST_PO_PO_LINE_ID    := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
28612                ELSE
28613                   l_new_instance_rec.LAST_PO_PO_LINE_ID    := p_source_instance_rec.LAST_PO_PO_LINE_ID;
28614                END IF;
28615 
28616                IF (p_source_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
28617                  l_new_instance_rec.LAST_OE_PO_NUMBER       := l_curr_instance_rec.LAST_OE_PO_NUMBER;
28618                ELSE
28619                  l_new_instance_rec.LAST_OE_PO_NUMBER       := p_source_instance_rec.LAST_OE_PO_NUMBER;
28620                END IF;
28621 
28622                IF (p_source_instance_rec.LAST_WIP_JOB_ID  = FND_API.G_MISS_NUM) THEN
28623                  l_new_instance_rec.LAST_WIP_JOB_ID         := l_curr_instance_rec.LAST_WIP_JOB_ID;
28624                ELSE
28625                  l_new_instance_rec.LAST_WIP_JOB_ID         := p_source_instance_rec.LAST_WIP_JOB_ID;
28626                END IF;
28627 
28628                IF (p_source_instance_rec.LAST_PA_PROJECT_ID  = FND_API.G_MISS_NUM) THEN
28629                  l_new_instance_rec.LAST_PA_PROJECT_ID      := l_curr_instance_rec.LAST_PA_PROJECT_ID;
28630                ELSE
28631                  l_new_instance_rec.LAST_PA_PROJECT_ID      := p_source_instance_rec.LAST_PA_PROJECT_ID;
28632                END IF;
28633 
28634                 IF (p_source_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
28635                     l_new_instance_rec.LAST_PA_TASK_ID         := l_curr_instance_rec.LAST_PA_TASK_ID ;
28636                 ELSE
28637                     l_new_instance_rec.LAST_PA_TASK_ID         := p_source_instance_rec.LAST_PA_TASK_ID ;
28638                  END IF;
28639 
28640                  IF (p_source_instance_rec.LAST_OE_AGREEMENT_ID  = FND_API.G_MISS_NUM) THEN
28641                   l_new_instance_rec.LAST_OE_AGREEMENT_ID    := l_curr_instance_rec.LAST_OE_AGREEMENT_ID ;
28642                  ELSE
28643                   l_new_instance_rec.LAST_OE_AGREEMENT_ID    := p_source_instance_rec.LAST_OE_AGREEMENT_ID ;
28644                  END IF;
28645 
28646                  IF (p_source_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
28647                    l_new_instance_rec.INSTALL_DATE            := l_curr_instance_rec.INSTALL_DATE;
28648                  ELSE
28649                    l_new_instance_rec.INSTALL_DATE            := p_source_instance_rec.INSTALL_DATE;
28650                   END IF;
28651 
28652                  IF (p_source_instance_rec.RETURN_BY_DATE = FND_API.G_MISS_DATE) THEN
28653                    l_new_instance_rec.RETURN_BY_DATE          := l_curr_instance_rec.RETURN_BY_DATE;
28654                  ELSE
28655                    l_new_instance_rec.RETURN_BY_DATE          := p_source_instance_rec.RETURN_BY_DATE;
28656                  END IF;
28657 
28658                  IF (p_source_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
28659                     l_new_instance_rec.ACTUAL_RETURN_DATE      := l_curr_instance_rec.ACTUAL_RETURN_DATE;
28660                  ELSE
28661                     l_new_instance_rec.ACTUAL_RETURN_DATE      := p_source_instance_rec.ACTUAL_RETURN_DATE;
28662                  END IF;
28663 
28664                  IF (p_source_instance_rec.instance_number = fnd_api.g_miss_char)
28665                  THEN
28666                    NULL;
28667                  ELSE
28668                    l_new_instance_rec.instance_number := p_source_instance_rec.instance_number;
28669                  END IF;
28670 
28671                  IF (p_source_instance_rec.instance_description = fnd_api.g_miss_char)
28672                  THEN
28673                    NULL;
28674                  ELSE
28675                    l_new_instance_rec.instance_description := p_source_instance_rec.instance_description;
28676                  END IF;
28677 
28678                  -- Set the non-copiable attributes as follows
28679                  l_new_instance_rec.instance_id        := FND_API.G_MISS_NUM;
28680 
28681                  -- uncommented for Bug 5348851
28682                  l_new_instance_rec.instance_number    := FND_API.G_MISS_CHAR;
28683 
28684 		 --IF condition added for bug5248037--
28685 	         If p_txn_rec.transaction_type_id <> 1 Then
28686 		    l_new_instance_rec.active_start_date  := nvl(p_source_instance_rec.active_start_date,sysdate);
28687 	         Else
28688 		    l_new_instance_rec.active_start_date  := SYSDATE;
28689 	         End If;
28690 
28691                  l_new_instance_rec.MANUALLY_CREATED_FLAG   := 'N';
28692                  l_new_instance_rec.COMPLETENESS_FLAG       := NULL;
28693                  l_new_instance_rec.OBJECT_VERSION_NUMBER   := 1;
28694 
28695 
28696                  -- The following is added for bug 2944298.
28697                  -- Value of instance_usage_code should be copied from the source instance
28698                  -- only if it is called from split.
28699                    IF p_call_from_split=fnd_api.g_true
28700                    THEN
28701                  -- Added by sguthiva for bug 2163942
28702                      IF (p_source_instance_rec.instance_usage_code = FND_API.G_MISS_CHAR) THEN
28703                          l_new_instance_rec.instance_usage_code := l_curr_instance_rec.instance_usage_code;
28704                      ELSE
28705                          l_new_instance_rec.instance_usage_code := p_source_instance_rec.instance_usage_code;
28706                      END IF;
28707                    ELSE
28708                       l_obj_id:=NULL;
28709                       csi_ii_relationships_pvt.Get_Top_Most_Parent
28710                          ( p_subject_id       => p_source_instance_rec.instance_id,
28711                            p_rel_type_code    => 'COMPONENT-OF',
28712                            p_object_id        => l_obj_id
28713                          );
28714                        --
28715                        IF l_obj_id <> p_source_instance_rec.instance_id THEN
28716                           BEGIN
28717                              SELECT instance_usage_code
28718                              INTO   l_new_instance_rec.instance_usage_code
28719                              FROM   csi_item_instances
28720                              WHERE  instance_id=l_obj_id;
28721                           EXCEPTION
28722                              WHEN NO_DATA_FOUND THEN
28723                                 NULL;
28724                           END;
28725                        ELSE
28726                           l_new_instance_rec.instance_usage_code := l_curr_instance_rec.instance_usage_code;
28727                        END IF;
28728                    END IF;
28729                  -- End addition by sguthiva for bug 2163942
28730                  -- Added by sguthiva for bug 2230264
28731 
28732                  -- Added by sk for bug 2230264
28733                  IF (p_source_instance_rec.vld_organization_id = FND_API.G_MISS_NUM) THEN
28734                     l_new_instance_rec.vld_organization_id := l_vld_org_id;
28735                  ELSE
28736                     l_new_instance_rec.vld_organization_id := p_source_instance_rec.vld_organization_id;
28737                  END IF;
28738 
28739                  IF (p_source_instance_rec.install_location_type_code = FND_API.G_MISS_CHAR) THEN
28740                     l_new_instance_rec.install_location_type_code := l_curr_instance_rec.install_location_type_code;
28741                  ELSE
28742                     l_new_instance_rec.install_location_type_code := p_source_instance_rec.install_location_type_code;
28743                  END IF;
28744 
28745                  IF (p_source_instance_rec.install_location_id = FND_API.G_MISS_NUM) THEN
28746                     l_new_instance_rec.install_location_id := l_curr_instance_rec.install_location_id;
28747                  ELSE
28748                     l_new_instance_rec.install_location_id := p_source_instance_rec.install_location_id;
28749                  END IF;
28750                  -- End addition by sk for bug 2230264
28751 
28752                 --start of code for eam integration--
28753    	        IF (p_source_instance_rec.NETWORK_ASSET_FLAG = FND_API.G_MISS_CHAR) THEN
28754 		    l_new_instance_rec.NETWORK_ASSET_FLAG := l_curr_instance_rec.NETWORK_ASSET_FLAG;
28755 		ELSE
28756 		    l_new_instance_rec.NETWORK_ASSET_FLAG := p_source_instance_rec.NETWORK_ASSET_FLAG;
28757 		END IF;
28758 
28759 		IF (p_source_instance_rec.MAINTAINABLE_FLAG = FND_API.G_MISS_CHAR) THEN
28760 		    l_new_instance_rec.MAINTAINABLE_FLAG := l_curr_instance_rec.MAINTAINABLE_FLAG;
28761 		ELSE
28762 		    l_new_instance_rec.MAINTAINABLE_FLAG := p_source_instance_rec.MAINTAINABLE_FLAG;
28763 		END IF;
28764 
28765 		IF (p_source_instance_rec.PN_LOCATION_ID = FND_API.G_MISS_NUM) THEN
28766 		   l_new_instance_rec.PN_LOCATION_ID := l_curr_instance_rec.PN_LOCATION_ID;
28767 		ELSE
28768 		   l_new_instance_rec.PN_LOCATION_ID := p_source_instance_rec.PN_LOCATION_ID;
28769 		END IF;
28770 
28771 		IF (p_source_instance_rec.ASSET_CRITICALITY_CODE = FND_API.G_MISS_CHAR) THEN
28772 		   l_new_instance_rec.ASSET_CRITICALITY_CODE := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
28773 		ELSE
28774 		   l_new_instance_rec.ASSET_CRITICALITY_CODE := p_source_instance_rec.ASSET_CRITICALITY_CODE;
28775 		END IF;
28776 
28777 	        IF (p_source_instance_rec.CATEGORY_ID = FND_API.G_MISS_NUM) THEN
28778 	           l_new_instance_rec.CATEGORY_ID  := l_curr_instance_rec.CATEGORY_ID;
28779 	        ELSE
28780 	           l_new_instance_rec.CATEGORY_ID  := p_source_instance_rec.CATEGORY_ID;
28781 	       END IF;
28782 
28783   	       IF (p_source_instance_rec.EQUIPMENT_GEN_OBJECT_ID = FND_API.G_MISS_NUM) THEN
28784 	          l_new_instance_rec.EQUIPMENT_GEN_OBJECT_ID := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
28785 	       ELSE
28786 	          l_new_instance_rec.EQUIPMENT_GEN_OBJECT_ID := p_source_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
28787 	       END IF;
28788 
28789 	       IF (p_source_instance_rec.INSTANTIATION_FLAG = FND_API.G_MISS_CHAR) THEN
28790 		   l_new_instance_rec.INSTANTIATION_FLAG := l_curr_instance_rec.INSTANTIATION_FLAG;
28791 	       ELSE
28792 		   l_new_instance_rec.INSTANTIATION_FLAG := p_source_instance_rec.INSTANTIATION_FLAG;
28793 	       END IF;
28794 
28795 	       IF (p_source_instance_rec.LINEAR_LOCATION_ID  = FND_API.G_MISS_NUM) THEN
28796 	           l_new_instance_rec.LINEAR_LOCATION_ID  := l_curr_instance_rec.LINEAR_LOCATION_ID ;
28797 	       ELSE
28798 		   l_new_instance_rec.LINEAR_LOCATION_ID  := p_source_instance_rec.LINEAR_LOCATION_ID ;
28799 	       END IF;
28800 
28801 	       IF (p_source_instance_rec.OPERATIONAL_LOG_FLAG = FND_API.G_MISS_CHAR) THEN
28802 	          l_new_instance_rec.OPERATIONAL_LOG_FLAG := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
28803 	       ELSE
28804 		  l_new_instance_rec.OPERATIONAL_LOG_FLAG := p_source_instance_rec.OPERATIONAL_LOG_FLAG;
28805 	       END IF;
28806 
28807 	       IF (p_source_instance_rec.CHECKIN_STATUS = FND_API.G_MISS_NUM) THEN
28808 	          l_new_instance_rec.CHECKIN_STATUS := l_curr_instance_rec.CHECKIN_STATUS;
28809 	       ELSE
28810 	          l_new_instance_rec.CHECKIN_STATUS := p_source_instance_rec.CHECKIN_STATUS;
28811 	       END IF;
28812 
28813 	       IF (p_source_instance_rec.SUPPLIER_WARRANTY_EXP_DATE = FND_API.G_MISS_DATE) THEN
28814 		  l_new_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
28815 	       ELSE
28816 	          l_new_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := p_source_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
28817 	       END IF;
28818 
28819 	       IF (p_source_instance_rec.ATTRIBUTE16 = FND_API.G_MISS_CHAR) THEN
28820 	         l_new_instance_rec.ATTRIBUTE16 := l_curr_instance_rec.ATTRIBUTE16;
28821 	       ELSE
28822 	         l_new_instance_rec.ATTRIBUTE16 := p_source_instance_rec.ATTRIBUTE16;
28823 	       END IF;
28824 
28825 	       IF (p_source_instance_rec.ATTRIBUTE17 = FND_API.G_MISS_CHAR) THEN
28826 	          l_new_instance_rec.ATTRIBUTE17 := l_curr_instance_rec.ATTRIBUTE17;
28827 	       ELSE
28828 	          l_new_instance_rec.ATTRIBUTE17 := p_source_instance_rec.ATTRIBUTE17;
28829 	       END IF;
28830 
28831 	       IF (p_source_instance_rec.ATTRIBUTE18 = FND_API.G_MISS_CHAR) THEN
28832 	          l_new_instance_rec.ATTRIBUTE18 := l_curr_instance_rec.ATTRIBUTE18;
28833 	       ELSE
28834 		  l_new_instance_rec.ATTRIBUTE18 := p_source_instance_rec.ATTRIBUTE18;
28835 	       END IF;
28836 
28837 	       IF (p_source_instance_rec.ATTRIBUTE19 = FND_API.G_MISS_CHAR) THEN
28838 		  l_new_instance_rec.ATTRIBUTE19 := l_curr_instance_rec.ATTRIBUTE19;
28839 	       ELSE
28840 	          l_new_instance_rec.ATTRIBUTE19 := p_source_instance_rec.ATTRIBUTE19;
28841 	       END IF;
28842 
28843 	       IF (p_source_instance_rec.ATTRIBUTE20 = FND_API.G_MISS_CHAR) THEN
28844 	           l_new_instance_rec.ATTRIBUTE20 := l_curr_instance_rec.ATTRIBUTE20;
28845 	       ELSE
28846 	           l_new_instance_rec.ATTRIBUTE20 := p_source_instance_rec.ATTRIBUTE20;
28847 	       END IF;
28848 
28849 	       IF (p_source_instance_rec.ATTRIBUTE21 = FND_API.G_MISS_CHAR) THEN
28850 	           l_new_instance_rec.ATTRIBUTE21 := l_curr_instance_rec.ATTRIBUTE21;
28851 	       ELSE
28852 		   l_new_instance_rec.ATTRIBUTE21 := p_source_instance_rec.ATTRIBUTE21;
28853 	       END IF;
28854 
28855 	       IF (p_source_instance_rec.ATTRIBUTE22 = FND_API.G_MISS_CHAR) THEN
28856 	          l_new_instance_rec.ATTRIBUTE22 := l_curr_instance_rec.ATTRIBUTE22;
28857 	       ELSE
28858                   l_new_instance_rec.ATTRIBUTE22 := p_source_instance_rec.ATTRIBUTE22;
28859 	       END IF;
28860 
28861 	       IF (p_source_instance_rec.ATTRIBUTE23 = FND_API.G_MISS_CHAR) THEN
28862 	          l_new_instance_rec.ATTRIBUTE23 := l_curr_instance_rec.ATTRIBUTE23;
28863 	       ELSE
28864 	          l_new_instance_rec.ATTRIBUTE23 := p_source_instance_rec.ATTRIBUTE23;
28865 	       END IF;
28866 
28867 	       IF (p_source_instance_rec.ATTRIBUTE24 = FND_API.G_MISS_CHAR) THEN
28868 	          l_new_instance_rec.ATTRIBUTE24 := l_curr_instance_rec.ATTRIBUTE24;
28869 	       ELSE
28870 	          l_new_instance_rec.ATTRIBUTE24 := p_source_instance_rec.ATTRIBUTE24;
28871 	       END IF;
28872 
28873 	       IF (p_source_instance_rec.ATTRIBUTE25 = FND_API.G_MISS_CHAR) THEN
28874 	           l_new_instance_rec.ATTRIBUTE25 := l_curr_instance_rec.ATTRIBUTE25;
28875 	       ELSE
28876 		   l_new_instance_rec.ATTRIBUTE25 := p_source_instance_rec.ATTRIBUTE25;
28877 	       END IF;
28878 
28879 	       IF (p_source_instance_rec.ATTRIBUTE26 = FND_API.G_MISS_CHAR) THEN
28880 		  l_new_instance_rec.ATTRIBUTE26 := l_curr_instance_rec.ATTRIBUTE26;
28881 	       ELSE
28882 	          l_new_instance_rec.ATTRIBUTE26 := p_source_instance_rec.ATTRIBUTE26;
28883 	       END IF;
28884 
28885 	       IF (p_source_instance_rec.ATTRIBUTE27 = FND_API.G_MISS_CHAR) THEN
28886 		  l_new_instance_rec.ATTRIBUTE27 := l_curr_instance_rec.ATTRIBUTE27;
28887 	       ELSE
28888 	          l_new_instance_rec.ATTRIBUTE27 := p_source_instance_rec.ATTRIBUTE27;
28889 	       END IF;
28890 
28891 	       IF (p_source_instance_rec.ATTRIBUTE28 = FND_API.G_MISS_CHAR) THEN
28892 	          l_new_instance_rec.ATTRIBUTE28 := l_curr_instance_rec.ATTRIBUTE28;
28893 	       ELSE
28894 	          l_new_instance_rec.ATTRIBUTE28 := p_source_instance_rec.ATTRIBUTE28;
28895 	       END IF;
28896 
28897 	       IF (p_source_instance_rec.ATTRIBUTE29 = FND_API.G_MISS_CHAR) THEN
28898 	          l_new_instance_rec.ATTRIBUTE29 := l_curr_instance_rec.ATTRIBUTE29;
28899 	       ELSE
28900 	          l_new_instance_rec.ATTRIBUTE29 := p_source_instance_rec.ATTRIBUTE29;
28901 	       END IF;
28902 
28903 	       IF (p_source_instance_rec.ATTRIBUTE30 = FND_API.G_MISS_CHAR) THEN
28904 	          l_new_instance_rec.ATTRIBUTE30 := l_curr_instance_rec.ATTRIBUTE30;
28905 	       ELSE
28906 	          l_new_instance_rec.ATTRIBUTE30 := p_source_instance_rec.ATTRIBUTE30;
28907 	       END IF;
28908 
28909 	      --end of code for eam integration--
28910 
28911        -- Addition of columns for FA Integration
28912             IF (p_source_instance_rec.PAYABLES_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
28913                 l_new_instance_rec.PAYABLES_UNIT_PRICE      := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
28914             ELSE
28915                 l_new_instance_rec.PAYABLES_UNIT_PRICE      := p_source_instance_rec.PAYABLES_UNIT_PRICE;
28916             END IF;
28917 
28918             IF (p_source_instance_rec.PAYABLES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
28919                 l_new_instance_rec.PAYABLES_CURRENCY_CODE := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
28920             ELSE
28921                 l_new_instance_rec.PAYABLES_CURRENCY_CODE := p_source_instance_rec.PAYABLES_CURRENCY_CODE;
28922             END IF;
28923 
28924             IF (p_source_instance_rec.PURCHASE_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
28925                 l_new_instance_rec.PURCHASE_UNIT_PRICE      := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
28926             ELSE
28927                 l_new_instance_rec.PURCHASE_UNIT_PRICE      := p_source_instance_rec.PURCHASE_UNIT_PRICE;
28928             END IF;
28929 
28930             IF (p_source_instance_rec.PURCHASE_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
28931                 l_new_instance_rec.PURCHASE_CURRENCY_CODE := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
28932             ELSE
28933                 l_new_instance_rec.PURCHASE_CURRENCY_CODE := p_source_instance_rec.PURCHASE_CURRENCY_CODE;
28934             END IF;
28935 
28936             IF (p_source_instance_rec.SALES_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
28937                 l_new_instance_rec.SALES_UNIT_PRICE      := l_curr_instance_rec.SALES_UNIT_PRICE;
28938             ELSE
28939                 l_new_instance_rec.SALES_UNIT_PRICE      := p_source_instance_rec.SALES_UNIT_PRICE;
28940             END IF;
28941 
28942             IF (p_source_instance_rec.SALES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
28943                 l_new_instance_rec.SALES_CURRENCY_CODE := l_curr_instance_rec.SALES_CURRENCY_CODE;
28944             ELSE
28945                 l_new_instance_rec.SALES_CURRENCY_CODE := p_source_instance_rec.SALES_CURRENCY_CODE;
28946             END IF;
28947 
28948             IF (p_source_instance_rec.OPERATIONAL_STATUS_CODE = FND_API.G_MISS_CHAR) THEN
28949                 l_new_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
28950             ELSE
28951                 l_new_instance_rec.OPERATIONAL_STATUS_CODE := p_source_instance_rec.OPERATIONAL_STATUS_CODE;
28952             END IF;
28953         -- End addition of columns for FA Integration
28954      --  Call Create_item_instance to create the new instance in csi_item_instances table.
28955 
28956             CSI_ITEM_INSTANCE_PVT.create_item_instance
28957              (  p_api_version             => p_api_version
28958                 ,p_commit                 => p_commit
28959                 ,p_init_msg_list          => p_init_msg_list
28960                 ,p_validation_level       => p_validation_level
28961                 ,p_instance_rec           => l_new_instance_rec
28962                 ,p_txn_rec                => p_txn_rec
28963                 ,p_party_tbl              => l_party_tbl
28964                 ,p_asset_tbl              => l_asset_tbl
28965                 ,x_return_status          => x_return_status
28966                 ,x_msg_count              => x_msg_count
28967                 ,x_msg_data               => x_msg_data
28968                 ,p_item_attribute_tbl     => l_item_attribute_tbl
28969                 ,p_location_tbl           => l_location_tbl
28970                 ,p_generic_id_tbl         => l_generic_id_tbl
28971                 ,p_lookup_tbl             => l_lookup_tbl
28972                 ,p_ins_count_rec          => l_ins_count_rec
28973              );
28974 
28975                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
28976                   l_msg_index := 1;
28977                   l_msg_count := x_msg_count;
28978                   WHILE l_msg_count > 0 LOOP
28979                        x_msg_data := FND_MSG_PUB.GET
28980                                       (l_msg_index,
28981                                      FND_API.G_FALSE      );
28982 
28983                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
28984                        l_msg_index := l_msg_index + 1;
28985                        l_msg_count := l_msg_count - 1;
28986                   END LOOP;
28987                   RAISE FND_API.G_EXC_ERROR;
28988                 ELSE
28989                    x_new_instance_tbl(1) := l_new_instance_rec;
28990                 END IF;
28991 
28992 
28993           -- Create a party or parties for the new instances
28994 
28995           IF l_party_tbl.COUNT > 0 THEN
28996                 FOR tab_row_party IN l_party_tbl.FIRST .. l_party_tbl.LAST
28997                 LOOP
28998                     IF l_party_tbl.EXISTS(tab_row_party) THEN
28999                        -- Build account query rec
29000                        l_party_account_query_rec.instance_party_id := l_party_tbl(tab_row_party).instance_party_id ;
29001                        l_party_account_query_rec.ip_account_id  := FND_API.G_MISS_NUM;
29002                        l_party_account_query_rec.party_account_id   := FND_API.G_MISS_NUM;
29003                        l_party_account_query_rec.relationship_type_code  := FND_API.G_MISS_CHAR;
29004 
29005                        -- Get party accounts
29006 
29007                        csi_party_relationships_pub.get_inst_party_accounts
29008                           ( p_api_version                 => p_api_version
29009                            ,p_commit                      => p_commit
29010                            ,p_init_msg_list               => p_init_msg_list
29011                            ,p_validation_level            => p_validation_level
29012                            ,p_account_query_rec           => l_party_account_query_rec
29013                            ,p_resolve_id_columns          => fnd_api.g_true
29014                            ,p_time_stamp                  => NULL
29015                            ,x_account_header_tbl          => l_account_header_tbl
29016                            ,x_return_status               => x_return_status
29017                            ,x_msg_count                   => x_msg_count
29018                            ,x_msg_data                    => x_msg_data);
29019 
29020                             IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29021                                l_msg_index := 1;
29022                                l_msg_count := x_msg_count;
29023                                WHILE l_msg_count > 0 LOOP
29024                                     x_msg_data := FND_MSG_PUB.GET
29025                                                    (l_msg_index,
29026                                                   FND_API.G_FALSE      );
29027                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29028                                     l_msg_index := l_msg_index + 1;
29029                                     l_msg_count := l_msg_count - 1;
29030                                END LOOP;
29031                                RAISE FND_API.G_EXC_ERROR;
29032                              END IF;
29033 
29034 
29035                          IF l_account_header_tbl.COUNT > 0 THEN       /***********Second Change 07/27/01 - RK**********/
29036                                  FOR tab_row_party IN l_account_header_tbl.FIRST .. l_account_header_tbl.LAST
29037                                  LOOP
29038                                     IF l_account_header_tbl.EXISTS(tab_row_party) THEN
29039                                       --  Donot copy accounts if user says so
29040                                       IF (p_copy_accounts <> fnd_api.g_true) THEN
29041                                         IF (l_account_header_tbl(tab_row_party).RELATIONSHIP_TYPE_CODE = 'OWNER') THEN
29042                                         l_party_account_tbl(tab_row_party).ip_account_id := l_account_header_tbl(tab_row_party).ip_account_id;
29043                                         l_party_account_tbl(tab_row_party).instance_party_id := l_account_header_tbl(tab_row_party).instance_party_id;
29044                                         l_party_account_tbl(tab_row_party).party_account_id := l_account_header_tbl(tab_row_party).party_account_id;
29045                                         l_party_account_tbl(tab_row_party).relationship_type_code := l_account_header_tbl(tab_row_party).relationship_type_code;
29046                                         l_party_account_tbl(tab_row_party).bill_to_address := l_account_header_tbl(tab_row_party).bill_to_address;
29047                                         l_party_account_tbl(tab_row_party).ship_to_address := l_account_header_tbl(tab_row_party).ship_to_address;
29048                                         l_party_account_tbl(tab_row_party).active_start_date := l_account_header_tbl(tab_row_party).active_start_date;
29049                                         l_party_account_tbl(tab_row_party).active_end_date := l_account_header_tbl(tab_row_party).active_end_date;
29050                                         l_party_account_tbl(tab_row_party).context := l_account_header_tbl(tab_row_party).context;
29051                                         l_party_account_tbl(tab_row_party).attribute1 := l_account_header_tbl(tab_row_party).attribute1;
29052                                         l_party_account_tbl(tab_row_party).attribute2 := l_account_header_tbl(tab_row_party).attribute2;
29053                                         l_party_account_tbl(tab_row_party).attribute3 := l_account_header_tbl(tab_row_party).attribute3;
29054                                         l_party_account_tbl(tab_row_party).attribute4 := l_account_header_tbl(tab_row_party).attribute4;
29055                                         l_party_account_tbl(tab_row_party).attribute5 := l_account_header_tbl(tab_row_party).attribute5;
29056                                         l_party_account_tbl(tab_row_party).attribute6 := l_account_header_tbl(tab_row_party).attribute6;
29057                                         l_party_account_tbl(tab_row_party).attribute7 := l_account_header_tbl(tab_row_party).attribute7;
29058                                         l_party_account_tbl(tab_row_party).attribute8 := l_account_header_tbl(tab_row_party).attribute8;
29059                                         l_party_account_tbl(tab_row_party).attribute9 := l_account_header_tbl(tab_row_party).attribute9;
29060                                         l_party_account_tbl(tab_row_party).attribute10 := l_account_header_tbl(tab_row_party).attribute10;
29061                                         l_party_account_tbl(tab_row_party).attribute11 := l_account_header_tbl(tab_row_party).attribute11;
29062                                         l_party_account_tbl(tab_row_party).attribute12 := l_account_header_tbl(tab_row_party).attribute12;
29063                                         l_party_account_tbl(tab_row_party).attribute13 := l_account_header_tbl(tab_row_party).attribute13;
29064                                         l_party_account_tbl(tab_row_party).attribute14 := l_account_header_tbl(tab_row_party).attribute14;
29065                                         l_party_account_tbl(tab_row_party).attribute15 := l_account_header_tbl(tab_row_party).attribute15;
29066                                         l_party_account_tbl(tab_row_party).object_version_number := l_account_header_tbl(tab_row_party).object_version_number;
29067 
29068                                          END IF;
29069                                        ELSE
29070                                         l_party_account_tbl(tab_row_party).ip_account_id := l_account_header_tbl(tab_row_party).ip_account_id;
29071                                         l_party_account_tbl(tab_row_party).instance_party_id := l_account_header_tbl(tab_row_party).instance_party_id;
29072                                         l_party_account_tbl(tab_row_party).party_account_id := l_account_header_tbl(tab_row_party).party_account_id;
29073                                         l_party_account_tbl(tab_row_party).relationship_type_code := l_account_header_tbl(tab_row_party).relationship_type_code;
29074                                         l_party_account_tbl(tab_row_party).bill_to_address := l_account_header_tbl(tab_row_party).bill_to_address;
29075                                         l_party_account_tbl(tab_row_party).ship_to_address := l_account_header_tbl(tab_row_party).ship_to_address;
29076                                         l_party_account_tbl(tab_row_party).active_start_date := l_account_header_tbl(tab_row_party).active_start_date;
29077                                         l_party_account_tbl(tab_row_party).active_end_date := l_account_header_tbl(tab_row_party).active_end_date;
29078                                         l_party_account_tbl(tab_row_party).context := l_account_header_tbl(tab_row_party).context;
29079                                         l_party_account_tbl(tab_row_party).attribute1 := l_account_header_tbl(tab_row_party).attribute1;
29080                                         l_party_account_tbl(tab_row_party).attribute2 := l_account_header_tbl(tab_row_party).attribute2;
29081                                         l_party_account_tbl(tab_row_party).attribute3 := l_account_header_tbl(tab_row_party).attribute3;
29082                                         l_party_account_tbl(tab_row_party).attribute4 := l_account_header_tbl(tab_row_party).attribute4;
29083                                         l_party_account_tbl(tab_row_party).attribute5 := l_account_header_tbl(tab_row_party).attribute5;
29084                                         l_party_account_tbl(tab_row_party).attribute6 := l_account_header_tbl(tab_row_party).attribute6;
29085                                         l_party_account_tbl(tab_row_party).attribute7 := l_account_header_tbl(tab_row_party).attribute7;
29086                                         l_party_account_tbl(tab_row_party).attribute8 := l_account_header_tbl(tab_row_party).attribute8;
29087                                         l_party_account_tbl(tab_row_party).attribute9 := l_account_header_tbl(tab_row_party).attribute9;
29088                                         l_party_account_tbl(tab_row_party).attribute10 := l_account_header_tbl(tab_row_party).attribute10;
29089                                         l_party_account_tbl(tab_row_party).attribute11 := l_account_header_tbl(tab_row_party).attribute11;
29090                                         l_party_account_tbl(tab_row_party).attribute12 := l_account_header_tbl(tab_row_party).attribute12;
29091                                         l_party_account_tbl(tab_row_party).attribute13 := l_account_header_tbl(tab_row_party).attribute13;
29092                                         l_party_account_tbl(tab_row_party).attribute14 := l_account_header_tbl(tab_row_party).attribute14;
29093                                         l_party_account_tbl(tab_row_party).attribute15 := l_account_header_tbl(tab_row_party).attribute15;
29094                                         l_party_account_tbl(tab_row_party).object_version_number := l_account_header_tbl(tab_row_party).object_version_number;
29095 
29096                                         END IF;
29097                                       END IF;
29098                                  END LOOP;
29099                          END IF; --l_account_header_tbl.COUNT > 0
29100 
29101                     -- Empty the account_header table
29102                        l_account_header_tbl.DELETE;
29103                     -- Build the party table
29104                        l_party_tbl(tab_row_party).instance_party_id             := FND_API.G_MISS_NUM;
29105                        l_party_tbl(tab_row_party).INSTANCE_ID                   := l_new_instance_rec.instance_id;
29106                        l_party_tbl(tab_row_party).ACTIVE_START_DATE             := FND_API.G_MISS_DATE;
29107                        l_party_tbl(tab_row_party).ACTIVE_END_DATE               := FND_API.G_MISS_DATE;
29108                    -- Build the temporary party table with only one record
29109                    -- for and grab all its accounts
29110                        l_party_input_tbl(1) := l_party_tbl(tab_row_party);
29111 
29112 
29113                 -- Build its corresponding accounts
29114 
29115                         IF l_party_account_tbl.COUNT > 0 THEN
29116                             FOR tab_row_acct IN l_party_account_tbl.FIRST .. l_party_account_tbl.LAST
29117                             LOOP
29118                               -- l_party_account_tbl(tab_row_acct).parent_tbl_index := tab_row_party;
29119                                l_party_account_tbl(tab_row_acct).parent_tbl_index := 1;
29120                                l_party_account_tbl(tab_row_acct).ip_account_id  := FND_API.G_MISS_NUM;
29121                                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;
29122                                l_party_account_tbl(tab_row_acct).ACTIVE_START_DATE := FND_API.G_MISS_DATE;
29123                                l_party_account_tbl(tab_row_acct).ACTIVE_END_DATE   := FND_API.G_MISS_DATE;
29124                                l_party_account_tbl(tab_row_acct).call_contracts    := FND_API.G_FALSE; -- Added for 2907563
29125                             END LOOP;
29126                         END IF;
29127                          -- Create instance party relationship and its accounts
29128 
29129                         csi_party_relationships_pub.create_inst_party_relationship
29130                             ( p_api_version                 => p_api_version
29131                              ,p_commit                      => p_commit
29132                              ,p_init_msg_list               => p_init_msg_list
29133                              ,p_validation_level            => p_validation_level
29134                              ,p_party_tbl                   => l_party_input_tbl
29135                              ,p_party_account_tbl           => l_party_account_tbl
29136                              ,p_txn_rec                     => p_txn_rec
29137                              ,p_oks_txn_inst_tbl            => px_oks_txn_inst_tbl
29138                              ,x_return_status               => x_return_status
29139                              ,x_msg_count                   => x_msg_count
29140                              ,x_msg_data                    => x_msg_data
29141                               );
29142 
29143                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29144                                l_msg_index := 1;
29145                                l_msg_count := x_msg_count;
29146                                WHILE l_msg_count > 0 LOOP
29147                                     x_msg_data := FND_MSG_PUB.GET
29148                                                   (l_msg_index,
29149                                                   FND_API.G_FALSE      );
29150 
29151                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29152                                     l_msg_index := l_msg_index + 1;
29153                                     l_msg_count := l_msg_count - 1;
29154                                END LOOP;
29155                                RAISE FND_API.G_EXC_ERROR;
29156                              END IF;
29157                              -- Grab the new parties created in a new table
29158                                l_new_party_tbl(tab_row_party) := l_party_input_tbl(1);
29159                              -- Empty the party table
29160                                l_party_input_tbl.DELETE;
29161                              -- Empty the account table
29162                                l_party_account_tbl.DELETE;
29163 
29164            END IF;
29165           END LOOP;
29166       END IF;
29167 -- ASH
29168 
29169           -- Create a contact or contacts for the new instances
29170       IF  (p_copy_contacts  = fnd_api.g_true) THEN
29171           IF l_contact_tbl.COUNT > 0 THEN
29172                 FOR tab_row_contact IN l_contact_tbl.FIRST .. l_contact_tbl.LAST
29173                 LOOP
29174                     IF l_contact_tbl.EXISTS(tab_row_contact) THEN
29175 
29176                       -- Find the contact_ip_id which was just created
29177                       -- for this contact
29178                        IF (l_original_party_tbl.COUNT > 0) THEN
29179                           FOR tab_row_party IN l_original_party_tbl.FIRST .. l_original_party_tbl.LAST
29180                           LOOP
29181                             IF l_original_party_tbl.EXISTS(tab_row_party) THEN
29182                               IF (l_original_party_tbl(tab_row_party).instance_party_id
29183                                  = l_contact_tbl(tab_row_contact).contact_ip_id )
29184                                 THEN
29185                                  l_contact_tbl(tab_row_contact).contact_ip_id :=
29186                                    l_new_party_tbl(tab_row_party).instance_party_id;
29187                                  l_contact_found_flag := TRUE;
29188                               END IF;
29189                             END IF;
29190                           END LOOP;
29191                        END IF;
29192                     -- Check if the contact_ip_id exists
29193                        IF ((l_contact_tbl(tab_row_contact).contact_ip_id IS NULL) OR
29194                        (l_contact_tbl(tab_row_contact).contact_ip_id
29195                          = FND_API.G_MISS_NUM)
29196                         OR NOT(l_contact_found_flag) ) THEN
29197                            FND_MESSAGE.SET_NAME('CSI','CSI_API_CONTACT_IP_ID_NULL');
29198                            FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',
29199                               l_contact_tbl(tab_row_contact).instance_party_id);
29200                            FND_MSG_PUB.Add;
29201                            RAISE FND_API.G_EXC_ERROR;
29202                        END IF;
29203 
29204                     -- Build other fiels of the contact table
29205                        l_contact_tbl(tab_row_contact).instance_party_id             := FND_API.G_MISS_NUM;
29206                        l_contact_tbl(tab_row_contact).contact_flag   := 'Y';
29207                        l_contact_tbl(tab_row_contact).INSTANCE_ID                   := l_new_instance_rec.instance_id;
29208                        l_contact_tbl(tab_row_contact).ACTIVE_START_DATE             := FND_API.G_MISS_DATE;
29209                        l_contact_tbl(tab_row_contact).ACTIVE_END_DATE               := FND_API.G_MISS_DATE;
29210                    -- Build the temporary party table with only one record
29211                    -- for and grab all its accounts
29212                        l_contact_input_tbl(1) := l_contact_tbl(tab_row_contact);
29213 
29214                          -- Create instance party relationship and its accounts
29215                         csi_party_relationships_pub.create_inst_party_relationship
29216                             ( p_api_version                 => p_api_version
29217                              ,p_commit                      => p_commit
29218                              ,p_init_msg_list               => p_init_msg_list
29219                              ,p_validation_level            => p_validation_level
29220                              ,p_party_tbl                   => l_contact_input_tbl
29221                              ,p_party_account_tbl           => l_contact_account_tbl
29222                              ,p_txn_rec                     => p_txn_rec
29223                              ,p_oks_txn_inst_tbl            => px_oks_txn_inst_tbl
29224                              ,x_return_status               => x_return_status
29225                              ,x_msg_count                   => x_msg_count
29226                              ,x_msg_data                    => x_msg_data
29227                               );
29228                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29229                                l_msg_index := 1;
29230                                l_msg_count := x_msg_count;
29231                                WHILE l_msg_count > 0 LOOP
29232                                     x_msg_data := FND_MSG_PUB.GET
29233                                                    (l_msg_index,
29234                                                   FND_API.G_FALSE      );
29235                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29236                                     l_msg_index := l_msg_index + 1;
29237                                     l_msg_count := l_msg_count - 1;
29238                                END LOOP;
29239                                RAISE FND_API.G_EXC_ERROR;
29240                              END IF;
29241                              -- Grab the new parties created in a new table
29242                                l_new_contact_tbl(tab_row_contact) := l_contact_input_tbl(1);
29243                              -- Empty the party table
29244                                l_contact_input_tbl.DELETE;
29245                              -- Empty the account table
29246                                l_contact_account_tbl.DELETE;
29247                              l_contact_found_flag := FALSE;
29248            END IF;
29249           END LOOP;
29250       END IF;
29251    END IF;
29252        -- Empty the party and contact tables
29253        l_new_contact_tbl.DELETE;
29254        l_new_party_tbl.DELETE;
29255 -- ASH
29256   -- Create asset assignments if requested. Asset assignments have already been fetched before
29257     IF  (p_copy_asset_assignments  = fnd_api.g_true) THEN
29258        IF l_asset_tbl.COUNT > 0 THEN
29259          FOR tab_row IN l_asset_tbl.FIRST .. l_asset_tbl.LAST
29260          LOOP
29261             IF l_asset_tbl.EXISTS(tab_row) THEN
29262                  l_asset_tbl(tab_row).INSTANCE_ID          := l_new_instance_rec.instance_id;
29263                  l_asset_tbl(tab_row).INSTANCE_ASSET_ID   := FND_API.G_MISS_NUM;
29264                  l_asset_tbl(tab_row).ACTIVE_START_DATE    := FND_API.G_MISS_DATE;
29265                  l_asset_tbl(tab_row).ACTIVE_END_DATE      := FND_API.G_MISS_DATE;
29266                  -- Trap the row in a record and create assets row by row
29267                  l_instance_asset_rec := l_asset_tbl(tab_row);
29268                   csi_asset_pvt.create_instance_asset
29269                     ( p_api_version                 => p_api_version
29270                      ,p_commit                      => p_commit
29271                      ,p_init_msg_list               => p_init_msg_list
29272                      ,p_validation_level            => p_validation_level
29273                      ,p_instance_asset_rec          => l_instance_asset_rec
29274                      ,p_txn_rec                     => p_txn_rec
29275                      ,x_return_status               => x_return_status
29276                      ,x_msg_count                   => x_msg_count
29277                      ,x_msg_data                    => x_msg_data
29278                      ,p_lookup_tbl                  => l_asset_lookup_tbl
29279                      ,p_asset_count_rec             => l_asset_count_rec
29280                      ,p_asset_id_tbl                => l_asset_id_tbl
29281                      ,p_asset_loc_tbl               => l_asset_loc_tbl
29282                     );
29283                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29284                                l_msg_index := 1;
29285                                l_msg_count := x_msg_count;
29286                                WHILE l_msg_count > 0 LOOP
29287                                     x_msg_data := FND_MSG_PUB.GET
29288                                                    (l_msg_index,
29289                                                   FND_API.G_FALSE      );
29290                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29291                                     l_msg_index := l_msg_index + 1;
29292                                     l_msg_count := l_msg_count - 1;
29293                                END LOOP;
29294                                RAISE FND_API.G_EXC_ERROR;
29295                              END IF;
29296               END IF;
29297            END LOOP;
29298         END IF;
29299      END IF;
29300    -- Created extended attributes if requested
29301     IF (p_copy_ext_attribs =  fnd_api.g_true) THEN
29302         l_ext_attribs_query_rec.attribute_value_id  := FND_API.G_MISS_NUM;
29303         l_ext_attribs_query_rec.instance_id := l_curr_instance_rec.instance_id;
29304         l_ext_attribs_query_rec.attribute_id := FND_API.G_MISS_NUM;
29305         csi_item_instance_pub.get_extended_attrib_values
29306                (p_api_version            =>  p_api_version
29307                ,p_commit                 => p_commit
29308                ,p_init_msg_list          => p_init_msg_list
29309                ,p_validation_level       => p_validation_level
29310                ,p_ext_attribs_query_rec  => l_ext_attribs_query_rec
29311                ,p_time_stamp             => NULL
29312                ,x_ext_attrib_tbl         => l_ext_attrib_tbl
29313                ,x_ext_attrib_def_tbl     => l_ext_attrib_def_tbl
29314                ,x_return_status          => x_return_status
29315                ,x_msg_count              => x_msg_count
29316                ,x_msg_data               => x_msg_data
29317                );
29318                       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29319                                l_msg_index := 1;
29320                                l_msg_count := x_msg_count;
29321                                WHILE l_msg_count > 0 LOOP
29322                                     x_msg_data := FND_MSG_PUB.GET
29323                                                    (l_msg_index,
29324                                                   FND_API.G_FALSE      );
29325                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29326                                     l_msg_index := l_msg_index + 1;
29327                                     l_msg_count := l_msg_count - 1;
29328                                END LOOP;
29329                                RAISE FND_API.G_EXC_ERROR;
29330                       END IF;
29331       IF l_ext_attrib_tbl.COUNT > 0 THEN
29332          FOR tab_row IN l_ext_attrib_tbl.FIRST .. l_ext_attrib_tbl.LAST
29333          LOOP
29334             IF l_ext_attrib_tbl.EXISTS(tab_row) THEN
29335               IF NOT(csi_Item_Instance_Vld_pvt.get_ext_attrib_level(l_ext_attrib_tbl(tab_row).attribute_id,
29336                                         l_attribute_level ))THEN
29337                  RAISE FND_API.G_EXC_ERROR;
29338               END IF;
29339 
29340               IF (l_attribute_level = 'INSTANCE') THEN
29341                  l_ext_attrib_tbl.DELETE (tab_row);
29342               ELSE
29343                  l_ext_attrib_tbl(tab_row).INSTANCE_ID := l_new_instance_rec.instance_id;
29344                  l_ext_attrib_tbl(tab_row).ATTRIBUTE_VALUE_ID   := FND_API.G_MISS_NUM;
29345                  l_ext_attrib_tbl(tab_row).ACTIVE_START_DATE  := FND_API.G_MISS_DATE;
29346                  l_ext_attrib_tbl(tab_row).ACTIVE_END_DATE  := FND_API.G_MISS_DATE;
29347               END IF;
29348             END IF;
29349          END LOOP;
29350 
29351             -- It is possible that all the extended attributes were set at instance level and thus we have an empty table
29352             IF l_ext_attrib_tbl.COUNT > 0 THEN
29353               csi_item_instance_pub.create_extended_attrib_values
29354               ( p_api_version         => p_api_version
29355                ,p_commit              => p_commit
29356                ,p_init_msg_list       => p_init_msg_list
29357                ,p_validation_level    => p_validation_level
29358                ,p_ext_attrib_tbl      => l_ext_attrib_tbl
29359                ,p_txn_rec             => p_txn_rec
29360                ,x_return_status       => x_return_status
29361                ,x_msg_count           => x_msg_count
29362                ,x_msg_data            => x_msg_data
29363               );
29364 
29365                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29366                                l_msg_index := 1;
29367                                l_msg_count := x_msg_count;
29368                                WHILE l_msg_count > 0 LOOP
29369                                     x_msg_data := FND_MSG_PUB.GET
29370                                                    (l_msg_index,
29371                                                   FND_API.G_FALSE      );
29372                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29373                                     l_msg_index := l_msg_index + 1;
29374                                     l_msg_count := l_msg_count - 1;
29375                                END LOOP;
29376                                RAISE FND_API.G_EXC_ERROR;
29377                              END IF;
29378              END IF;
29379           END IF;
29380        END IF;
29381 
29382     -- Create org assignments if requested
29383     IF (p_copy_org_assignments = fnd_api.g_true) THEN
29384           l_ou_query_rec.instance_ou_id := FND_API.G_MISS_NUM;
29385           l_ou_query_rec.instance_id := l_curr_instance_rec.instance_id;
29386           l_ou_query_rec.operating_unit_id := FND_API.G_MISS_NUM;
29387           l_ou_query_rec.relationship_type_code  := FND_API.G_MISS_CHAR;
29388 
29389             csi_organization_unit_pub.get_organization_unit
29390                (
29391                p_api_version             => p_api_version
29392                ,p_commit                 => p_commit
29393                ,p_init_msg_list          => p_init_msg_list
29394                ,p_validation_level       => p_validation_level
29395                ,p_ou_query_rec           => l_ou_query_rec
29396                ,p_resolve_id_columns     => fnd_api.g_true
29397                ,p_time_stamp             => NULL
29398                ,x_org_unit_tbl           => l_org_unit_header_tbl
29399                ,x_return_status          => x_return_status
29400                ,x_msg_count              => x_msg_count
29401                ,x_msg_data               => x_msg_data
29402                );
29403 
29404                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29405                                l_msg_index := 1;
29406                                l_msg_count := x_msg_count;
29407                                WHILE l_msg_count > 0 LOOP
29408                                     x_msg_data := FND_MSG_PUB.GET
29409                                                   (l_msg_index,
29410                                                   FND_API.G_FALSE      );
29411                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29412                                     l_msg_index := l_msg_index + 1;
29413                                     l_msg_count := l_msg_count - 1;
29414                                END LOOP;
29415                                RAISE FND_API.G_EXC_ERROR;
29416                              END IF;
29417 
29418               IF l_org_unit_header_tbl.COUNT > 0 THEN    /*****First change here 08/25/01 - RK***/
29419                 FOR tab_row_party IN l_org_unit_header_tbl.FIRST .. l_org_unit_header_tbl.LAST
29420                 LOOP
29421                      IF l_org_unit_header_tbl.EXISTS(tab_row_party) THEN
29422                              l_org_unit_tbl(tab_row_party).instance_ou_id := l_org_unit_header_tbl(tab_row_party).instance_ou_id;
29423                              l_org_unit_tbl(tab_row_party).instance_id := l_org_unit_header_tbl(tab_row_party).instance_id;
29424                              l_org_unit_tbl(tab_row_party).operating_unit_id := l_org_unit_header_tbl(tab_row_party).operating_unit_id;
29425                              l_org_unit_tbl(tab_row_party).relationship_type_code := l_org_unit_header_tbl(tab_row_party).relationship_type_code;
29426                              l_org_unit_tbl(tab_row_party).active_start_date := l_org_unit_header_tbl(tab_row_party).active_start_date;
29427                              l_org_unit_tbl(tab_row_party).active_end_date := l_org_unit_header_tbl(tab_row_party).active_end_date;
29428                              l_org_unit_tbl(tab_row_party).context := l_org_unit_header_tbl(tab_row_party).context;
29429                              l_org_unit_tbl(tab_row_party).attribute1 := l_org_unit_header_tbl(tab_row_party).attribute1;
29430                              l_org_unit_tbl(tab_row_party).attribute2 := l_org_unit_header_tbl(tab_row_party).attribute2;
29431                              l_org_unit_tbl(tab_row_party).attribute3 := l_org_unit_header_tbl(tab_row_party).attribute3;
29432                              l_org_unit_tbl(tab_row_party).attribute4 := l_org_unit_header_tbl(tab_row_party).attribute4;
29433                              l_org_unit_tbl(tab_row_party).attribute5 := l_org_unit_header_tbl(tab_row_party).attribute5;
29434                              l_org_unit_tbl(tab_row_party).attribute6 := l_org_unit_header_tbl(tab_row_party).attribute6;
29435                              l_org_unit_tbl(tab_row_party).attribute7 := l_org_unit_header_tbl(tab_row_party).attribute7;
29436                              l_org_unit_tbl(tab_row_party).attribute8 := l_org_unit_header_tbl(tab_row_party).attribute8;
29437                              l_org_unit_tbl(tab_row_party).attribute9 := l_org_unit_header_tbl(tab_row_party).attribute9;
29438                              l_org_unit_tbl(tab_row_party).attribute10 := l_org_unit_header_tbl(tab_row_party).attribute10;
29439                              l_org_unit_tbl(tab_row_party).attribute11 := l_org_unit_header_tbl(tab_row_party).attribute11;
29440                              l_org_unit_tbl(tab_row_party).attribute12 := l_org_unit_header_tbl(tab_row_party).attribute12;
29441                              l_org_unit_tbl(tab_row_party).attribute13 := l_org_unit_header_tbl(tab_row_party).attribute13;
29442                              l_org_unit_tbl(tab_row_party).attribute14 := l_org_unit_header_tbl(tab_row_party).attribute14;
29443                              l_org_unit_tbl(tab_row_party).attribute15 := l_org_unit_header_tbl(tab_row_party).attribute15;
29444                              l_org_unit_tbl(tab_row_party).object_version_number := l_org_unit_header_tbl(tab_row_party).object_version_number;
29445                      END IF;
29446                 END LOOP;
29447              END IF; --l_org_unit_header_tbl.COUNT > 0
29448 
29449      IF l_org_unit_tbl.COUNT > 0 THEN
29450          FOR tab_row IN l_org_unit_tbl.FIRST .. l_org_unit_tbl.LAST
29451          LOOP
29452             IF l_org_unit_tbl.EXISTS(tab_row) THEN
29453                  l_org_unit_tbl(tab_row).INSTANCE_ID        := l_new_instance_rec.instance_id;
29454                  l_org_unit_tbl(tab_row).INSTANCE_OU_ID     := FND_API.G_MISS_NUM;
29455                  l_org_unit_tbl(tab_row).ACTIVE_START_DATE  := FND_API.G_MISS_DATE;
29456                  l_org_unit_tbl(tab_row).ACTIVE_END_DATE    := FND_API.G_MISS_DATE;
29457               END IF;
29458          END LOOP;
29459             csi_organization_unit_pub.create_organization_unit
29460             ( p_api_version       => p_api_version
29461              ,p_commit            => p_commit
29462              ,p_init_msg_list     => p_init_msg_list
29463              ,p_validation_level  => p_validation_level
29464              ,p_org_unit_tbl      => l_org_unit_tbl
29465              ,p_txn_rec           => p_txn_rec
29466              ,x_return_status     => x_return_status
29467              ,x_msg_count         => x_msg_count
29468              ,x_msg_data          => x_msg_data
29469             );
29470 
29471                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29472                                l_msg_index := 1;
29473                                l_msg_count := x_msg_count;
29474                                WHILE l_msg_count > 0 LOOP
29475                                    x_msg_data := FND_MSG_PUB.GET
29476                                                    (l_msg_index,
29477                                                   FND_API.G_FALSE      );
29478 
29479                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29480                                     l_msg_index := l_msg_index + 1;
29481                                     l_msg_count := l_msg_count - 1;
29482                                END LOOP;
29483                                RAISE FND_API.G_EXC_ERROR;
29484                              END IF;
29485          END IF;
29486     END IF;
29487 
29488    -- Create pricing attributes if requested
29489    IF (p_copy_pricing_attribs = fnd_api.g_true) THEN
29490       l_pricing_attribs_query_rec.pricing_attribute_id  := FND_API.G_MISS_NUM;
29491       l_pricing_attribs_query_rec.instance_id           := l_curr_instance_rec.instance_id;
29492        csi_pricing_attribs_pub.get_pricing_attribs
29493             ( p_api_version                 => p_api_version
29494              ,p_commit                      => p_commit
29495              ,p_init_msg_list               => p_init_msg_list
29496              ,p_validation_level            => p_validation_level
29497              ,p_pricing_attribs_query_rec   => l_pricing_attribs_query_rec
29498              ,p_time_stamp                  => NULL
29499              ,x_pricing_attribs_tbl         => l_pricing_attribs_tbl
29500              ,x_return_status               => x_return_status
29501              ,x_msg_count                   => x_msg_count
29502              ,x_msg_data                    => x_msg_data
29503             );
29504 
29505                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29506                                l_msg_index := 1;
29507                                l_msg_count := x_msg_count;
29508                                WHILE l_msg_count > 0 LOOP
29509                                     x_msg_data := FND_MSG_PUB.GET
29510                                                    (l_msg_index,
29511                                                   FND_API.G_FALSE      );
29512                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29513                                     l_msg_index := l_msg_index + 1;
29514                                     l_msg_count := l_msg_count - 1;
29515                                END LOOP;
29516 
29517                                RAISE FND_API.G_EXC_ERROR;
29518                              END IF;
29519      IF l_pricing_attribs_tbl.COUNT > 0 THEN
29520          FOR tab_row IN l_pricing_attribs_tbl.FIRST .. l_pricing_attribs_tbl.LAST
29521          LOOP
29522             IF l_pricing_attribs_tbl.EXISTS(tab_row) THEN
29523                  l_pricing_attribs_tbl(tab_row).INSTANCE_ID            := l_new_instance_rec.instance_id;
29524                  l_pricing_attribs_tbl(tab_row).PRICING_ATTRIBUTE_ID   := FND_API.G_MISS_NUM;
29525                  l_pricing_attribs_tbl(tab_row).ACTIVE_START_DATE      := FND_API.G_MISS_DATE;
29526                  l_pricing_attribs_tbl(tab_row).ACTIVE_END_DATE        := FND_API.G_MISS_DATE;
29527               END IF;
29528          END LOOP;
29529          csi_pricing_attribs_pub.create_pricing_attribs
29530             ( p_api_version                 => p_api_version
29531              ,p_commit                      => p_commit
29532              ,p_init_msg_list               => p_init_msg_list
29533              ,p_validation_level            => p_validation_level
29534              ,p_pricing_attribs_tbl         => l_pricing_attribs_tbl
29535              ,p_txn_rec                     => p_txn_rec
29536              ,x_return_status               => x_return_status
29537              ,x_msg_count                   => x_msg_count
29538              ,x_msg_data                    => x_msg_data
29539             );
29540                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29541                                l_msg_index := 1;
29542                                l_msg_count := x_msg_count;
29543                                WHILE l_msg_count > 0 LOOP
29544                                     x_msg_data := FND_MSG_PUB.GET
29545                                                    (l_msg_index,
29546                                                   FND_API.G_FALSE      );
29547                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
29548                                     l_msg_index := l_msg_index + 1;
29549                                     l_msg_count := l_msg_count - 1;
29550                                END LOOP;
29551                                RAISE FND_API.G_EXC_ERROR;
29552                              END IF;
29553        END IF;
29554    END IF;
29555 
29556 -- Added by rtalluri for Bug: 2420897 on 08/19/02
29557 -- If version label is null, then we need read the the default value from the profile option
29558       IF (p_source_instance_rec.VERSION_LABEL IS NULL ) OR
29559          (p_source_instance_rec.VERSION_LABEL = FND_API.G_MISS_CHAR) THEN
29560           l_version_label := FND_PROFILE.VALUE('CSI_DEFAULT_VERSION_LABEL');
29561            IF  l_version_label IS NULL THEN
29562                FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_VERSION_LABEL');
29563                FND_MSG_PUB.ADD;
29564                RAISE FND_API.G_EXC_ERROR;
29565            ELSE
29566                l_new_instance_rec.version_label := l_version_label;
29567            END IF;
29568       ELSE
29569         l_new_instance_rec.VERSION_LABEL := p_source_instance_rec.VERSION_LABEL;
29570       END IF;
29571 
29572       --Calling the Create Version Label API to associate a version label for an instance created
29573 
29574         l_version_label_rec.instance_id           := l_new_instance_rec.instance_id;
29575         l_version_label_rec.version_label         := l_new_instance_rec.version_label;
29576         l_version_label_rec.date_time_stamp       := SYSDATE;
29577         l_version_label_rec.active_start_date     := l_new_instance_rec.active_start_date;
29578         l_version_label_rec.description           := l_new_instance_rec.version_label_description;
29579 
29580         csi_item_instance_pvt.create_version_label
29581           (
29582            p_api_version         => p_api_version
29583           ,p_commit              => fnd_api.g_false
29584           ,p_init_msg_list       => p_init_msg_list
29585           ,p_validation_level    => p_validation_level
29586           ,p_version_label_rec   => l_version_label_rec
29587           ,p_txn_rec             => p_txn_rec
29588           ,x_return_status       => x_return_status
29589           ,x_msg_count           => x_msg_count
29590           ,x_msg_data            => x_msg_data
29591            );
29592 
29593          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29594               csi_gen_utility_pvt.put_line( ' Error from COPY_SINGLE_ITEM_INSTANCE.CREATE_VERSION_LABEL..');
29595               csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
29596               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_CREATE_VERSION');
29597               FND_MESSAGE.SET_TOKEN('API_ERROR','CREATE_VERSION_LABEL');
29598               FND_MSG_PUB.Add;
29599               RAISE FND_API.G_EXC_ERROR;
29600          END IF;
29601 -- End of Addition by rtalluri for Bug: 2420897 on 08/19/02
29602 
29603       IF p_call_from_split = fnd_api.g_false
29604       THEN
29605           -- Added by sk for fixing the bug 2234365
29606            IF x_new_instance_tbl(1).instance_id IS NOT NULL AND
29607               x_new_instance_tbl(1).instance_id <> fnd_api.g_miss_num
29608            THEN
29609                   -- Added by sk for fixing bug 2245976
29610                   IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
29611                      csi_gen_utility_pvt.populate_install_param_rec;
29612                   END IF;
29613                   --
29614                   l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
29615                   --
29616                   IF l_internal_party_id IS NULL THEN
29617                      FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
29618                      FND_MSG_PUB.ADD;
29619                      RAISE FND_API.G_EXC_ERROR;
29620                   END IF;
29621                   --
29622                   BEGIN
29623                       SELECT cip.party_id
29624                       INTO   l_party_id
29625                       FROM   csi_i_parties cip
29626                       WHERE  cip.instance_id = x_new_instance_tbl(1).instance_id
29627                       AND    cip.relationship_type_code = 'OWNER';
29628                  EXCEPTION
29629                    WHEN OTHERS THEN
29630                     l_party_id := NULL;
29631                    END;
29632 
29633                    IF l_party_id IS NOT NULL AND
29634                       l_internal_party_id IS NOT NULL AND
29635                       l_party_id <> l_internal_party_id
29636                    THEN
29637                       -- End addition by sk for fixing bug 2245976
29638                       csi_item_instance_pvt.Call_to_Contracts(
29639                               p_transaction_type   =>   'NEW'
29640                              ,p_instance_id        =>   x_new_instance_tbl(1).instance_id
29641                              ,p_new_instance_id    =>   NULL
29642                              ,p_vld_org_id         =>   x_new_instance_tbl(1).vld_organization_id
29643                              ,p_quantity           =>   NULL
29644                              ,p_party_account_id1  =>   NULL
29645                              ,p_party_account_id2  =>   NULL
29646                              ,p_call_from_bom_expl =>   p_call_from_bom_expl
29647                              ,p_transaction_date   =>   p_txn_rec.transaction_date -- For 3483763
29648                              ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- For 3483763
29649                              ,p_oks_txn_inst_tbl   =>   px_oks_txn_inst_tbl
29650                              ,x_return_status      =>   x_return_status
29651                              ,x_msg_count          =>   x_msg_count
29652                              ,x_msg_data           =>   x_msg_data
29653                               );
29654 
29655                       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
29656                       THEN
29657                          l_msg_index := 1;
29658                          l_msg_count := x_msg_count;
29659                          WHILE l_msg_count > 0 LOOP
29660                            x_msg_data := FND_MSG_PUB.GET
29661                                    (  l_msg_index,
29662                                       FND_API.G_FALSE
29663                                     );
29664                            csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
29665                            l_msg_index := l_msg_index + 1;
29666                            l_msg_count := l_msg_count - 1;
29667                          END LOOP;
29668                          RAISE FND_API.G_EXC_ERROR;
29669                       END IF;
29670                       --
29671 		      IF px_oks_txn_inst_tbl.count > 0 THEN
29672 			 csi_gen_utility_pvt.dump_oks_txn_inst_tbl(px_oks_txn_inst_tbl);
29673 			 csi_gen_utility_pvt.put_line('Calling OKS Core API...');
29674 			 --
29675 			 IF p_txn_rec.transaction_type_id = 3 THEN
29676 			    l_batch_id := p_txn_rec.source_header_ref_id;
29677 			    l_batch_type := p_txn_rec.source_group_ref;
29678 			 ELSE
29679 			    l_batch_id := NULL;
29680 			    l_batch_type := NULL;
29681 			 END IF;
29682 			 --
29683                          UPDATE CSI_TRANSACTIONS
29684                          set contracts_invoked = 'Y'
29685                          where transaction_id = p_txn_rec.transaction_id;
29686                          --
29687 			 OKS_IBINT_PUB.IB_interface
29688 			    (
29689 			      P_Api_Version           =>  1.0,
29690 			      P_init_msg_list         =>  p_init_msg_list,
29691 			      P_single_txn_date_flag  =>  'Y',
29692 			      P_Batch_type            =>  l_batch_type,
29693 			      P_Batch_ID              =>  l_batch_id,
29694 			      P_OKS_Txn_Inst_tbl      =>  px_oks_txn_inst_tbl,
29695 			      x_return_status         =>  x_return_status,
29696 			      x_msg_count             =>  x_msg_count,
29697 			      x_msg_data              =>  x_msg_data
29698 			   );
29699 			 --
29700 			 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
29701 			    l_msg_index := 1;
29702 			    l_msg_count := x_msg_count;
29703 			    WHILE l_msg_count > 0 LOOP
29704 			       x_msg_data := FND_MSG_PUB.GET
29705 				       (  l_msg_index,
29706 					  FND_API.G_FALSE        );
29707 			       csi_gen_utility_pvt.put_line( 'Error from OKS_IBINT_PUB.IB_interface..');
29708 			       csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
29709 			       l_msg_index := l_msg_index + 1;
29710 			       l_msg_count := l_msg_count - 1;
29711 			    END LOOP;
29712 			    RAISE FND_API.G_EXC_ERROR;
29713 			 END IF;
29714 		      END IF;
29715                    END IF;
29716            END IF;
29717           -- End Addition by sk for fixing the bug 2234365
29718       END IF;
29719     -- End of API body
29720           -- Standard check of p_commit
29721        IF FND_API.To_Boolean( p_commit ) THEN
29722                COMMIT WORK;
29723        END IF;
29724           -- Standard call to get message count and if count is  get message info.
29725           FND_MSG_PUB.Count_And_Get
29726           (p_encoded => FND_API.G_FALSE,
29727                  p_count       =>       x_msg_count ,
29728          p_data       =>       x_msg_data
29729            );
29730 EXCEPTION
29731     WHEN FND_API.G_EXC_ERROR THEN
29732             ROLLBACK TO copy_single_item_instance;
29733             x_return_status := FND_API.G_RET_STS_ERROR ;
29734             FND_MSG_PUB.Count_And_Get
29735                 (      p_encoded => FND_API.G_FALSE,
29736                    p_count               =>      x_msg_count,
29737                     p_data                =>      x_msg_data
29738                  );
29739       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
29740             ROLLBACK TO copy_single_item_instance;
29741             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
29742             FND_MSG_PUB.Count_And_Get
29743                 (     p_encoded => FND_API.G_FALSE,
29744                     p_count               =>      x_msg_count,
29745                     p_data                =>      x_msg_data
29746                  );
29747 
29748       WHEN OTHERS THEN
29749             ROLLBACK TO  copy_single_item_instance;
29750             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
29751               IF       FND_MSG_PUB.Check_Msg_Level
29752                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
29753             THEN
29754                     FND_MSG_PUB.Add_Exc_Msg
29755                     (      G_PKG_NAME            ,
29756                           l_api_name
29757                      );
29758             END IF;
29759             FND_MSG_PUB.Count_And_Get
29760                 (     p_encoded => FND_API.G_FALSE,
29761                     p_count               =>      x_msg_count,
29762                     p_data                =>      x_msg_data
29763                 );
29764 END  copy_single_item_instance;
29765 --
29766 /*---------------------------------------------------------*/
29767 /* Procedure name:  Explode_Bom                            */
29768 /* Description :    This procudure explodes the BOM and    */
29769 /*                  creates instances and relationships    */
29770 /* Author      :    Srinivasan Ramakrishnan                */
29771 /*---------------------------------------------------------*/
29772 PROCEDURE Explode_Bom
29773  (
29774    p_api_version            IN     NUMBER
29775   ,p_commit                 IN     VARCHAR2
29776   ,p_init_msg_list          IN     VARCHAR2
29777   ,p_validation_level       IN     NUMBER
29778   ,p_source_instance_rec    IN     csi_datastructures_pub.instance_rec
29779   ,p_explosion_level        IN     NUMBER
29780   ,p_item_tbl               OUT    NOCOPY csi_datastructures_pub.instance_tbl
29781   ,p_item_relation_tbl      OUT    NOCOPY csi_datastructures_pub.ii_relationship_tbl
29782   ,p_create_instance        IN     VARCHAR2
29783   ,p_txn_rec                IN OUT NOCOPY csi_datastructures_pub.transaction_rec
29784   ,x_return_status          OUT    NOCOPY VARCHAR2
29785   ,x_msg_count              OUT    NOCOPY NUMBER
29786   ,x_msg_data               OUT    NOCOPY VARCHAR2
29787  )
29788 IS
29789    --
29790    l_api_name                    CONSTANT VARCHAR2(30) := 'explode_bom';
29791    l_api_version                 CONSTANT NUMBER      := 1.0;
29792    l_debug_level                 NUMBER;
29793    l_dump_frequency_flag         VARCHAR2(30);
29794    l_msg_index                   NUMBER;
29795    l_msg_count                   NUMBER;
29796    l_err_msg                     VARCHAR2(2000) := NULL;
29797    l_error_code                  VARCHAR2(30) := NULL;
29798    l_group_id                    NUMBER;
29799    l_session_id                  NUMBER := 0;
29800    l_parent_child_tbl            csi_item_instance_pvt.parent_child_tbl;
29801    l_parent_count                NUMBER := 0;
29802    l_per_parent                  NUMBER := 0;
29803    l_temp_per_parent             NUMBER := 0;
29804    l_csi_explode_bom             VARCHAR2(30)  := fnd_profile.value('CSI_EXPLODE_BOM');
29805    l_csi_bom_explosion_level     NUMBER;
29806    l_ins_count                   NUMBER := 0;
29807    l_curr_parent                 VARCHAR2(240);
29808    x_ins_tbl                     csi_datastructures_pub.instance_tbl;
29809    x_rel_tbl                     csi_datastructures_pub.ii_relationship_tbl;
29810    l_source_instance_rec         csi_datastructures_pub.instance_rec;
29811    x_new_ins_tbl                 csi_datastructures_pub.instance_tbl;
29812    l_init_source_instance_rec    csi_datastructures_pub.instance_rec;
29813    l_rel_count                   NUMBER := 0;
29814    l_count                       NUMBER;
29815    l_prev_parent                 VARCHAR2(240);
29816    l_prev_child                  VARCHAR2(240);
29817    l_split_qty                   NUMBER;
29818    l_master_organization_id      NUMBER;
29819    x_msg_index_out               NUMBER;
29820    l_child_expl_level            NUMBER;
29821    l_init_sort_code              VARCHAR2(2000);
29822    l_bom_sortcode_width          NUMBER := Bom_Common_Definitions.G_Bom_SortCode_Width;
29823    l_bom_sort_order_tbl          csi_item_instance_pvt.bom_sort_order_tbl;
29824    l_bom_expl_org_flag                   VARCHAR2(3);
29825    --
29826    CURSOR BOM_CSR (p_group_id NUMBER)
29827    IS
29828    SELECT bom.assembly_item_id parent_item_id
29829 	 ,bet.component_item_id component_item_id
29830 	 ,bet.organization_id organization_id
29831 	 ,bet.component_quantity component_quantity
29832 	 ,bet.extended_quantity extended_quantity
29833          ,bet.plan_level plan_level
29834 	 ,substr(bet.sort_order,1,(length(sort_order)-l_bom_sortcode_width)) parent_sort_order
29835 	 ,bet.sort_order child_sort_order
29836 	 ,msi.serial_number_control_code serial_number_control_code
29837 	 ,msi.primary_uom_code primary_uom_code
29838 	 ,mp.master_organization_id master_organization_id
29839    FROM bom_small_expl_temp bet
29840        ,bom_bill_of_materials bom
29841        ,mtl_system_items msi
29842        ,mtl_system_items msip
29843        ,mtl_parameters mp
29844    WHERE    bet.group_id = p_group_id
29845    AND      bet.plan_level > 0               -- Ignore Top Most
29846    AND      bet.component_item_id = msi.inventory_item_id
29847    AND      bet.organization_id = msi.organization_id
29848    AND      bet.bill_sequence_id = bom.bill_sequence_id
29849    AND      bet.extended_quantity > 0
29850    AND      bom.assembly_item_id = msip.inventory_item_id
29851    AND      bom.organization_id = msip.organization_id
29852    AND      msi.organization_id = mp.organization_id
29853    ORDER BY bet.sort_order;
29854 BEGIN
29855     -- Standard Start of API savepoint
29856     SAVEPOINT      explode_bom;
29857     -- Standard call to check for call compatibility.
29858     IF NOT FND_API.Compatible_API_Call (l_api_version,
29859                                         p_api_version,
29860                                         l_api_name ,
29861                                         G_PKG_NAME)
29862     THEN
29863        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
29864     END IF;
29865     -- Initialize message list if p_init_msg_list is set to TRUE.
29866     IF FND_API.to_Boolean( p_init_msg_list ) THEN
29867        FND_MSG_PUB.initialize;
29868     END IF;
29869     --  Initialize API return status to success
29870     x_return_status := FND_API.G_RET_STS_SUCCESS;
29871     -- Check the profile option debug_level for debug message reporting
29872     l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
29873     -- If debug_level = 1 then dump the procedure name
29874     IF (l_debug_level > 0) THEN
29875         csi_gen_utility_pvt.put_line( 'explode_bom');
29876     END IF;
29877     -- If the debug level = 2 then dump all the parameters values.
29878     IF (l_debug_level > 1) THEN
29879             csi_gen_utility_pvt.put_line('explode_standard_bom'||'-'
29880                            || p_api_version  ||'-'
29881                            || p_commit       ||'-'
29882                            || p_init_msg_list ||'-'
29883                            || p_validation_level ||'-'
29884                            || p_explosion_level);
29885      -- Dump item instanc rec
29886          csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
29887     END IF;
29888     -- Start API body
29889     -- Bug 10285807
29890     -- Fetch profile CSI_BOM_EXPLOSION_ORG
29891     -- If Y => Shipping/Warehouse Org will be used for BOM child component
29892     -- validation and creation
29893     -- If N => Item validation Org will be used for BOM child component
29894     -- validation and creation
29895     l_bom_expl_org_flag := nvl(FND_PROFILE.VALUE('CSI_BOM_EXPLOSION_ORG'), 'N');
29896     csi_gen_utility_pvt.put_line('l_bom_expl_org_flag - ' || l_bom_expl_org_flag);
29897 
29898     IF l_csi_explode_bom  = 'Y' THEN
29899        -- Verify if the a Valid item and Org id is being passed
29900        IF NOT(csi_Item_Instance_Vld_pvt.val_item_org
29901                                   ( p_source_instance_rec.INVENTORY_ITEM_ID,
29902                                     p_source_instance_rec.VLD_ORGANIZATION_ID)) THEN
29903           RAISE FND_API.G_EXC_ERROR;
29904        END IF;
29905        -- Verify if the a Valid bom and Org id is being passed
29906        IF NOT(csi_Item_Instance_Vld_pvt.val_bom_org
29907                           ( p_source_instance_rec.INVENTORY_ITEM_ID,
29908                             p_source_instance_rec.VLD_ORGANIZATION_ID)) THEN
29909           RAISE FND_API.G_EXC_ERROR;
29910        END IF;
29911        -- Verify instance quantity
29912        IF ((p_source_instance_rec.QUANTITY IS NULL)
29913              OR (p_source_instance_rec.QUANTITY = FND_API.G_MISS_NUM )
29914              OR (p_source_instance_rec.QUANTITY <> 1)) THEN
29915           FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_QUANTITY');
29916           FND_MESSAGE.SET_TOKEN('QUANTITY',p_source_instance_rec.QUANTITY);
29917           FND_MSG_PUB.Add;
29918           RAISE FND_API.G_EXC_ERROR;
29919        END IF;
29920        -- Verify the Passed Inventory Item is Trackable
29921        -- Get the Master Organization ID
29922        BEGIN
29923           select master_organization_id
29924           into l_master_organization_id
29925           from MTL_PARAMETERS
29926           where organization_id = p_source_instance_rec.VLD_ORGANIZATION_ID;
29927        EXCEPTION
29928           when others then
29929              csi_gen_utility_pvt.put_line('Unable to get the Master organization ID for '
29930                                           ||to_char(p_source_instance_rec.VLD_ORGANIZATION_ID));
29931 	     RAISE FND_API.G_EXC_ERROR;
29932        END;
29933        --
29934        IF NOT csi_item_instance_vld_pvt.Is_Trackable
29935                        (p_inv_item_id => p_source_instance_rec.INVENTORY_ITEM_ID,
29936                         p_org_id => l_master_organization_id) THEN
29937           csi_gen_utility_pvt.put_line('Passed Inventory Item is not Trackable..');
29938           RAISE FND_API.G_EXC_ERROR;
29939        END IF;
29940        -- Instance_id should be passed if Instance needs to be created for the Exploded Items
29941        --
29942        IF p_create_instance = FND_API.G_TRUE THEN
29943           IF (p_source_instance_rec.instance_id IS NULL) OR
29944 	         (p_source_instance_rec.instance_id = FND_API.G_MISS_NUM) THEN
29945 	   	     FND_MESSAGE.SET_NAME('CSI','CSI_API_INSTANCE_ID_NULL');
29946 		     FND_MSG_PUB.Add;
29947 	   	     RAISE FND_API.G_EXC_ERROR;
29948           END IF;
29949 	     --
29950           -- Verify if configruation has been exploded before
29951           IF (csi_Item_Instance_Vld_pvt.Is_config_exploded
29952              ( p_source_instance_rec.INSTANCE_ID)) THEN
29953 	     csi_gen_utility_pvt.put_line('Configuration already Exploded');
29954              RAISE FND_API.G_EXC_ERROR;
29955           END IF;
29956        END IF;
29957        --
29958        IF p_explosion_level IS NULL OR
29959           p_explosion_level = FND_API.G_MISS_NUM THEN
29960           l_csi_bom_explosion_level := to_number(fnd_profile.value('CSI_BOM_EXPLOSION_LEVEL'));
29961        ELSE
29962           l_csi_bom_explosion_level := p_explosion_level;
29963        END IF;
29964        --
29965        SELECT Bom_Explosion_Temp_S.NextVal
29966        INTO   l_group_id
29967        FROM   sys.dual;
29968        --
29969        Bompxinq.Exploder_Userexit
29970          (
29971 	   grp_id            => l_group_id,
29972 	   org_id            => p_source_instance_rec.VLD_ORGANIZATION_ID,
29973 	   item_id           => p_source_instance_rec.INVENTORY_ITEM_ID,
29974 	   unit_number_from  => '',
29975 	   unit_number_to    => '',
29976 	   levels_to_explode => l_csi_bom_explosion_level,
29977 	   expl_qty          => 1,
29978 	   show_rev          => 1,
29979 	   material_ctrl     => 1,
29980 	   err_msg           => l_err_msg,
29981 	   error_code        => l_error_code
29982         );
29983         --
29984         IF l_Error_Code <> 0 THEN
29985       	   csi_gen_utility_pvt.put_line (' Bom explosion error code <> 0 '|| l_Error_Code ||'  '||l_err_msg);
29986 	   IF l_Error_Code < 0 THEN
29987 	      csi_gen_utility_pvt.put_line (' Bom explosion error code > 0 '|| l_Error_Code ||'  '||l_err_msg);
29988 	   ELSIF l_Error_Code > 0 THEN
29989 	      csi_gen_utility_pvt.put_line (' Bom explosion error code < 0'|| l_Error_Code ||'  '||l_err_msg);
29990 	   END IF;
29991        FND_MESSAGE.SET_NAME('CSI','CSI_API_CORE_BOM_EXPL_ERROR');
29992 	   FND_MSG_PUB.Add;
29993 	   RAISE FND_API.G_EXC_ERROR;
29994        END IF; -- error
29995        --
29996        l_init_sort_code := Bom_Common_Definitions.get_initial_sort_code;
29997        --
29998        -- Loop thru' the cursor and create the Parent_child_tbl
29999        csi_gen_utility_pvt.put_line('Start of BOM Explosion..');
30000        For v_rec in BOM_CSR(l_group_id)
30001        Loop
30002           l_parent_count := l_parent_count + 1;
30003 	  l_parent_child_tbl(l_parent_count).parent_sort_order := v_rec.parent_sort_order;
30004 	  l_parent_child_tbl(l_parent_count).child_sort_order := v_rec.child_sort_order;
30005        End Loop;
30006        --
30007        l_ins_count := 0;
30008        l_prev_parent := l_init_sort_code;  -- By default this will be Top Most Parent
30009        --
30010        For v_rec in BOM_CSR(l_group_id)
30011        Loop
30012           IF csi_Item_Instance_Vld_pvt.Is_Trackable
30013                            (p_inv_item_id => v_rec.component_item_id,
30014                             p_org_id => v_rec.master_organization_id,
30015                             p_stack_err_msg => FALSE) THEN
30016 	     --
30017 	     -- Check whether parent is trackable or not
30018 	     l_curr_parent := v_rec.parent_sort_order;
30019 	     IF l_curr_parent <> l_init_sort_code THEN -- no need for Top Most
30020 	        -- Get the immediate Trackable Parent
30021 	        csi_item_instance_pvt.Get_parent_sort_order
30022 		      (
30023 		        p_parent_sort_order   => l_curr_parent
30024                        ,p_parent_child_tbl    => l_parent_child_tbl
30025 		       ,p_bom_sort_order_tbl  => l_bom_sort_order_tbl
30026                      );
30027              END IF;
30028 	     --
30029              -- Since the Max level is determined by the parameter p_explosion_level, any sub-assembly
30030              -- will be exploded only to the remaining level.
30031              l_child_expl_level := l_csi_bom_explosion_level - v_rec.plan_level;
30032              --
30033 	     IF ( (v_rec.serial_number_control_code in (2,5,6)) OR
30034                    ((csi_item_instance_pvt.Is_Parent(p_child_sort_order => v_rec.child_sort_order
30035 	                                            ,p_parent_child_tbl => l_parent_child_tbl)) AND
30036                      -- Check for Trackable component under this
30037                      (csi_item_instance_pvt.Has_Trackable_Component
30038                                              (p_inventory_item_id => v_rec.component_item_id
30039                                              ,p_organization_id => v_rec.organization_id
30040                                              ,p_explosion_level => l_child_expl_level))) ) THEN
30041 	        For i in 1..v_rec.extended_quantity
30042 	        Loop
30043 	           l_ins_count := l_ins_count + 1;
30044 	           x_ins_tbl(l_ins_count).inventory_item_id := v_rec.component_item_id;
30045 	           x_ins_tbl(l_ins_count).quantity := 1;
30046 	           x_ins_tbl(l_ins_count).mfg_serial_number_flag := 'N';
30047                    x_ins_tbl(l_ins_count).unit_of_measure := v_rec.primary_uom_code;
30048                    x_ins_tbl(l_ins_count).lot_number := NULL;
30049 	           x_ins_tbl(l_ins_count).instance_usage_code := NULL;
30050               -- Bug 10285807
30051               x_ins_tbl(l_ins_count).VLD_ORGANIZATION_ID := v_rec.organization_id;
30052 	          -- x_ins_tbl(l_ins_count).ATTRIBUTE12 := l_curr_parent;
30053 	          -- x_ins_tbl(l_ins_count).ATTRIBUTE13 := v_rec.child_sort_order;
30054 	          -- x_ins_tbl(l_ins_count).ATTRIBUTE14 := 'N'; -- Mark_flag
30055 	          -- x_ins_tbl(l_ins_count).ATTRIBUTE15 := to_char(v_rec.extended_quantity); -- child occurance
30056                   l_bom_sort_order_tbl(l_ins_count).parent_sort_order := l_curr_parent;
30057                   l_bom_sort_order_tbl(l_ins_count).child_sort_order := v_rec.child_sort_order;
30058                   l_bom_sort_order_tbl(l_ins_count).mark_flag := 'N';
30059                   l_bom_sort_order_tbl(l_ins_count).child_occurance := v_rec.extended_quantity;
30060 	        End Loop;
30061 	     ELSE
30062 		l_count := 0;
30063                 IF l_bom_sort_order_tbl.count > 0 THEN
30064 		   For ins_row in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
30065 		   Loop
30066 		      IF l_curr_parent = l_bom_sort_order_tbl(ins_row).child_sort_order then -- Getting the parent existance
30067 		         l_count := l_bom_sort_order_tbl(ins_row).child_occurance;
30068 		         EXIT;
30069 		      END IF;
30070 		   End Loop;
30071                 END IF;
30072 		--
30073 		IF l_count > 0 THEN
30074 		   l_split_qty := v_rec.extended_quantity/l_count;
30075 		   For j in 1..l_count
30076 		   Loop
30077 		      l_ins_count := l_ins_count + 1;
30078 		      x_ins_tbl(l_ins_count).inventory_item_id := v_rec.component_item_id;
30079 		      x_ins_tbl(l_ins_count).quantity := l_split_qty;
30080 		      x_ins_tbl(l_ins_count).mfg_serial_number_flag := 'N';
30081                       x_ins_tbl(l_ins_count).unit_of_measure := v_rec.primary_uom_code;
30082                       x_ins_tbl(l_ins_count).lot_number := NULL;
30083 		      x_ins_tbl(l_ins_count).instance_usage_code := NULL;
30084             -- Bug 10285807
30085             x_ins_tbl(l_ins_count).VLD_ORGANIZATION_ID := v_rec.organization_id;
30086 		    --  x_ins_tbl(l_ins_count).ATTRIBUTE12 := l_curr_parent;
30087 		    --  x_ins_tbl(l_ins_count).ATTRIBUTE13 := v_rec.child_sort_order;
30088 		    --  x_ins_tbl(l_ins_count).ATTRIBUTE14 := 'N'; -- Mark_flag
30089 		    --  x_ins_tbl(l_ins_count).ATTRIBUTE15 := to_char(l_count); -- # of child occurance
30090                       l_bom_sort_order_tbl(l_ins_count).parent_sort_order := l_curr_parent;
30091                       l_bom_sort_order_tbl(l_ins_count).child_sort_order := v_rec.child_sort_order;
30092                       l_bom_sort_order_tbl(l_ins_count).mark_flag := 'N';
30093                       l_bom_sort_order_tbl(l_ins_count).child_occurance := l_count;
30094 		   End Loop;
30095 		ELSE
30096 		   l_ins_count := l_ins_count + 1;
30097 		   x_ins_tbl(l_ins_count).inventory_item_id := v_rec.component_item_id;
30098 		   x_ins_tbl(l_ins_count).quantity := v_rec.extended_quantity;
30099 		   x_ins_tbl(l_ins_count).mfg_serial_number_flag := 'N';
30100                    x_ins_tbl(l_ins_count).unit_of_measure := v_rec.primary_uom_code;
30101                    x_ins_tbl(l_ins_count).lot_number := NULL;
30102 		   x_ins_tbl(l_ins_count).instance_usage_code := NULL;
30103           -- Bug 10285807
30104           x_ins_tbl(l_ins_count).VLD_ORGANIZATION_ID := v_rec.organization_id;
30105 		  -- x_ins_tbl(l_ins_count).ATTRIBUTE12 := l_curr_parent;
30106 		  -- x_ins_tbl(l_ins_count).ATTRIBUTE13 := v_rec.child_sort_order;
30107 		  -- x_ins_tbl(l_ins_count).ATTRIBUTE14 := 'N'; -- Mark_flag
30108 		  -- x_ins_tbl(l_ins_count).ATTRIBUTE15 := to_char(1); -- # of child occurance
30109                    l_bom_sort_order_tbl(l_ins_count).parent_sort_order := l_curr_parent;
30110                    l_bom_sort_order_tbl(l_ins_count).child_sort_order := v_rec.child_sort_order;
30111                    l_bom_sort_order_tbl(l_ins_count).mark_flag := 'N';
30112                    l_bom_sort_order_tbl(l_ins_count).child_occurance := 1;
30113 		END IF;
30114 	     END IF;
30115 	  END IF;
30116        End Loop;
30117        -- Loop thru' the x_ins_tbl and create the x_rel_tbl
30118        -- x_ins_tbl and l_bom_sort_order_tbl are one-to-one. Since the sort order width is more
30119        -- and we can't accomodate in the ATTRIBUTE column, the new tbl has been created.
30120        l_rel_count := 0;
30121        l_prev_parent := l_init_sort_code;
30122        l_prev_child := l_init_sort_code;
30123        IF x_ins_tbl.count > 0 THEN
30124           For ins_tab in x_ins_tbl.FIRST .. x_ins_tbl.LAST
30125 	  Loop
30126 	     IF l_bom_sort_order_tbl(ins_tab).parent_sort_order = l_init_sort_code THEN   -- TOP MOST
30127 	        l_rel_count := l_rel_count + 1;
30128 		x_rel_tbl(l_rel_count).subject_id := ins_tab;
30129 		x_rel_tbl(l_rel_count).object_id := 0; -- Change this to Passed Instance ID for Ins creation
30130 		x_rel_tbl(l_rel_count).relationship_type_code := 'COMPONENT-OF';
30131 		l_prev_parent := l_init_sort_code;
30132 		l_prev_child := l_bom_sort_order_tbl(ins_tab).child_sort_order;
30133 	     ELSE
30134 	        IF l_bom_sort_order_tbl(ins_tab).parent_sort_order = l_prev_parent AND
30135 		   l_bom_sort_order_tbl(ins_tab).child_sort_order = l_prev_child THEN
30136 		   l_rel_count := l_rel_count + 1;
30137 		   x_rel_tbl(l_rel_count).subject_id := ins_tab;
30138 		   x_rel_tbl(l_rel_count).relationship_type_code := 'COMPONENT-OF';
30139 		   For assign_count in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
30140 		   Loop
30141 		      IF l_bom_sort_order_tbl(ins_tab).parent_sort_order =
30142                               l_bom_sort_order_tbl(assign_count).child_sort_order AND
30143 			 l_bom_sort_order_tbl(assign_count).mark_flag = 'N' THEN
30144 			 x_rel_tbl(l_rel_count).object_id := assign_count;
30145 			 l_prev_parent := l_bom_sort_order_tbl(ins_tab).parent_sort_order;
30146 			 l_prev_child := l_bom_sort_order_tbl(ins_tab).child_sort_order;
30147 			 l_temp_per_parent := l_temp_per_parent - 1;
30148 			 IF l_temp_per_parent = 0 THEN
30149 			    l_bom_sort_order_tbl(assign_count).mark_flag := 'Y'; -- Mark
30150 			    l_temp_per_parent := l_per_parent;
30151 			 END IF;
30152 			 EXIT;
30153 		      END IF;
30154 		   End Loop;
30155 		   --
30156 		ELSE -- New Parent Child combination
30157 		   l_parent_count := 0;
30158 		   For par_row in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
30159 		   Loop
30160 		      -- At the end of this loop, l_parent_count will have the # of occurance of
30161 		      -- the current instance's parent as a child in INS_TBL.
30162 		      IF l_bom_sort_order_tbl(par_row).child_sort_order = l_bom_sort_order_tbl(ins_tab).parent_sort_order THEN
30163 			 l_parent_count := l_bom_sort_order_tbl(par_row).child_occurance;
30164 			 l_bom_sort_order_tbl(par_row).mark_flag := 'N';
30165 			 -- Even though the occurance value will be same in all the above cases,
30166 			 -- we just make use of this loop to assign the mark_flag to put back 'N'
30167 		      END IF;
30168 		   End Loop;
30169 		   --
30170 		   IF l_parent_count > 0 THEN
30171 		      l_per_parent := l_bom_sort_order_tbl(ins_tab).child_occurance/l_parent_count;
30172 		      l_temp_per_parent := l_per_parent;
30173 		   END IF;
30174 		   --
30175 		   -- Use l_temp_per_parent to Loop thru' INS_TBL and use that slot as Object ID
30176 		   -- and Mark wherever the l_bom_sort_order_tbl(ins_tab).parent_sort_order (current_parent)
30177 		   -- is same as l_bom_sort_order_tbl(assign_count).child_sort_order (Child)
30178 		   --
30179 		   l_rel_count := l_rel_count + 1;
30180 		   x_rel_tbl(l_rel_count).subject_id := ins_tab;
30181 		   x_rel_tbl(l_rel_count).relationship_type_code := 'COMPONENT-OF';
30182 		   For assign_count in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
30183 		   Loop
30184 		      IF l_bom_sort_order_tbl(ins_tab).parent_sort_order =
30185                                 l_bom_sort_order_tbl(assign_count).child_sort_order AND
30186 		 	 l_bom_sort_order_tbl(assign_count).mark_flag = 'N' THEN
30187 			 x_rel_tbl(l_rel_count).object_id := assign_count;
30188 			 l_prev_parent := l_bom_sort_order_tbl(ins_tab).parent_sort_order;
30189 			 l_prev_child := l_bom_sort_order_tbl(ins_tab).child_sort_order;
30190 			 l_temp_per_parent := l_temp_per_parent - 1;
30191 			 IF l_temp_per_parent = 0 THEN
30192 			    l_bom_sort_order_tbl(assign_count).mark_flag := 'Y'; -- Mark
30193 			    l_temp_per_parent := l_per_parent;
30194 			 END IF;
30195 			 EXIT;
30196 		      END IF;
30197 		   End Loop;
30198 		   --
30199 	        END IF;
30200 	     END IF;
30201           End Loop;
30202        END IF; -- Check for x_ins_tbl count
30203     END IF; -- Check CSI_EXPLODE_BOM
30204     --
30205     IF x_ins_tbl.count > 0 THEN
30206        For ins_tab in l_bom_sort_order_tbl.FIRST .. l_bom_sort_order_tbl.LAST
30207        Loop
30208           csi_gen_utility_pvt.put_line(l_bom_sort_order_tbl(ins_tab).parent_sort_order ||'  '
30209                                      ||to_char(x_ins_tbl(ins_tab).inventory_item_id)||'  '
30210                                      ||to_char(x_ins_tbl(ins_tab).VLD_ORGANIZATION_ID)||'  '
30211                                      ||to_char(x_ins_tbl(ins_tab).quantity)||'  '
30212                                      ||l_bom_sort_order_tbl(ins_tab).child_sort_order);
30213        End Loop;
30214     END IF;
30215     --
30216     IF x_rel_tbl.count > 0 THEN
30217        For rel_tab in x_rel_tbl.FIRST .. x_rel_tbl.LAST
30218        Loop
30219           csi_gen_utility_pvt.put_line(to_char(x_rel_tbl(rel_tab).subject_id) ||'  '
30220                                       ||to_char(x_rel_tbl(rel_tab).object_id));
30221        End Loop;
30222     END IF;
30223     --
30224     -- Create Instance and II Relationships if the p_create_instance is TRUE
30225     IF p_create_instance = FND_API.G_TRUE THEN
30226        IF x_ins_tbl.count > 0 THEN
30227           csi_gen_utility_pvt.put_line('Calling Copy Single Item Instance..');
30228           For ins_tab in x_ins_tbl.FIRST .. x_ins_tbl.LAST
30229           Loop
30230              l_source_instance_rec := x_ins_tbl(ins_tab);
30231              l_source_instance_rec.instance_id := p_source_instance_rec.instance_id;
30232 	     csi_item_instance_pvt.copy_single_item_instance
30233 	      (
30234 		p_api_version            =>  1.0
30235 	       ,p_commit                 =>  fnd_api.g_false
30236 	       ,p_init_msg_list          =>  fnd_api.g_true
30237 	       ,p_validation_level       =>  fnd_api.g_valid_level_full
30238 	       ,p_source_instance_rec    =>  l_source_instance_rec
30239 	       ,p_copy_ext_attribs       =>  fnd_api.g_true
30240 	       ,p_copy_org_assignments   =>  fnd_api.g_true
30241 	       ,p_copy_parties           =>  fnd_api.g_true
30242 	       ,p_copy_contacts          =>  fnd_api.g_true
30243 	       ,p_copy_accounts          =>  fnd_api.g_true
30244 	       ,p_copy_asset_assignments =>  fnd_api.g_true
30245 	       ,p_copy_pricing_attribs   =>  fnd_api.g_true
30246 	       ,p_call_from_split        =>  fnd_api.g_false
30247                ,p_call_from_bom_expl     =>  fnd_api.g_true
30248 	       ,p_txn_rec                =>  p_txn_rec
30249 	       ,x_new_instance_tbl       =>  x_new_ins_tbl
30250 	       ,x_return_status          =>  x_return_status
30251 	       ,x_msg_count              =>  x_msg_count
30252 	       ,x_msg_data               =>  x_msg_data
30253 	      );
30254 	      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
30255                  csi_gen_utility_pvt.put_line('Error while trying to Copy the Instance..');
30256 		  FOR i in 1..x_msg_Count LOOP
30257 		    FND_MSG_PUB.Get(p_msg_index     => i,
30258 				    p_encoded       => 'F',
30259 				    p_data          => x_msg_data,
30260 				    p_msg_index_out => x_msg_index_out );
30261 		    csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
30262 		 End LOOP;
30263 		 RAISE FND_API.G_EXC_ERROR;
30264              END IF;
30265              -- Assign the new instance_id to x_ins_tbl.instance_id
30266              x_ins_tbl(ins_tab).instance_id := x_new_ins_tbl(1).instance_id;
30267              --
30268              -- On success Populate the relationship_tbl with the new instance_id
30269              IF x_rel_tbl.count > 0 THEN
30270                 For rel_tab in x_rel_tbl.FIRST .. x_rel_tbl.LAST
30271                 Loop
30272                    IF x_rel_tbl(rel_tab).object_id = 0 THEN -- Top Most
30273                       x_rel_tbl(rel_tab).object_id := p_source_instance_rec.instance_id;
30274                    END IF;
30275                    --
30276                    IF x_rel_tbl(rel_tab).subject_id = ins_tab THEN
30277                       x_rel_tbl(rel_tab).subject_id := x_new_ins_tbl(1).instance_id;
30278                    END IF;
30279                    --
30280                    IF x_rel_tbl(rel_tab).object_id = ins_tab THEN
30281                       x_rel_tbl(rel_tab).object_id := x_new_ins_tbl(1).instance_id;
30282                    END IF;
30283                    --
30284                 End Loop;
30285              END IF;
30286           End Loop;
30287           --
30288           IF x_rel_tbl.count > 0 THEN
30289              csi_gen_utility_pvt.put_line('Calling II Relationship PUB...');
30290              csi_ii_relationships_pub.create_relationship
30291                 (
30292                   p_api_version         => 1.0,
30293                   p_commit              => fnd_api.g_false,
30294                   p_init_msg_list       => fnd_api.g_true,
30295                   p_validation_level    => fnd_api.g_valid_level_full,
30296                   p_relationship_tbl    => x_rel_tbl,
30297                   p_txn_rec             => p_txn_rec,
30298                   x_return_status       => x_return_status,
30299                   x_msg_count           => x_msg_count,
30300                   x_msg_data            => x_msg_data
30301                 );
30302 	      IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
30303                  csi_gen_utility_pvt.put_line('Error while trying to Create II Relationships..');
30304 		  FOR i in 1..x_msg_Count LOOP
30305 		    FND_MSG_PUB.Get(p_msg_index     => i,
30306 				    p_encoded       => 'F',
30307 				    p_data          => x_msg_data,
30308 				    p_msg_index_out => x_msg_index_out );
30309 		    csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
30310 		 End LOOP;
30311 		 RAISE FND_API.G_EXC_ERROR;
30312              END IF;
30313           END IF;
30314        END IF; -- End of x_ins_tbl_count
30315     END IF; -- Check for p_create_instance
30316     --
30317     -- Assign this to the OUT parameters
30318     p_item_tbl := x_ins_tbl;
30319     p_item_relation_tbl := x_rel_tbl;
30320     --
30321     -- Delete records from bom_small_exp_temp
30322     DELETE FROM bom_small_expl_temp where group_id = l_group_id;
30323     --
30324     -- End of API body
30325     -- Standard check of p_commit
30326     IF FND_API.To_Boolean( p_commit ) THEN
30327        COMMIT WORK;
30328     END IF;
30329     -- Standard call to get message count and if count is  get message info.
30330     FND_MSG_PUB.Count_And_Get
30331         ( p_encoded => FND_API.G_FALSE,
30332                  p_count       =>       x_msg_count ,
30333           p_data       =>       x_msg_data
30334         );
30335 EXCEPTION
30336     WHEN FND_API.G_EXC_ERROR THEN
30337             ROLLBACK TO explode_bom;
30338             x_return_status := FND_API.G_RET_STS_ERROR ;
30339             FND_MSG_PUB.Count_And_Get
30340                 (  p_encoded => FND_API.G_FALSE,
30341                  p_count               =>      x_msg_count,
30342                     p_data                =>      x_msg_data
30343                  );
30344       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
30345             ROLLBACK TO explode_bom;
30346             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
30347             FND_MSG_PUB.Count_And_Get
30348                 (  p_encoded => FND_API.G_FALSE,
30349                  p_count               =>      x_msg_count,
30350                     p_data                =>      x_msg_data
30351                  );
30352       WHEN OTHERS THEN
30353             ROLLBACK TO  explode_bom;
30354             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
30355               IF       FND_MSG_PUB.Check_Msg_Level
30356                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
30357             THEN
30358                     FND_MSG_PUB.Add_Exc_Msg
30359                     (      G_PKG_NAME            ,
30360                           l_api_name
30361                      );
30362             END IF;
30363             FND_MSG_PUB.Count_And_Get
30364                 (  p_encoded => FND_API.G_FALSE,
30365                  p_count               =>      x_msg_count,
30366                     p_data                =>      x_msg_data
30367                 );
30368 END Explode_Bom;
30369 --
30370 /*---------------------------------------------------*/
30371 /* procedure name: get_instance_hist                 */
30372 /* description   : Retreive history transactions     */
30373 /*                 for an instance                   */
30374 /*---------------------------------------------------*/
30375 
30376 PROCEDURE get_instance_hist
30377 ( p_api_version           IN  NUMBER
30378  ,p_commit                IN  VARCHAR2
30379  ,p_init_msg_list         IN  VARCHAR2
30380  ,p_validation_level      IN  NUMBER
30381  ,p_transaction_id        IN  NUMBER
30382  ,x_instance_history_tbl  OUT NOCOPY csi_datastructures_pub.instance_history_tbl
30383  ,x_return_status         OUT NOCOPY VARCHAR2
30384  ,x_msg_count             OUT NOCOPY NUMBER
30385  ,x_msg_data              OUT NOCOPY VARCHAR2
30386  )  IS
30387 CURSOR txn_hist_csr (p_txn_id IN NUMBER) IS
30388    SELECT *
30389    FROM   csi_item_instances_h
30390    WHERE  transaction_id = p_txn_id;
30391 
30392 l_old_ins_header_rec  csi_datastructures_pub.instance_header_rec;
30393 l_new_ins_header_rec  csi_datastructures_pub.instance_header_rec;
30394 l_old_ins_header_tbl  csi_datastructures_pub.instance_header_tbl;
30395 l_new_ins_header_tbl  csi_datastructures_pub.instance_header_tbl;
30396 l_ins_header_rec      csi_datastructures_pub.instance_history_rec;
30397 l_temp_ins_rec        csi_datastructures_pub.instance_history_rec;
30398 l_temp_hdr_rec        csi_datastructures_pub.instance_header_rec;
30399 l_api_name            CONSTANT   VARCHAR2(30) := 'get_instance_hist';
30400 l_api_version         CONSTANT   NUMBER         := 1.0;
30401 i                     NUMBER := 0;
30402 l_time_stamp          DATE;
30403 l_instance_rec        csi_datastructures_pub.instance_header_rec;
30404 l_party_header_tbl    csi_datastructures_pub.party_header_tbl;
30405 l_account_header_tbl  csi_datastructures_pub.party_account_header_tbl;
30406 l_org_header_tbl      csi_datastructures_pub.org_units_header_tbl;
30407 l_pricing_attrib_tbl  csi_datastructures_pub.pricing_attribs_tbl;
30408 l_ext_attrib_tbl      csi_datastructures_pub.extend_attrib_values_tbl;
30409 l_ext_attrib_def_tbl  csi_datastructures_pub.extend_attrib_tbl;
30410 l_asset_header_tbl    csi_datastructures_pub.instance_asset_header_tbl;
30411 BEGIN
30412         /*
30413         IF fnd_api.to_boolean(p_commit)
30414         THEN
30415            SAVEPOINT    get_instance_hist;
30416         END IF;
30417         */
30418 
30419         -- Standard call to check for call compatibility.
30420         IF NOT FND_API.Compatible_API_Call (l_api_version       ,
30421                                                     p_api_version       ,
30422                                                 l_api_name              ,
30423                                                 G_PKG_NAME              )
30424         THEN
30425                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
30426         END IF;
30427 
30428     -- Initialize message list if p_init_msg_list is set to TRUE.
30429         IF FND_API.to_Boolean( p_init_msg_list ) THEN
30430                 FND_MSG_PUB.initialize;
30431         END IF;
30432 
30433         --  Initialize API return status to success
30434         x_return_status := FND_API.G_RET_STS_SUCCESS;
30435 
30436    /***** srramakr commented for bug # 3304439
30437    -- Check for the profile option and enable trace
30438    IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
30439                    dbms_session.set_sql_trace(TRUE);
30440    END IF;
30441    -- End enable trace
30442    ****/
30443 
30444    -- Start API body
30445    --
30446 
30447 
30448 FOR l_hist_csr IN txn_hist_csr (p_transaction_id)
30449 LOOP
30450           l_ins_header_rec := l_temp_ins_rec;
30451    -- Added for bug 3439348
30452           l_old_ins_header_rec := l_temp_hdr_rec;
30453           l_new_ins_header_rec := l_temp_hdr_rec;
30454    -- End addition for bug 3439348
30455 
30456           --start of code for bug 4754569--
30457           l_old_ins_header_rec.instance_id := l_hist_csr.instance_id;
30458           l_new_ins_header_rec.instance_id := l_hist_csr.instance_id;
30459           --end of code for bug 4754569--
30460 
30461           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)
30462           THEN
30463             l_old_ins_header_rec.instance_number := NULL;
30464             l_new_ins_header_rec.instance_number := NULL;
30465           ELSE
30466             l_old_ins_header_rec.instance_number := l_hist_csr.old_instance_number;
30467             l_new_ins_header_rec.instance_number := l_hist_csr.new_instance_number;
30468           END IF;
30469 
30470           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)
30471           THEN
30472             l_old_ins_header_rec.external_reference := NULL;
30473             l_new_ins_header_rec.external_reference := NULL;
30474           ELSE
30475             l_old_ins_header_rec.external_reference := l_hist_csr.old_external_reference;
30476             l_new_ins_header_rec.external_reference := l_hist_csr.new_external_reference;
30477           END IF;
30478 
30479           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)
30480           THEN
30481             l_old_ins_header_rec.inventory_item_id := NULL;
30482             l_new_ins_header_rec.inventory_item_id := NULL;
30483           ELSE
30484             l_old_ins_header_rec.inventory_item_id := l_hist_csr.old_inventory_item_id;
30485             l_new_ins_header_rec.inventory_item_id := l_hist_csr.new_inventory_item_id;
30486           END IF;
30487 
30488           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)
30489           THEN
30490             l_old_ins_header_rec.inventory_revision := NULL;
30491             l_new_ins_header_rec.inventory_revision := NULL;
30492           ELSE
30493             l_old_ins_header_rec.inventory_revision := l_hist_csr.old_inventory_revision;
30494             l_new_ins_header_rec.inventory_revision := l_hist_csr.new_inventory_revision;
30495           END IF;
30496 
30497           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)
30498           THEN
30499             l_old_ins_header_rec.inv_master_organization_id := NULL;
30500             l_new_ins_header_rec.inv_master_organization_id := NULL;
30501           ELSE
30502             l_old_ins_header_rec.inv_master_organization_id := l_hist_csr.old_inv_master_organization_id;
30503             l_new_ins_header_rec.inv_master_organization_id := l_hist_csr.new_inv_master_organization_id;
30504           END IF;
30505 
30506           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)
30507           THEN
30508             l_old_ins_header_rec.serial_number := NULL;
30509             l_new_ins_header_rec.serial_number := NULL;
30510           ELSE
30511             l_old_ins_header_rec.serial_number := l_hist_csr.old_serial_number;
30512             l_new_ins_header_rec.serial_number := l_hist_csr.new_serial_number;
30513           END IF;
30514 
30515           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)
30516           THEN
30517             l_old_ins_header_rec.mfg_serial_number_flag := NULL;
30518             l_new_ins_header_rec.mfg_serial_number_flag := NULL;
30519           ELSE
30520             l_old_ins_header_rec.mfg_serial_number_flag := l_hist_csr.old_mfg_serial_number_flag;
30521             l_new_ins_header_rec.mfg_serial_number_flag := l_hist_csr.new_mfg_serial_number_flag;
30522           END IF;
30523 
30524           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)
30525           THEN
30526             l_old_ins_header_rec.lot_number := NULL;
30527             l_new_ins_header_rec.lot_number := NULL;
30528           ELSE
30529             l_old_ins_header_rec.lot_number := l_hist_csr.old_lot_number;
30530             l_new_ins_header_rec.lot_number := l_hist_csr.new_lot_number;
30531           END IF;
30532 
30533           IF NVL(l_hist_csr.old_quantity,fnd_api.g_miss_num) = NVL(l_hist_csr.new_quantity,fnd_api.g_miss_num)
30534           THEN
30535             l_old_ins_header_rec.quantity := NULL;
30536             l_new_ins_header_rec.quantity := NULL;
30537           ELSE
30538             l_old_ins_header_rec.quantity := l_hist_csr.old_quantity;
30539             l_new_ins_header_rec.quantity := l_hist_csr.new_quantity;
30540           END IF;
30541 
30542           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)
30543           THEN
30544             l_old_ins_header_rec.unit_of_measure := NULL;
30545             l_new_ins_header_rec.unit_of_measure := NULL;
30546           ELSE
30547             l_old_ins_header_rec.unit_of_measure := l_hist_csr.old_unit_of_measure;
30548             l_new_ins_header_rec.unit_of_measure := l_hist_csr.new_unit_of_measure;
30549           END IF;
30550 
30551           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)
30552           THEN
30553             l_old_ins_header_rec.accounting_class_code := NULL;
30554             l_new_ins_header_rec.accounting_class_code := NULL;
30555           ELSE
30556             l_old_ins_header_rec.accounting_class_code := l_hist_csr.old_accounting_class_code;
30557             l_new_ins_header_rec.accounting_class_code := l_hist_csr.new_accounting_class_code;
30558           END IF;
30559 
30560           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)
30561           THEN
30562             l_old_ins_header_rec.instance_condition_id := NULL;
30563             l_new_ins_header_rec.instance_condition_id := NULL;
30564           ELSE
30565             l_old_ins_header_rec.instance_condition_id := l_hist_csr.old_instance_condition_id;
30566             l_new_ins_header_rec.instance_condition_id := l_hist_csr.new_instance_condition_id;
30567           END IF;
30568 
30569           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)
30570           THEN
30571             l_old_ins_header_rec.instance_status_id := NULL;
30572             l_new_ins_header_rec.instance_status_id := NULL;
30573           ELSE
30574             l_old_ins_header_rec.instance_status_id := l_hist_csr.old_instance_status_id;
30575             l_new_ins_header_rec.instance_status_id := l_hist_csr.new_instance_status_id;
30576           END IF;
30577 
30578           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)
30579           THEN
30580             l_old_ins_header_rec.customer_view_flag := NULL;
30581             l_new_ins_header_rec.customer_view_flag := NULL;
30582           ELSE
30583             l_old_ins_header_rec.customer_view_flag := l_hist_csr.old_customer_view_flag;
30584             l_new_ins_header_rec.customer_view_flag := l_hist_csr.new_customer_view_flag;
30585           END IF;
30586 
30587           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)
30588           THEN
30589             l_old_ins_header_rec.merchant_view_flag := NULL;
30590             l_new_ins_header_rec.merchant_view_flag := NULL;
30591           ELSE
30592             l_old_ins_header_rec.merchant_view_flag := l_hist_csr.old_merchant_view_flag;
30593             l_new_ins_header_rec.merchant_view_flag := l_hist_csr.new_merchant_view_flag;
30594           END IF;
30595 
30596           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)
30597           THEN
30598             l_old_ins_header_rec.sellable_flag := NULL;
30599             l_new_ins_header_rec.sellable_flag := NULL;
30600           ELSE
30601             l_old_ins_header_rec.sellable_flag := l_hist_csr.old_sellable_flag;
30602             l_new_ins_header_rec.sellable_flag := l_hist_csr.new_sellable_flag;
30603           END IF;
30604 
30605           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)
30606           THEN
30607             l_old_ins_header_rec.system_id := NULL;
30608             l_new_ins_header_rec.system_id := NULL;
30609           ELSE
30610             l_old_ins_header_rec.system_id := l_hist_csr.old_system_id;
30611             l_new_ins_header_rec.system_id := l_hist_csr.new_system_id;
30612           END IF;
30613 
30614           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)
30615           THEN
30616             l_old_ins_header_rec.instance_type_code := NULL;
30617             l_new_ins_header_rec.instance_type_code := NULL;
30618           ELSE
30619             l_old_ins_header_rec.instance_type_code := l_hist_csr.old_instance_type_code;
30620             l_new_ins_header_rec.instance_type_code := l_hist_csr.new_instance_type_code;
30621           END IF;
30622 
30623           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)
30624           THEN
30625             l_old_ins_header_rec.active_start_date := NULL;
30626             l_new_ins_header_rec.active_start_date := NULL;
30627           ELSE
30628             l_old_ins_header_rec.active_start_date := l_hist_csr.old_active_start_date;
30629             l_new_ins_header_rec.active_start_date := l_hist_csr.new_active_start_date;
30630           END IF;
30631 
30632           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)
30633           THEN
30634             l_old_ins_header_rec.active_end_date := NULL;
30635             l_new_ins_header_rec.active_end_date := NULL;
30636           ELSE
30637             l_old_ins_header_rec.active_end_date := l_hist_csr.old_active_end_date;
30638             l_new_ins_header_rec.active_end_date := l_hist_csr.new_active_end_date;
30639           END IF;
30640 
30641        -- Added for bug 2671179
30642           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)
30643           THEN
30644             l_old_ins_header_rec.install_date := NULL;
30645             l_new_ins_header_rec.install_date := NULL;
30646           ELSE
30647             l_old_ins_header_rec.install_date := l_hist_csr.old_install_date;
30648             l_new_ins_header_rec.install_date := l_hist_csr.new_install_date;
30649           END IF;
30650 
30651           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)
30652           THEN
30653             l_old_ins_header_rec.return_by_date := NULL;
30654             l_new_ins_header_rec.return_by_date := NULL;
30655           ELSE
30656             l_old_ins_header_rec.return_by_date := l_hist_csr.old_return_by_date;
30657             l_new_ins_header_rec.return_by_date := l_hist_csr.new_return_by_date;
30658           END IF;
30659 
30660           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)
30661           THEN
30662             l_old_ins_header_rec.actual_return_date := NULL;
30663             l_new_ins_header_rec.actual_return_date := NULL;
30664           ELSE
30665             l_old_ins_header_rec.actual_return_date := l_hist_csr.old_actual_return_date;
30666             l_new_ins_header_rec.actual_return_date := l_hist_csr.new_actual_return_date;
30667           END IF;
30668        -- End addition for bug 2671179
30669 
30670           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)
30671           THEN
30672             l_old_ins_header_rec.location_type_code := NULL;
30673             l_new_ins_header_rec.location_type_code := NULL;
30674           ELSE
30675             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30676             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30677           END IF;
30678 
30679           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)
30680           THEN
30681             l_old_ins_header_rec.location_id := NULL;
30682             l_new_ins_header_rec.location_id := NULL;
30683           ELSE
30684             l_old_ins_header_rec.location_id := l_hist_csr.old_location_id;
30685             l_new_ins_header_rec.location_id := l_hist_csr.new_location_id;
30686             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30687             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30688           END IF;
30689 
30690           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)
30691           THEN
30692             l_old_ins_header_rec.inv_organization_id := NULL;
30693             l_new_ins_header_rec.inv_organization_id := NULL;
30694           ELSE
30695             l_old_ins_header_rec.inv_organization_id := l_hist_csr.old_inv_organization_id;
30696             l_new_ins_header_rec.inv_organization_id := l_hist_csr.new_inv_organization_id;
30697             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30698             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30699           END IF;
30700 
30701           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)
30702           THEN
30703             l_old_ins_header_rec.inv_subinventory_name := NULL;
30704             l_new_ins_header_rec.inv_subinventory_name := NULL;
30705           ELSE
30706             l_old_ins_header_rec.inv_subinventory_name := l_hist_csr.old_inv_subinventory_name;
30707             l_new_ins_header_rec.inv_subinventory_name := l_hist_csr.new_inv_subinventory_name;
30708           END IF;
30709 
30710           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)
30711           THEN
30712             l_old_ins_header_rec.inv_locator_id := NULL;
30713             l_new_ins_header_rec.inv_locator_id := NULL;
30714           ELSE
30715             l_old_ins_header_rec.inv_locator_id := l_hist_csr.old_inv_locator_id;
30716             l_new_ins_header_rec.inv_locator_id := l_hist_csr.new_inv_locator_id;
30717           END IF;
30718 
30719           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)
30720           THEN
30721             l_old_ins_header_rec.pa_project_id := NULL;
30722             l_new_ins_header_rec.pa_project_id := NULL;
30723           ELSE
30724             l_old_ins_header_rec.pa_project_id := l_hist_csr.old_pa_project_id;
30725             l_new_ins_header_rec.pa_project_id := l_hist_csr.new_pa_project_id;
30726             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30727             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30728           END IF;
30729 
30730           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)
30731           THEN
30732             l_old_ins_header_rec.pa_project_task_id := NULL;
30733             l_new_ins_header_rec.pa_project_task_id := NULL;
30734           ELSE
30735             l_old_ins_header_rec.pa_project_task_id := l_hist_csr.old_pa_project_task_id;
30736             l_new_ins_header_rec.pa_project_task_id := l_hist_csr.new_pa_project_task_id;
30737             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30738             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30739           END IF;
30740 
30741           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)
30742           THEN
30743             l_old_ins_header_rec.in_transit_order_line_id := NULL;
30744             l_new_ins_header_rec.in_transit_order_line_id := NULL;
30745           ELSE
30746             l_old_ins_header_rec.in_transit_order_line_id := l_hist_csr.old_in_transit_order_line_id;
30747             l_new_ins_header_rec.in_transit_order_line_id := l_hist_csr.new_in_transit_order_line_id;
30748             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30749             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30750           END IF;
30751 
30752           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)
30753           THEN
30754             l_old_ins_header_rec.wip_job_id := NULL;
30755             l_new_ins_header_rec.wip_job_id := NULL;
30756           ELSE
30757             l_old_ins_header_rec.wip_job_id := l_hist_csr.old_wip_job_id;
30758             l_new_ins_header_rec.wip_job_id := l_hist_csr.new_wip_job_id;
30759             l_old_ins_header_rec.location_type_code := l_hist_csr.old_location_type_code;
30760             l_new_ins_header_rec.location_type_code := l_hist_csr.new_location_type_code;
30761           END IF;
30762 
30763           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)
30764           THEN
30765             l_old_ins_header_rec.po_order_line_id := NULL;
30766             l_new_ins_header_rec.po_order_line_id := NULL;
30767           ELSE
30768             l_old_ins_header_rec.po_order_line_id := l_hist_csr.old_po_order_line_id;
30769             l_new_ins_header_rec.po_order_line_id := l_hist_csr.new_po_order_line_id;
30770           END IF;
30771 
30772           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)
30773           THEN
30774             l_old_ins_header_rec.last_oe_agreement_id := NULL;
30775             l_new_ins_header_rec.last_oe_agreement_id := NULL;
30776           ELSE
30777             l_old_ins_header_rec.last_oe_agreement_id := l_hist_csr.old_oe_agreement_id;
30778             l_new_ins_header_rec.last_oe_agreement_id := l_hist_csr.new_oe_agreement_id;
30779           END IF;
30780 
30781           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)
30782           THEN
30783             l_old_ins_header_rec.LAST_OE_ORDER_LINE_ID := NULL;
30784             l_new_ins_header_rec.LAST_OE_ORDER_LINE_ID := NULL;
30785           ELSE
30786             l_old_ins_header_rec.LAST_OE_ORDER_LINE_ID := l_hist_csr.old_LAST_OE_ORDER_LINE_ID;
30787             l_new_ins_header_rec.LAST_OE_ORDER_LINE_ID := l_hist_csr.new_LAST_OE_ORDER_LINE_ID;
30788           END IF;
30789 
30790           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)
30791           THEN
30792             l_old_ins_header_rec.LAST_OE_RMA_LINE_ID := NULL;
30793             l_new_ins_header_rec.LAST_OE_RMA_LINE_ID := NULL;
30794           ELSE
30795             l_old_ins_header_rec.LAST_OE_RMA_LINE_ID := l_hist_csr.old_LAST_OE_RMA_LINE_ID;
30796             l_new_ins_header_rec.LAST_OE_RMA_LINE_ID := l_hist_csr.new_LAST_OE_RMA_LINE_ID;
30797           END IF;
30798 
30799           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)
30800           THEN
30801             l_old_ins_header_rec.LAST_WIP_JOB_ID := NULL;
30802             l_new_ins_header_rec.LAST_WIP_JOB_ID := NULL;
30803           ELSE
30804             l_old_ins_header_rec.LAST_WIP_JOB_ID := l_hist_csr.old_LAST_WIP_JOB_ID;
30805             l_new_ins_header_rec.LAST_WIP_JOB_ID := l_hist_csr.new_LAST_WIP_JOB_ID;
30806           END IF;
30807 
30808           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)
30809           THEN
30810             l_old_ins_header_rec.LAST_PO_PO_LINE_ID := NULL;
30811             l_new_ins_header_rec.LAST_PO_PO_LINE_ID := NULL;
30812           ELSE
30813             l_old_ins_header_rec.LAST_PO_PO_LINE_ID := l_hist_csr.old_LAST_PO_PO_LINE_ID;
30814             l_new_ins_header_rec.LAST_PO_PO_LINE_ID := l_hist_csr.new_LAST_PO_PO_LINE_ID;
30815           END IF;
30816 
30817           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)
30818           THEN
30819             l_old_ins_header_rec.LAST_PA_PROJECT_ID := NULL;
30820             l_new_ins_header_rec.LAST_PA_PROJECT_ID := NULL;
30821           ELSE
30822             l_old_ins_header_rec.LAST_PA_PROJECT_ID := l_hist_csr.old_LAST_PA_PROJECT_ID;
30823             l_new_ins_header_rec.LAST_PA_PROJECT_ID := l_hist_csr.new_LAST_PA_PROJECT_ID;
30824           END IF;
30825 
30826           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)
30827           THEN
30828             l_old_ins_header_rec.LAST_PA_TASK_ID := NULL;
30829             l_new_ins_header_rec.LAST_PA_TASK_ID := NULL;
30830           ELSE
30831             l_old_ins_header_rec.LAST_PA_TASK_ID := l_hist_csr.old_LAST_PA_TASK_ID;
30832             l_new_ins_header_rec.LAST_PA_TASK_ID := l_hist_csr.new_LAST_PA_TASK_ID;
30833           END IF;
30834 
30835           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)
30836           THEN
30837             l_old_ins_header_rec.LAST_TXN_LINE_DETAIL_ID := NULL;
30838             l_new_ins_header_rec.LAST_TXN_LINE_DETAIL_ID := NULL;
30839           ELSE
30840             l_old_ins_header_rec.LAST_TXN_LINE_DETAIL_ID := l_hist_csr.old_LAST_TXN_LINE_DETAIL_ID;
30841             l_new_ins_header_rec.LAST_TXN_LINE_DETAIL_ID := l_hist_csr.new_LAST_TXN_LINE_DETAIL_ID;
30842           END IF;
30843 
30844           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)
30845           THEN
30846             l_old_ins_header_rec.LAST_OE_PO_NUMBER := NULL;
30847             l_new_ins_header_rec.LAST_OE_PO_NUMBER := NULL;
30848           ELSE
30849             l_old_ins_header_rec.LAST_OE_PO_NUMBER := l_hist_csr.old_LAST_OE_PO_NUMBER;
30850             l_new_ins_header_rec.LAST_OE_PO_NUMBER := l_hist_csr.new_LAST_OE_PO_NUMBER;
30851           END IF;
30852 
30853           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)
30854           THEN
30855             l_old_ins_header_rec.completeness_flag := NULL;
30856             l_new_ins_header_rec.completeness_flag := NULL;
30857           ELSE
30858             l_old_ins_header_rec.completeness_flag := l_hist_csr.old_completeness_flag;
30859             l_new_ins_header_rec.completeness_flag := l_hist_csr.new_completeness_flag;
30860           END IF;
30861 
30862           IF NVL(l_hist_csr.old_context,fnd_api.g_miss_char) = NVL(l_hist_csr.new_context,fnd_api.g_miss_char)
30863           THEN
30864             l_old_ins_header_rec.context := NULL;
30865             l_new_ins_header_rec.context := NULL;
30866           ELSE
30867             l_old_ins_header_rec.context := l_hist_csr.old_context;
30868             l_new_ins_header_rec.context := l_hist_csr.new_context;
30869           END IF;
30870 
30871           IF NVL(l_hist_csr.old_attribute1,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute1,fnd_api.g_miss_char)
30872           THEN
30873             l_old_ins_header_rec.attribute1 := NULL;
30874             l_new_ins_header_rec.attribute1 := NULL;
30875           ELSE
30876             l_old_ins_header_rec.attribute1 := l_hist_csr.old_attribute1;
30877             l_new_ins_header_rec.attribute1 := l_hist_csr.new_attribute1;
30878           END IF;
30879 
30880           IF NVL(l_hist_csr.old_attribute2,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute2,fnd_api.g_miss_char)
30881           THEN
30882             l_old_ins_header_rec.attribute2 := NULL;
30883             l_new_ins_header_rec.attribute2 := NULL;
30884           ELSE
30885             l_old_ins_header_rec.attribute2 := l_hist_csr.old_attribute2;
30886             l_new_ins_header_rec.attribute2 := l_hist_csr.new_attribute2;
30887           END IF;
30888 
30889           IF NVL(l_hist_csr.old_attribute3,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute3,fnd_api.g_miss_char)
30890           THEN
30891             l_old_ins_header_rec.attribute3 := NULL;
30892             l_new_ins_header_rec.attribute3 := NULL;
30893           ELSE
30894             l_old_ins_header_rec.attribute3 := l_hist_csr.old_attribute3;
30895             l_new_ins_header_rec.attribute3 := l_hist_csr.new_attribute3;
30896           END IF;
30897 
30898           IF NVL(l_hist_csr.old_attribute4,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute4,fnd_api.g_miss_char)
30899           THEN
30900             l_old_ins_header_rec.attribute4 := NULL;
30901             l_new_ins_header_rec.attribute4 := NULL;
30902           ELSE
30903             l_old_ins_header_rec.attribute4 := l_hist_csr.old_attribute4;
30904             l_new_ins_header_rec.attribute4 := l_hist_csr.new_attribute4;
30905           END IF;
30906 
30907           IF NVL(l_hist_csr.old_attribute5,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute5,fnd_api.g_miss_char)
30908           THEN
30909             l_old_ins_header_rec.attribute5 := NULL;
30910             l_new_ins_header_rec.attribute5 := NULL;
30911           ELSE
30912             l_old_ins_header_rec.attribute5 := l_hist_csr.old_attribute5;
30913             l_new_ins_header_rec.attribute5 := l_hist_csr.new_attribute5;
30914           END IF;
30915 
30916           IF NVL(l_hist_csr.old_attribute6,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute6,fnd_api.g_miss_char)
30917           THEN
30918             l_old_ins_header_rec.attribute6 := NULL;
30919             l_new_ins_header_rec.attribute6 := NULL;
30920           ELSE
30921             l_old_ins_header_rec.attribute6 := l_hist_csr.old_attribute6;
30922             l_new_ins_header_rec.attribute6 := l_hist_csr.new_attribute6;
30923           END IF;
30924 
30925           IF NVL(l_hist_csr.old_attribute7,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute7,fnd_api.g_miss_char)
30926           THEN
30927             l_old_ins_header_rec.attribute7 := NULL;
30928             l_new_ins_header_rec.attribute7 := NULL;
30929           ELSE
30930             l_old_ins_header_rec.attribute7 := l_hist_csr.old_attribute7;
30931             l_new_ins_header_rec.attribute7 := l_hist_csr.new_attribute7;
30932           END IF;
30933 
30934           IF NVL(l_hist_csr.old_attribute8,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute8,fnd_api.g_miss_char)
30935           THEN
30936             l_old_ins_header_rec.attribute8 := NULL;
30937             l_new_ins_header_rec.attribute8 := NULL;
30938           ELSE
30939             l_old_ins_header_rec.attribute8 := l_hist_csr.old_attribute8;
30940             l_new_ins_header_rec.attribute8 := l_hist_csr.new_attribute8;
30941           END IF;
30942 
30943           IF NVL(l_hist_csr.old_attribute9,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute9,fnd_api.g_miss_char)
30944           THEN
30945             l_old_ins_header_rec.attribute9 := NULL;
30946             l_new_ins_header_rec.attribute9 := NULL;
30947           ELSE
30948             l_old_ins_header_rec.attribute9 := l_hist_csr.old_attribute9;
30949             l_new_ins_header_rec.attribute9 := l_hist_csr.new_attribute9;
30950           END IF;
30951 
30952           IF NVL(l_hist_csr.old_attribute10,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute10,fnd_api.g_miss_char)
30953           THEN
30954             l_old_ins_header_rec.attribute10 := NULL;
30955             l_new_ins_header_rec.attribute10 := NULL;
30956           ELSE
30957             l_old_ins_header_rec.attribute10 := l_hist_csr.old_attribute10;
30958             l_new_ins_header_rec.attribute10 := l_hist_csr.new_attribute10;
30959           END IF;
30960 
30961           IF NVL(l_hist_csr.old_attribute11,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute11,fnd_api.g_miss_char)
30962           THEN
30963             l_old_ins_header_rec.attribute11 := NULL;
30964             l_new_ins_header_rec.attribute11 := NULL;
30965           ELSE
30966             l_old_ins_header_rec.attribute11 := l_hist_csr.old_attribute11;
30967             l_new_ins_header_rec.attribute11 := l_hist_csr.new_attribute11;
30968           END IF;
30969 
30970           IF NVL(l_hist_csr.old_attribute12,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute12,fnd_api.g_miss_char)
30971           THEN
30972             l_old_ins_header_rec.attribute12 := NULL;
30973             l_new_ins_header_rec.attribute12 := NULL;
30974           ELSE
30975             l_old_ins_header_rec.attribute12 := l_hist_csr.old_attribute12;
30976             l_new_ins_header_rec.attribute12 := l_hist_csr.new_attribute12;
30977           END IF;
30978 
30979           IF NVL(l_hist_csr.old_attribute13,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute13,fnd_api.g_miss_char)
30980           THEN
30981             l_old_ins_header_rec.attribute13 := NULL;
30982             l_new_ins_header_rec.attribute13 := NULL;
30983           ELSE
30984             l_old_ins_header_rec.attribute13 := l_hist_csr.old_attribute13;
30985             l_new_ins_header_rec.attribute13 := l_hist_csr.new_attribute13;
30986           END IF;
30987 
30988           IF NVL(l_hist_csr.old_attribute14,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute14,fnd_api.g_miss_char)
30989           THEN
30990             l_old_ins_header_rec.attribute14 := NULL;
30991             l_new_ins_header_rec.attribute14 := NULL;
30992           ELSE
30993             l_old_ins_header_rec.attribute14 := l_hist_csr.old_attribute14;
30994             l_new_ins_header_rec.attribute14 := l_hist_csr.new_attribute14;
30995           END IF;
30996 
30997           IF NVL(l_hist_csr.old_attribute15,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute15,fnd_api.g_miss_char)
30998           THEN
30999             l_old_ins_header_rec.attribute15 := NULL;
31000             l_new_ins_header_rec.attribute15 := NULL;
31001           ELSE
31002             l_old_ins_header_rec.attribute15 := l_hist_csr.old_attribute15;
31003             l_new_ins_header_rec.attribute15 := l_hist_csr.new_attribute15;
31004           END IF;
31005 
31006           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)
31007           THEN
31008             l_old_ins_header_rec.install_location_type_code := NULL;
31009             l_new_ins_header_rec.install_location_type_code := NULL;
31010           ELSE
31011             l_old_ins_header_rec.install_location_type_code := l_hist_csr.old_inst_loc_type_code;
31012             l_new_ins_header_rec.install_location_type_code := l_hist_csr.new_inst_loc_type_code;
31013           END IF;
31014 
31015           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)
31016           THEN
31017             l_old_ins_header_rec.install_location_id := NULL;
31018             l_new_ins_header_rec.install_location_id := NULL;
31019           ELSE
31020             l_old_ins_header_rec.install_location_id := l_hist_csr.old_inst_loc_id;
31021             l_new_ins_header_rec.install_location_id := l_hist_csr.new_inst_loc_id;
31022             l_old_ins_header_rec.install_location_type_code := l_hist_csr.old_inst_loc_type_code;
31023             l_new_ins_header_rec.install_location_type_code := l_hist_csr.new_inst_loc_type_code;
31024           END IF;
31025 
31026           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)
31027           THEN
31028             l_old_ins_header_rec.instance_usage_code := NULL;
31029             l_new_ins_header_rec.instance_usage_code := NULL;
31030           ELSE
31031             l_old_ins_header_rec.instance_usage_code := l_hist_csr.old_inst_usage_code;
31032             l_new_ins_header_rec.instance_usage_code := l_hist_csr.new_inst_usage_code;
31033           END IF;
31034 
31035           -- Added by sguthiva for att enhancements
31036           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)
31037           THEN
31038             l_old_ins_header_rec.config_inst_rev_num := NULL;
31039             l_new_ins_header_rec.config_inst_rev_num := NULL;
31040           ELSE
31041             l_old_ins_header_rec.config_inst_rev_num := l_hist_csr.old_config_inst_rev_num;
31042             l_new_ins_header_rec.config_inst_rev_num := l_hist_csr.new_config_inst_rev_num;
31043           END IF;
31044 
31045           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)
31046           THEN
31047             l_old_ins_header_rec.config_valid_status := NULL;
31048             l_new_ins_header_rec.config_valid_status := NULL;
31049           ELSE
31050             l_old_ins_header_rec.config_valid_status := l_hist_csr.old_config_valid_status;
31051             l_new_ins_header_rec.config_valid_status := l_hist_csr.new_config_valid_status;
31052           END IF;
31053 
31054           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)
31055           THEN
31056             l_old_ins_header_rec.instance_description := NULL;
31057             l_new_ins_header_rec.instance_description := NULL;
31058           ELSE
31059             l_old_ins_header_rec.instance_description := l_hist_csr.old_instance_description;
31060             l_new_ins_header_rec.instance_description := l_hist_csr.new_instance_description;
31061           END IF;
31062 
31063           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)
31064           THEN
31065             l_old_ins_header_rec.vld_organization_id := NULL;
31066             l_new_ins_header_rec.vld_organization_id := NULL;
31067           ELSE
31068             l_old_ins_header_rec.vld_organization_id := l_hist_csr.old_last_vld_organization_id;
31069             l_new_ins_header_rec.vld_organization_id := l_hist_csr.new_last_vld_organization_id;
31070           END IF;
31071           -- End of addition.
31072 
31073                -- Addition of columns for FA Integration
31074           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)
31075           THEN
31076             l_old_ins_header_rec.purchase_unit_price := NULL;
31077             l_new_ins_header_rec.purchase_unit_price := NULL;
31078           ELSE
31079             l_old_ins_header_rec.purchase_unit_price := l_hist_csr.old_purchase_unit_price;
31080             l_new_ins_header_rec.purchase_unit_price := l_hist_csr.new_purchase_unit_price;
31081           END IF;
31082 
31083           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)
31084           THEN
31085             l_old_ins_header_rec.purchase_currency_code := NULL;
31086             l_new_ins_header_rec.purchase_currency_code := NULL;
31087           ELSE
31088             l_old_ins_header_rec.purchase_currency_code := l_hist_csr.old_purchase_currency_code;
31089             l_new_ins_header_rec.purchase_currency_code := l_hist_csr.new_purchase_currency_code;
31090           END IF;
31091 
31092           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)
31093           THEN
31094             l_old_ins_header_rec.payables_unit_price := NULL;
31095             l_new_ins_header_rec.payables_unit_price := NULL;
31096           ELSE
31097             l_old_ins_header_rec.payables_unit_price := l_hist_csr.old_payables_unit_price;
31098             l_new_ins_header_rec.payables_unit_price := l_hist_csr.new_payables_unit_price;
31099           END IF;
31100 
31101           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)
31102           THEN
31103             l_old_ins_header_rec.payables_currency_code := NULL;
31104             l_new_ins_header_rec.payables_currency_code := NULL;
31105           ELSE
31106             l_old_ins_header_rec.payables_currency_code := l_hist_csr.old_payables_currency_code;
31107             l_new_ins_header_rec.payables_currency_code := l_hist_csr.new_payables_currency_code;
31108           END IF;
31109 
31110           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)
31111           THEN
31112             l_old_ins_header_rec.sales_unit_price := NULL;
31113             l_new_ins_header_rec.sales_unit_price := NULL;
31114           ELSE
31115             l_old_ins_header_rec.sales_unit_price := l_hist_csr.old_sales_unit_price;
31116             l_new_ins_header_rec.sales_unit_price := l_hist_csr.new_sales_unit_price;
31117           END IF;
31118 
31119           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)
31120           THEN
31121             l_old_ins_header_rec.sales_currency_code := NULL;
31122             l_new_ins_header_rec.sales_currency_code := NULL;
31123           ELSE
31124             l_old_ins_header_rec.sales_currency_code := l_hist_csr.old_sales_currency_code;
31125             l_new_ins_header_rec.sales_currency_code := l_hist_csr.new_sales_currency_code;
31126           END IF;
31127 
31128           IF NVL(l_hist_csr.old_operational_status_code,fnd_api.g_miss_char) =
31129           NVL(l_hist_csr.new_operational_status_code,fnd_api.g_miss_char)
31130           THEN
31131             l_old_ins_header_rec.operational_status_code := NULL;
31132             l_new_ins_header_rec.operational_status_code := NULL;
31133           ELSE
31134             l_old_ins_header_rec.operational_status_code := l_hist_csr.old_operational_status_code;
31135             l_new_ins_header_rec.operational_status_code := l_hist_csr.new_operational_status_code;
31136           END IF;
31137           -- End addition of columns for FA Integration
31138           -- Addition for bug 2696607
31139              IF  (l_new_ins_header_rec.install_location_id IS NOT NULL AND
31140                   l_new_ins_header_rec.install_location_type_code IS NULL )
31141               OR (l_new_ins_header_rec.location_id IS NOT NULL AND
31142                   l_new_ins_header_rec.location_type_code IS NULL )
31143               or (l_new_ins_header_rec.inv_organization_id IS NOT NULL AND
31144                   l_old_ins_header_rec.inv_organization_id IS NOT NULL
31145                   )
31146              THEN
31147              l_instance_rec.instance_id := l_hist_csr.instance_id;
31148              l_time_stamp := l_hist_csr.creation_date;
31149                 csi_item_instance_pub.get_item_instance_details
31150                ( p_api_version         => 1.0
31151                 ,p_commit              => fnd_api.g_false
31152                 ,p_init_msg_list       => fnd_api.g_false
31153                 ,p_validation_level    => fnd_api.g_valid_level_full
31154                 ,p_instance_rec        => l_instance_rec
31155                 ,p_get_parties         => fnd_api.g_false
31156                 ,p_party_header_tbl    => l_party_header_tbl
31157                 ,p_get_accounts        => fnd_api.g_false
31158                 ,p_account_header_tbl  => l_account_header_tbl
31159                 ,p_get_org_assignments => fnd_api.g_false
31160                 ,p_org_header_tbl      => l_org_header_tbl
31161                 ,p_get_pricing_attribs => fnd_api.g_false
31162                 ,p_pricing_attrib_tbl  => l_pricing_attrib_tbl
31163                 ,p_get_ext_attribs     => fnd_api.g_false
31164                 ,p_ext_attrib_tbl      => l_ext_attrib_tbl
31165                 ,p_ext_attrib_def_tbl  => l_ext_attrib_def_tbl
31166                 ,p_get_asset_assignments  =>  fnd_api.g_false
31167                 ,p_asset_header_tbl    => l_asset_header_tbl
31168                 ,p_resolve_id_columns  => fnd_api.g_false
31169                 ,p_time_stamp          => l_time_stamp
31170                 ,x_return_status       => x_return_status
31171                 ,x_msg_count           => x_msg_count
31172                 ,x_msg_data            => x_msg_data
31173                );
31174 
31175               IF NOT(x_return_status = fnd_api.g_ret_sts_success) THEN
31176                   RAISE fnd_api.g_exc_error;
31177               END IF;
31178 
31179                 IF  (l_new_ins_header_rec.install_location_id IS NOT NULL AND
31180                      l_new_ins_header_rec.install_location_type_code IS NULL )
31181                 THEN
31182                    l_old_ins_header_rec.install_location_type_code:=l_instance_rec.install_location_type_code;
31183                    l_new_ins_header_rec.install_location_type_code:=l_instance_rec.install_location_type_code;
31184                 END IF;
31185 
31186                 IF  (l_new_ins_header_rec.location_id IS NOT NULL AND
31187                      l_new_ins_header_rec.location_type_code IS NULL )
31188                 THEN
31189                    l_old_ins_header_rec.location_type_code:=l_instance_rec.location_type_code;
31190                    l_new_ins_header_rec.location_type_code:=l_instance_rec.location_type_code;
31191                 END IF;
31192 
31193                 IF  (l_new_ins_header_rec.inv_organization_id IS NOT NULL AND
31194                      l_old_ins_header_rec.inv_organization_id IS NOT NULL )
31195                 THEN
31196                    l_old_ins_header_rec.location_type_code:=l_instance_rec.location_type_code;
31197                    l_new_ins_header_rec.location_type_code:=l_instance_rec.location_type_code;
31198                 END IF;
31199 
31200 
31201              END IF;
31202           -- End addition for bug 2696607
31203 
31204 	 --start of code for bug 4754569--
31205           IF l_old_ins_header_rec.criticality= fnd_api.g_miss_char
31206           THEN
31207              l_old_ins_header_rec.criticality := NULL;
31208           END IF;
31209 
31210           IF l_new_ins_header_rec.criticality= fnd_api.g_miss_char
31211           THEN
31212              l_new_ins_header_rec.criticality := NULL;
31213           END IF;
31214 
31215           IF l_old_ins_header_rec.category_name= fnd_api.g_miss_char
31216           THEN
31217              l_old_ins_header_rec.category_name := NULL;
31218           END IF;
31219 
31220           IF l_new_ins_header_rec.category_name= fnd_api.g_miss_char
31221           THEN
31222              l_new_ins_header_rec.category_name := NULL;
31223           END IF;
31224 
31225 	  --included for bug 5211068
31226           IF l_old_ins_header_rec.maintainable = fnd_api.g_miss_char
31227           THEN
31228              l_old_ins_header_rec.maintainable := NULL;
31229           END IF;
31230 
31231           IF l_new_ins_header_rec.maintainable = fnd_api.g_miss_char
31232           THEN
31233              l_new_ins_header_rec.maintainable := NULL;
31234           END IF;
31235 
31236           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)
31237           THEN
31238             l_old_ins_header_rec.maintainable_flag := NULL;
31239             l_new_ins_header_rec.maintainable_flag := NULL;
31240           ELSE
31241             l_old_ins_header_rec.maintainable_flag := l_hist_csr.old_maintainable_flag;
31242             l_new_ins_header_rec.maintainable_flag := l_hist_csr.new_maintainable_flag;
31243           END IF;
31244 	  --end of fix 5211068
31245 
31246 
31247 
31248           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)
31249           THEN
31250             l_old_ins_header_rec.asset_criticality_code := NULL;
31251             l_new_ins_header_rec.asset_criticality_code := NULL;
31252           ELSE
31253             l_old_ins_header_rec.asset_criticality_code := l_hist_csr.old_asset_criticality_code;
31254             l_new_ins_header_rec.asset_criticality_code := l_hist_csr.new_asset_criticality_code;
31255           END IF;
31256 
31257           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)
31258           THEN
31259             l_old_ins_header_rec.category_id := NULL;
31260             l_new_ins_header_rec.category_id := NULL;
31261           ELSE
31262             l_old_ins_header_rec.category_id := l_hist_csr.old_category_id;
31263             l_new_ins_header_rec.category_id := l_hist_csr.new_category_id;
31264           END IF;
31265 
31266 
31267          --end of code for bug 4754569--
31268 
31269           l_old_ins_header_tbl(1):=l_old_ins_header_rec;
31270           csi_item_instance_pvt.Resolve_id_columns
31271            (p_instance_header_tbl  => l_old_ins_header_tbl);
31272           l_old_ins_header_rec:=l_old_ins_header_tbl(1);
31273 
31274 
31275           l_new_ins_header_tbl(1):=l_new_ins_header_rec;
31276           csi_item_instance_pvt.Resolve_id_columns
31277            (p_instance_header_tbl  => l_new_ins_header_tbl);
31278           l_new_ins_header_rec:=l_new_ins_header_tbl(1);
31279 
31280 
31281           /*
31282           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)
31283           THEN
31284             l_old_ins_header_rec.location_type_code := NULL;
31285             l_new_ins_header_rec.location_type_code := NULL;
31286           END IF;
31287 
31288           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)
31289           THEN
31290             l_old_ins_header_rec.install_location_type_code := NULL;
31291             l_new_ins_header_rec.install_location_type_code := NULL;
31292           END IF;
31293           */
31294 
31295           -- Added for bug 2763557
31296             IF l_old_ins_header_rec.in_transit_order_line_number = fnd_api.g_miss_num
31297             THEN
31298               l_old_ins_header_rec.in_transit_order_line_number := NULL;
31299             END IF;
31300 
31301             IF l_new_ins_header_rec.in_transit_order_line_number = fnd_api.g_miss_num
31302             THEN
31303               l_new_ins_header_rec.in_transit_order_line_number := NULL;
31304             END IF;
31305           -- End addition for bug 2763557
31306 
31307             IF l_old_ins_header_rec.in_transit_order_number = fnd_api.g_miss_num
31308             THEN
31309                l_old_ins_header_rec.in_transit_order_number := NULL;
31310             END IF;
31311 
31312             IF l_new_ins_header_rec.in_transit_order_number = fnd_api.g_miss_num
31313             THEN
31314                l_new_ins_header_rec.in_transit_order_number := NULL;
31315             END IF;
31316 
31317 
31318             IF l_old_ins_header_rec.sales_order_number = fnd_api.g_miss_num
31319             THEN
31320                l_old_ins_header_rec.sales_order_number := NULL;
31321             END IF;
31322 
31323             IF l_new_ins_header_rec.sales_order_number = fnd_api.g_miss_num
31324             THEN
31325                l_new_ins_header_rec.sales_order_number := NULL;
31326             END IF;
31327 
31328             IF l_old_ins_header_rec.sales_order_line_number = fnd_api.g_miss_num
31329             THEN
31330                l_old_ins_header_rec.sales_order_line_number := NULL;
31331             END IF;
31332 
31333             IF l_new_ins_header_rec.sales_order_line_number = fnd_api.g_miss_num
31334             THEN
31335                l_new_ins_header_rec.sales_order_line_number := NULL;
31336             END IF;
31337 
31338 
31339             IF l_old_ins_header_rec.sales_order_date = fnd_api.g_miss_date
31340             THEN
31341                l_old_ins_header_rec.sales_order_date := NULL;
31342             END IF;
31343 
31344             IF l_new_ins_header_rec.sales_order_date = fnd_api.g_miss_date
31345             THEN
31346                l_new_ins_header_rec.sales_order_date := NULL;
31347             END IF;
31348 
31349 
31350   -- Added for tar 14834588.600
31351           IF l_old_ins_header_rec.current_loc_address1= fnd_api.g_miss_char
31352           THEN
31353              l_old_ins_header_rec.current_loc_address1 := NULL;
31354           END IF;
31355 
31356           IF l_new_ins_header_rec.current_loc_address1= fnd_api.g_miss_char
31357           THEN
31358              l_new_ins_header_rec.current_loc_address1 := NULL;
31359           END IF;
31360 
31361           IF l_old_ins_header_rec.current_loc_address2= fnd_api.g_miss_char
31362           THEN
31363              l_old_ins_header_rec.current_loc_address2 := NULL;
31364           END IF;
31365 
31366           IF l_new_ins_header_rec.current_loc_address2= fnd_api.g_miss_char
31367           THEN
31368              l_new_ins_header_rec.current_loc_address2 := NULL;
31369           END IF;
31370 
31371           IF l_old_ins_header_rec.current_loc_address3= fnd_api.g_miss_char
31372           THEN
31373              l_old_ins_header_rec.current_loc_address3 := NULL;
31374           END IF;
31375 
31376           IF l_new_ins_header_rec.current_loc_address3= fnd_api.g_miss_char
31377           THEN
31378              l_new_ins_header_rec.current_loc_address3 := NULL;
31379           END IF;
31380 
31381           IF l_old_ins_header_rec.current_loc_address4= fnd_api.g_miss_char
31382           THEN
31383              l_old_ins_header_rec.current_loc_address4 := NULL;
31384           END IF;
31385 
31386           IF l_new_ins_header_rec.current_loc_address4= fnd_api.g_miss_char
31387           THEN
31388              l_new_ins_header_rec.current_loc_address4 := NULL;
31389           END IF;
31390 
31391           IF l_old_ins_header_rec.current_loc_city= fnd_api.g_miss_char
31392           THEN
31393              l_old_ins_header_rec.current_loc_city := NULL;
31394           END IF;
31395 
31396           IF l_new_ins_header_rec.current_loc_city= fnd_api.g_miss_char
31397           THEN
31398              l_new_ins_header_rec.current_loc_city := NULL;
31399           END IF;
31400 
31401           IF l_old_ins_header_rec.current_loc_state= fnd_api.g_miss_char
31402           THEN
31403              l_old_ins_header_rec.current_loc_state := NULL;
31404           END IF;
31405 
31406           IF l_new_ins_header_rec.current_loc_state= fnd_api.g_miss_char
31407           THEN
31408              l_new_ins_header_rec.current_loc_state := NULL;
31409           END IF;
31410 
31411           IF l_old_ins_header_rec.current_loc_postal_code= fnd_api.g_miss_char
31412           THEN
31413              l_old_ins_header_rec.current_loc_postal_code := NULL;
31414           END IF;
31415 
31416           IF l_new_ins_header_rec.current_loc_postal_code= fnd_api.g_miss_char
31417           THEN
31418              l_new_ins_header_rec.current_loc_postal_code := NULL;
31419           END IF;
31420 
31421           IF l_old_ins_header_rec.current_loc_country= fnd_api.g_miss_char
31422           THEN
31423              l_old_ins_header_rec.current_loc_country := NULL;
31424           END IF;
31425 
31426           IF l_new_ins_header_rec.current_loc_country= fnd_api.g_miss_char
31427           THEN
31428              l_new_ins_header_rec.current_loc_country := NULL;
31429           END IF;
31430 
31431           IF l_old_ins_header_rec.install_loc_address1= fnd_api.g_miss_char
31432           THEN
31433              l_old_ins_header_rec.install_loc_address1 := NULL;
31434           END IF;
31435 
31436           IF l_new_ins_header_rec.install_loc_address1= fnd_api.g_miss_char
31437           THEN
31438              l_new_ins_header_rec.install_loc_address1 := NULL;
31439           END IF;
31440 
31441           IF l_old_ins_header_rec.install_loc_address2= fnd_api.g_miss_char
31442           THEN
31443              l_old_ins_header_rec.install_loc_address2 := NULL;
31444           END IF;
31445 
31446           IF l_new_ins_header_rec.install_loc_address2= fnd_api.g_miss_char
31447           THEN
31448              l_new_ins_header_rec.install_loc_address2 := NULL;
31449           END IF;
31450 
31451           IF l_old_ins_header_rec.install_loc_address3= fnd_api.g_miss_char
31452           THEN
31453              l_old_ins_header_rec.install_loc_address3 := NULL;
31454           END IF;
31455 
31456           IF l_new_ins_header_rec.install_loc_address3= fnd_api.g_miss_char
31457           THEN
31458              l_new_ins_header_rec.install_loc_address3 := NULL;
31459           END IF;
31460 
31461           IF l_old_ins_header_rec.install_loc_address4= fnd_api.g_miss_char
31462           THEN
31463              l_old_ins_header_rec.install_loc_address4 := NULL;
31464           END IF;
31465 
31466           IF l_new_ins_header_rec.install_loc_address4= fnd_api.g_miss_char
31467           THEN
31468              l_new_ins_header_rec.install_loc_address4 := NULL;
31469           END IF;
31470 
31471           IF l_old_ins_header_rec.install_loc_city= fnd_api.g_miss_char
31472           THEN
31473              l_old_ins_header_rec.install_loc_city := NULL;
31474           END IF;
31475 
31476           IF l_new_ins_header_rec.install_loc_city= fnd_api.g_miss_char
31477           THEN
31478              l_new_ins_header_rec.install_loc_city := NULL;
31479           END IF;
31480 
31481           IF l_old_ins_header_rec.install_loc_state= fnd_api.g_miss_char
31482           THEN
31483              l_old_ins_header_rec.install_loc_state := NULL;
31484           END IF;
31485 
31486           IF l_new_ins_header_rec.install_loc_state= fnd_api.g_miss_char
31487           THEN
31488              l_new_ins_header_rec.install_loc_state := NULL;
31489           END IF;
31490 
31491           IF l_old_ins_header_rec.install_loc_postal_code= fnd_api.g_miss_char
31492           THEN
31493              l_old_ins_header_rec.install_loc_postal_code := NULL;
31494           END IF;
31495 
31496           IF l_new_ins_header_rec.install_loc_postal_code= fnd_api.g_miss_char
31497           THEN
31498              l_new_ins_header_rec.install_loc_postal_code := NULL;
31499           END IF;
31500 
31501           IF l_old_ins_header_rec.install_loc_country= fnd_api.g_miss_char
31502           THEN
31503              l_old_ins_header_rec.install_loc_country := NULL;
31504           END IF;
31505 
31506           IF l_new_ins_header_rec.install_loc_country= fnd_api.g_miss_char
31507           THEN
31508              l_new_ins_header_rec.install_loc_country := NULL;
31509           END IF;
31510 
31511           IF l_old_ins_header_rec.unit_of_measure_name= fnd_api.g_miss_char
31512           THEN
31513              l_old_ins_header_rec.unit_of_measure_name := NULL;
31514           END IF;
31515 
31516           IF l_new_ins_header_rec.unit_of_measure_name= fnd_api.g_miss_char
31517           THEN
31518              l_new_ins_header_rec.unit_of_measure_name := NULL;
31519           END IF;
31520 
31521           IF l_old_ins_header_rec.accounting_class= fnd_api.g_miss_char
31522           THEN
31523              l_old_ins_header_rec.accounting_class := NULL;
31524           END IF;
31525 
31526           IF l_new_ins_header_rec.accounting_class= fnd_api.g_miss_char
31527           THEN
31528              l_new_ins_header_rec.accounting_class := NULL;
31529           END IF;
31530 
31531           IF l_old_ins_header_rec.instance_condition= fnd_api.g_miss_char
31532           THEN
31533              l_old_ins_header_rec.instance_condition := NULL;
31534           END IF;
31535 
31536           IF l_new_ins_header_rec.instance_condition= fnd_api.g_miss_char
31537           THEN
31538              l_new_ins_header_rec.instance_condition := NULL;
31539           END IF;
31540 
31541           IF l_old_ins_header_rec.instance_status= fnd_api.g_miss_char
31542           THEN
31543              l_old_ins_header_rec.instance_status := NULL;
31544           END IF;
31545 
31546           IF l_new_ins_header_rec.instance_status= fnd_api.g_miss_char
31547           THEN
31548              l_new_ins_header_rec.instance_status := NULL;
31549           END IF;
31550 
31551           IF l_old_ins_header_rec.system_name= fnd_api.g_miss_char
31552           THEN
31553              l_old_ins_header_rec.system_name := NULL;
31554           END IF;
31555 
31556           IF l_new_ins_header_rec.system_name= fnd_api.g_miss_char
31557           THEN
31558              l_new_ins_header_rec.system_name := NULL;
31559           END IF;
31560 
31561           IF l_old_ins_header_rec.instance_type_name= fnd_api.g_miss_char
31562           THEN
31563              l_old_ins_header_rec.instance_type_name := NULL;
31564           END IF;
31565 
31566           IF l_new_ins_header_rec.instance_type_name= fnd_api.g_miss_char
31567           THEN
31568              l_new_ins_header_rec.instance_type_name := NULL;
31569           END IF;
31570 
31571           IF l_old_ins_header_rec.inv_organization_name= fnd_api.g_miss_char
31572           THEN
31573              l_old_ins_header_rec.inv_organization_name := NULL;
31574           END IF;
31575 
31576           IF l_new_ins_header_rec.inv_organization_name= fnd_api.g_miss_char
31577           THEN
31578              l_new_ins_header_rec.inv_organization_name := NULL;
31579           END IF;
31580 
31581           IF l_old_ins_header_rec.pa_project_name= fnd_api.g_miss_char
31582           THEN
31583              l_old_ins_header_rec.pa_project_name := NULL;
31584           END IF;
31585 
31586           IF l_new_ins_header_rec.pa_project_name= fnd_api.g_miss_char
31587           THEN
31588              l_new_ins_header_rec.pa_project_name := NULL;
31589           END IF;
31590 
31591           IF l_old_ins_header_rec.pa_project_number= fnd_api.g_miss_char
31592           THEN
31593              l_old_ins_header_rec.pa_project_number := NULL;
31594           END IF;
31595 
31596           IF l_new_ins_header_rec.pa_project_number= fnd_api.g_miss_char
31597           THEN
31598              l_new_ins_header_rec.pa_project_number := NULL;
31599           END IF;
31600 
31601           IF l_old_ins_header_rec.pa_task_name= fnd_api.g_miss_char
31602           THEN
31603              l_old_ins_header_rec.pa_task_name := NULL;
31604           END IF;
31605 
31606           IF l_new_ins_header_rec.pa_task_name= fnd_api.g_miss_char
31607           THEN
31608              l_new_ins_header_rec.pa_task_name := NULL;
31609           END IF;
31610 
31611           IF l_old_ins_header_rec.pa_task_number= fnd_api.g_miss_char
31612           THEN
31613              l_old_ins_header_rec.pa_task_number := NULL;
31614           END IF;
31615 
31616           IF l_new_ins_header_rec.pa_task_number= fnd_api.g_miss_char
31617           THEN
31618              l_new_ins_header_rec.pa_task_number := NULL;
31619           END IF;
31620 
31621           IF l_old_ins_header_rec.wip_entity_name= fnd_api.g_miss_char
31622           THEN
31623              l_old_ins_header_rec.wip_entity_name := NULL;
31624           END IF;
31625 
31626           IF l_new_ins_header_rec.wip_entity_name= fnd_api.g_miss_char
31627           THEN
31628              l_new_ins_header_rec.wip_entity_name := NULL;
31629           END IF;
31630 
31631           IF l_old_ins_header_rec.purchase_order_number= fnd_api.g_miss_char
31632           THEN
31633              l_old_ins_header_rec.purchase_order_number := NULL;
31634           END IF;
31635 
31636           IF l_new_ins_header_rec.purchase_order_number= fnd_api.g_miss_char
31637           THEN
31638              l_new_ins_header_rec.purchase_order_number := NULL;
31639           END IF;
31640 
31641           IF l_old_ins_header_rec.instance_usage_name= fnd_api.g_miss_char
31642           THEN
31643              l_old_ins_header_rec.instance_usage_name := NULL;
31644           END IF;
31645 
31646           IF l_new_ins_header_rec.instance_usage_name= fnd_api.g_miss_char
31647           THEN
31648              l_new_ins_header_rec.instance_usage_name := NULL;
31649           END IF;
31650 
31651           IF l_old_ins_header_rec.inv_locator_name= fnd_api.g_miss_char
31652           THEN
31653              l_old_ins_header_rec.inv_locator_name := NULL;
31654           END IF;
31655 
31656           IF l_new_ins_header_rec.inv_locator_name= fnd_api.g_miss_char
31657           THEN
31658              l_new_ins_header_rec.inv_locator_name := NULL;
31659           END IF;
31660 
31661           IF   (l_old_ins_header_rec.current_loc_number= fnd_api.g_miss_char)
31662             OR (nvl(l_old_ins_header_rec.location_type_code,'$$$$') <> 'HZ_PARTY_SITES')
31663           THEN
31664                 l_old_ins_header_rec.current_loc_number := NULL;
31665           END IF;
31666 
31667           IF   (l_new_ins_header_rec.current_loc_number= fnd_api.g_miss_char)
31668             OR (nvl(l_new_ins_header_rec.location_type_code, '$$$$') <> 'HZ_PARTY_SITES')
31669           THEN
31670                 l_new_ins_header_rec.current_loc_number := NULL;
31671           END IF;
31672 
31673           IF   (l_old_ins_header_rec.install_loc_number= fnd_api.g_miss_char)
31674             OR (nvl(l_old_ins_header_rec.install_location_type_code, '$$$$') <> 'HZ_PARTY_SITES')
31675           THEN
31676              l_old_ins_header_rec.install_loc_number := NULL;
31677           END IF;
31678 
31679           IF   (l_new_ins_header_rec.install_loc_number= fnd_api.g_miss_char)
31680             OR (nvl(l_new_ins_header_rec.install_location_type_code, '$$$$') <> 'HZ_PARTY_SITES')
31681           THEN
31682              l_new_ins_header_rec.install_loc_number := NULL;
31683           END IF;
31684        -- End of Addition for tar 14834588.600
31685 
31686 	        --Changes for bug 9177957
31687           IF l_old_ins_header_rec.INVENTORY_ITEM_NAME= fnd_api.g_miss_char
31688           THEN
31689              l_old_ins_header_rec.INVENTORY_ITEM_NAME := NULL;
31690           END IF;
31691 
31692           IF l_new_ins_header_rec.INVENTORY_ITEM_NAME= fnd_api.g_miss_char
31693           THEN
31694              l_new_ins_header_rec.INVENTORY_ITEM_NAME := NULL;
31695           END IF;
31696           --End of Changes for bug 9177957
31697 
31698           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)
31699           THEN
31700              l_old_ins_header_rec.location_type_code := NULL;
31701              l_new_ins_header_rec.location_type_code := NULL;
31702           END IF;
31703 
31704           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)
31705           THEN
31706              l_old_ins_header_rec.install_location_type_code := NULL;
31707              l_new_ins_header_rec.install_location_type_code := NULL;
31708           END IF;
31709 
31710 	 --start of code for eam integration columns--
31711           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)
31712           THEN
31713             l_old_ins_header_rec.network_asset_flag := NULL;
31714             l_new_ins_header_rec.network_asset_flag := NULL;
31715           ELSE
31716             l_old_ins_header_rec.network_asset_flag := l_hist_csr.old_network_asset_flag;
31717             l_new_ins_header_rec.network_asset_flag := l_hist_csr.new_network_asset_flag;
31718           END IF;
31719 
31720           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)
31721           THEN
31722             l_old_ins_header_rec.maintainable_flag := NULL;
31723             l_new_ins_header_rec.maintainable_flag := NULL;
31724           ELSE
31725             l_old_ins_header_rec.maintainable_flag := l_hist_csr.old_maintainable_flag;
31726             l_new_ins_header_rec.maintainable_flag := l_hist_csr.new_maintainable_flag;
31727           END IF;
31728 
31729           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)
31730           THEN
31731             l_old_ins_header_rec.pn_location_id := NULL;
31732             l_new_ins_header_rec.pn_location_id := NULL;
31733           ELSE
31734             l_old_ins_header_rec.pn_location_id := l_hist_csr.old_pn_location_id;
31735             l_new_ins_header_rec.pn_location_id := l_hist_csr.new_pn_location_id;
31736           END IF;
31737 
31738           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)
31739           THEN
31740             l_old_ins_header_rec.asset_criticality_code := NULL;
31741             l_new_ins_header_rec.asset_criticality_code := NULL;
31742           ELSE
31743             l_old_ins_header_rec.asset_criticality_code := l_hist_csr.old_asset_criticality_code;
31744             l_new_ins_header_rec.asset_criticality_code := l_hist_csr.new_asset_criticality_code;
31745           END IF;
31746 
31747           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)
31748           THEN
31749             l_old_ins_header_rec.category_id := NULL;
31750             l_new_ins_header_rec.category_id := NULL;
31751           ELSE
31752             l_old_ins_header_rec.category_id := l_hist_csr.old_category_id;
31753             l_new_ins_header_rec.category_id := l_hist_csr.new_category_id;
31754           END IF;
31755 
31756 
31757           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)
31758           THEN
31759             l_old_ins_header_rec.equipment_gen_object_id := NULL;
31760             l_new_ins_header_rec.equipment_gen_object_id := NULL;
31761           ELSE
31762             l_old_ins_header_rec.equipment_gen_object_id := l_hist_csr.old_equipment_gen_object_id;
31763             l_new_ins_header_rec.equipment_gen_object_id := l_hist_csr.new_equipment_gen_object_id;
31764           END IF;
31765 
31766 	  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)
31767           THEN
31768             l_old_ins_header_rec.instantiation_flag := NULL;
31769             l_new_ins_header_rec.instantiation_flag := NULL;
31770           ELSE
31771             l_old_ins_header_rec.instantiation_flag := l_hist_csr.old_instantiation_flag;
31772             l_new_ins_header_rec.instantiation_flag := l_hist_csr.new_instantiation_flag;
31773           END IF;
31774 
31775 	  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)
31776           THEN
31777             l_old_ins_header_rec.linear_location_id := NULL;
31778             l_new_ins_header_rec.linear_location_id := NULL;
31779           ELSE
31780             l_old_ins_header_rec.linear_location_id := l_hist_csr.old_linear_location_id;
31781             l_new_ins_header_rec.linear_location_id := l_hist_csr.new_linear_location_id;
31782           END IF;
31783 
31784 	  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)
31785           THEN
31786             l_old_ins_header_rec.operational_log_flag := NULL;
31787             l_new_ins_header_rec.operational_log_flag := NULL;
31788           ELSE
31789             l_old_ins_header_rec.operational_log_flag := l_hist_csr.old_operational_log_flag;
31790             l_new_ins_header_rec.operational_log_flag := l_hist_csr.new_operational_log_flag;
31791           END IF;
31792 
31793 	  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)
31794           THEN
31795             l_old_ins_header_rec.checkin_status := NULL;
31796             l_new_ins_header_rec.checkin_status := NULL;
31797           ELSE
31798             l_old_ins_header_rec.checkin_status := l_hist_csr.old_checkin_status;
31799             l_new_ins_header_rec.checkin_status := l_hist_csr.new_checkin_status;
31800           END IF;
31801 
31802 	  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)
31803           THEN
31804             l_old_ins_header_rec.supplier_warranty_exp_date := NULL;
31805             l_new_ins_header_rec.supplier_warranty_exp_date := NULL;
31806           ELSE
31807             l_old_ins_header_rec.supplier_warranty_exp_date := l_hist_csr.old_supplier_warranty_exp_date;
31808             l_new_ins_header_rec.supplier_warranty_exp_date := l_hist_csr.new_supplier_warranty_exp_date;
31809           END IF;
31810 
31811 
31812 	  IF NVL(l_hist_csr.old_attribute16,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute16,fnd_api.g_miss_char)
31813           THEN
31814             l_old_ins_header_rec.attribute16 := NULL;
31815             l_new_ins_header_rec.attribute16 := NULL;
31816           ELSE
31817             l_old_ins_header_rec.attribute16 := l_hist_csr.old_attribute16;
31818             l_new_ins_header_rec.attribute16 := l_hist_csr.new_attribute16;
31819           END IF;
31820 
31821 	  IF NVL(l_hist_csr.old_attribute17,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute17,fnd_api.g_miss_char)
31822           THEN
31823             l_old_ins_header_rec.attribute17 := NULL;
31824             l_new_ins_header_rec.attribute17 := NULL;
31825           ELSE
31826             l_old_ins_header_rec.attribute17 := l_hist_csr.old_attribute17;
31827             l_new_ins_header_rec.attribute17 := l_hist_csr.new_attribute17;
31828           END IF;
31829 
31830 	  IF NVL(l_hist_csr.old_attribute18,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute18,fnd_api.g_miss_char)
31831           THEN
31832             l_old_ins_header_rec.attribute18 := NULL;
31833             l_new_ins_header_rec.attribute18 := NULL;
31834           ELSE
31835             l_old_ins_header_rec.attribute18 := l_hist_csr.old_attribute18;
31836             l_new_ins_header_rec.attribute18 := l_hist_csr.new_attribute18;
31837           END IF;
31838 
31839 	  IF NVL(l_hist_csr.old_attribute19,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute19,fnd_api.g_miss_char)
31840           THEN
31841             l_old_ins_header_rec.attribute19 := NULL;
31842             l_new_ins_header_rec.attribute19 := NULL;
31843           ELSE
31844             l_old_ins_header_rec.attribute19 := l_hist_csr.old_attribute19;
31845             l_new_ins_header_rec.attribute19 := l_hist_csr.new_attribute19;
31846           END IF;
31847 
31848 	  IF NVL(l_hist_csr.old_attribute20,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute20,fnd_api.g_miss_char)
31849           THEN
31850             l_old_ins_header_rec.attribute20 := NULL;
31851             l_new_ins_header_rec.attribute20 := NULL;
31852           ELSE
31853             l_old_ins_header_rec.attribute20 := l_hist_csr.old_attribute20;
31854             l_new_ins_header_rec.attribute20 := l_hist_csr.new_attribute20;
31855           END IF;
31856 
31857 	  IF NVL(l_hist_csr.old_attribute21,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute21,fnd_api.g_miss_char)
31858           THEN
31859             l_old_ins_header_rec.attribute21 := NULL;
31860             l_new_ins_header_rec.attribute21 := NULL;
31861           ELSE
31862             l_old_ins_header_rec.attribute21 := l_hist_csr.old_attribute21;
31863             l_new_ins_header_rec.attribute21 := l_hist_csr.new_attribute21;
31864           END IF;
31865 
31866 	  IF NVL(l_hist_csr.old_attribute22,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute22,fnd_api.g_miss_char)
31867           THEN
31868             l_old_ins_header_rec.attribute22 := NULL;
31869             l_new_ins_header_rec.attribute22 := NULL;
31870           ELSE
31871             l_old_ins_header_rec.attribute22 := l_hist_csr.old_attribute22;
31872             l_new_ins_header_rec.attribute22 := l_hist_csr.new_attribute22;
31873           END IF;
31874 
31875 	  IF NVL(l_hist_csr.old_attribute23,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute23,fnd_api.g_miss_char)
31876           THEN
31877             l_old_ins_header_rec.attribute23 := NULL;
31878             l_new_ins_header_rec.attribute23 := NULL;
31879           ELSE
31880             l_old_ins_header_rec.attribute23 := l_hist_csr.old_attribute23;
31881             l_new_ins_header_rec.attribute23 := l_hist_csr.new_attribute23;
31882           END IF;
31883 
31884 	  IF NVL(l_hist_csr.old_attribute24,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute24,fnd_api.g_miss_char)
31885           THEN
31886             l_old_ins_header_rec.attribute24 := NULL;
31887             l_new_ins_header_rec.attribute24 := NULL;
31888           ELSE
31889             l_old_ins_header_rec.attribute24 := l_hist_csr.old_attribute24;
31890             l_new_ins_header_rec.attribute24 := l_hist_csr.new_attribute24;
31891           END IF;
31892 
31893 	  IF NVL(l_hist_csr.old_attribute25,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute25,fnd_api.g_miss_char)
31894           THEN
31895             l_old_ins_header_rec.attribute25 := NULL;
31896             l_new_ins_header_rec.attribute25 := NULL;
31897           ELSE
31898             l_old_ins_header_rec.attribute25 := l_hist_csr.old_attribute25;
31899             l_new_ins_header_rec.attribute25 := l_hist_csr.new_attribute25;
31900           END IF;
31901 
31902 	  IF NVL(l_hist_csr.old_attribute26,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute26,fnd_api.g_miss_char)
31903           THEN
31904             l_old_ins_header_rec.attribute26 := NULL;
31905             l_new_ins_header_rec.attribute26 := NULL;
31906           ELSE
31907             l_old_ins_header_rec.attribute26 := l_hist_csr.old_attribute26;
31908             l_new_ins_header_rec.attribute26 := l_hist_csr.new_attribute26;
31909           END IF;
31910 
31911 	  IF NVL(l_hist_csr.old_attribute27,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute27,fnd_api.g_miss_char)
31912           THEN
31913             l_old_ins_header_rec.attribute27 := NULL;
31914             l_new_ins_header_rec.attribute27 := NULL;
31915           ELSE
31916             l_old_ins_header_rec.attribute27 := l_hist_csr.old_attribute27;
31917             l_new_ins_header_rec.attribute27 := l_hist_csr.new_attribute27;
31918           END IF;
31919 
31920 	  IF NVL(l_hist_csr.old_attribute28,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute28,fnd_api.g_miss_char)
31921           THEN
31922             l_old_ins_header_rec.attribute28 := NULL;
31923             l_new_ins_header_rec.attribute28 := NULL;
31924           ELSE
31925             l_old_ins_header_rec.attribute28 := l_hist_csr.old_attribute28;
31926             l_new_ins_header_rec.attribute28 := l_hist_csr.new_attribute28;
31927           END IF;
31928 
31929 	  IF NVL(l_hist_csr.old_attribute29,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute29,fnd_api.g_miss_char)
31930           THEN
31931             l_old_ins_header_rec.attribute29 := NULL;
31932             l_new_ins_header_rec.attribute29 := NULL;
31933           ELSE
31934             l_old_ins_header_rec.attribute29 := l_hist_csr.old_attribute29;
31935             l_new_ins_header_rec.attribute29 := l_hist_csr.new_attribute29;
31936           END IF;
31937 
31938 	  IF NVL(l_hist_csr.old_attribute30,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute30,fnd_api.g_miss_char)
31939           THEN
31940             l_old_ins_header_rec.attribute30 := NULL;
31941             l_new_ins_header_rec.attribute30 := NULL;
31942           ELSE
31943             l_old_ins_header_rec.attribute30 := l_hist_csr.old_attribute30;
31944             l_new_ins_header_rec.attribute30 := l_hist_csr.new_attribute30;
31945           END IF;
31946 
31947 	 --end of code for eam integration columns--
31948 
31949 
31950 
31951 
31952 
31953       l_ins_header_rec.instance_id                 := l_hist_csr.instance_id ;
31954       l_ins_header_rec.old_instance_number         := l_old_ins_header_rec.instance_number ;
31955       l_ins_header_rec.new_instance_number         := l_new_ins_header_rec.instance_number ;
31956       l_ins_header_rec.old_external_reference      := l_old_ins_header_rec.external_reference ;
31957       l_ins_header_rec.new_external_reference      := l_new_ins_header_rec.external_reference ;
31958       l_ins_header_rec.old_inventory_item_id       := l_old_ins_header_rec.inventory_item_id  ;
31959       l_ins_header_rec.new_inventory_item_id       := l_new_ins_header_rec.inventory_item_id  ;
31960       l_ins_header_rec.old_inventory_item_name     := l_old_ins_header_rec.inventory_item_name  ;  -- Bug 9177957
31961       l_ins_header_rec.new_inventory_item_name     := l_new_ins_header_rec.inventory_item_name  ;  -- Bug 9177957
31962       l_ins_header_rec.old_inventory_revision      := l_old_ins_header_rec.inventory_revision ;
31963       l_ins_header_rec.new_inventory_revision      := l_new_ins_header_rec.inventory_revision ;
31964       l_ins_header_rec.old_inv_master_org_id       := l_old_ins_header_rec.inv_master_organization_id ;
31965       l_ins_header_rec.new_inv_master_org_id       := l_new_ins_header_rec.inv_master_organization_id ;
31966       l_ins_header_rec.old_serial_number           := l_old_ins_header_rec.serial_number ;
31967       l_ins_header_rec.new_serial_number           := l_new_ins_header_rec.serial_number ;
31968       l_ins_header_rec.old_mfg_serial_number_flag  := l_old_ins_header_rec.mfg_serial_number_flag ;
31969       l_ins_header_rec.new_mfg_serial_number_flag  := l_new_ins_header_rec.mfg_serial_number_flag ;
31970       l_ins_header_rec.old_lot_number              := l_old_ins_header_rec.lot_number ;
31971       l_ins_header_rec.new_lot_number              := l_new_ins_header_rec.lot_number ;
31972       l_ins_header_rec.old_quantity                := l_old_ins_header_rec.quantity ;
31973       l_ins_header_rec.new_quantity                := l_new_ins_header_rec.quantity ;
31974       l_ins_header_rec.old_unit_of_measure_name    := l_old_ins_header_rec.unit_of_measure_name ;
31975       l_ins_header_rec.new_unit_of_measure_name    := l_new_ins_header_rec.unit_of_measure_name ;
31976       l_ins_header_rec.old_unit_of_measure         := l_old_ins_header_rec.unit_of_measure ;
31977       l_ins_header_rec.new_unit_of_measure         := l_new_ins_header_rec.unit_of_measure ;
31978       l_ins_header_rec.old_accounting_class        := l_old_ins_header_rec.accounting_class ;
31979       l_ins_header_rec.new_accounting_class        := l_new_ins_header_rec.accounting_class ;
31980       l_ins_header_rec.old_accounting_class_code   := l_old_ins_header_rec.accounting_class_code ;
31981       l_ins_header_rec.new_accounting_class_code   := l_new_ins_header_rec.accounting_class_code ;
31982       l_ins_header_rec.old_instance_condition      := l_old_ins_header_rec.instance_condition ;
31983       l_ins_header_rec.new_instance_condition      := l_new_ins_header_rec.instance_condition ;
31984       l_ins_header_rec.old_instance_condition_id   := l_old_ins_header_rec.instance_condition_id ;
31985       l_ins_header_rec.new_instance_condition_id   := l_new_ins_header_rec.instance_condition_id ;
31986       l_ins_header_rec.old_instance_status         := l_old_ins_header_rec.instance_status ;
31987       l_ins_header_rec.new_instance_status         := l_new_ins_header_rec.instance_status ;
31988       l_ins_header_rec.old_instance_status_id      := l_old_ins_header_rec.instance_status_id ;
31989       l_ins_header_rec.new_instance_status_id      := l_new_ins_header_rec.instance_status_id ;
31990       l_ins_header_rec.old_customer_view_flag      := l_old_ins_header_rec.customer_view_flag ;
31991       l_ins_header_rec.new_customer_view_flag      := l_new_ins_header_rec.customer_view_flag ;
31992       l_ins_header_rec.old_merchant_view_flag      := l_old_ins_header_rec.merchant_view_flag ;
31993       l_ins_header_rec.new_merchant_view_flag      := l_new_ins_header_rec.merchant_view_flag ;
31994       l_ins_header_rec.old_sellable_flag           := l_old_ins_header_rec.sellable_flag      ;
31995       l_ins_header_rec.new_sellable_flag           := l_new_ins_header_rec.sellable_flag      ;
31996       l_ins_header_rec.old_system_id               := l_old_ins_header_rec.system_id          ;
31997       l_ins_header_rec.new_system_id               := l_new_ins_header_rec.system_id          ;
31998       l_ins_header_rec.old_system_name             := l_old_ins_header_rec.system_name        ;
31999       l_ins_header_rec.new_system_name             := l_new_ins_header_rec.system_name        ;
32000       l_ins_header_rec.old_instance_type_code      := l_old_ins_header_rec.instance_type_code ;
32001       l_ins_header_rec.new_instance_type_code      := l_new_ins_header_rec.instance_type_code ;
32002       l_ins_header_rec.old_instance_type_name      := l_old_ins_header_rec.instance_type_name ;
32003       l_ins_header_rec.new_instance_type_name      := l_new_ins_header_rec.instance_type_name ;
32004       l_ins_header_rec.old_active_start_date       := l_old_ins_header_rec.active_start_date  ;
32005       l_ins_header_rec.new_active_start_date       := l_new_ins_header_rec.active_start_date  ;
32006       l_ins_header_rec.old_active_end_date         := l_old_ins_header_rec.active_end_date    ;
32007       l_ins_header_rec.new_active_end_date         := l_new_ins_header_rec.active_end_date    ;
32008       l_ins_header_rec.old_location_type_code      := l_old_ins_header_rec.location_type_code ;
32009       l_ins_header_rec.new_location_type_code      := l_new_ins_header_rec.location_type_code ;
32010       l_ins_header_rec.old_location_id             := l_old_ins_header_rec.location_id        ;
32011       l_ins_header_rec.new_location_id             := l_new_ins_header_rec.location_id        ;
32012       l_ins_header_rec.old_inv_organization_id     := l_old_ins_header_rec.inv_organization_id ;
32013       l_ins_header_rec.new_inv_organization_id     := l_new_ins_header_rec.inv_organization_id ;
32014       l_ins_header_rec.old_inv_organization_name   := l_old_ins_header_rec.inv_organization_name ;
32015       l_ins_header_rec.new_inv_organization_name   := l_new_ins_header_rec.inv_organization_name ;
32016       l_ins_header_rec.old_inv_subinventory_name   := l_old_ins_header_rec.inv_subinventory_name ;
32017       l_ins_header_rec.new_inv_subinventory_name   := l_new_ins_header_rec.inv_subinventory_name ;
32018       l_ins_header_rec.old_inv_locator_id          := l_old_ins_header_rec.inv_locator_id       ;
32019       l_ins_header_rec.new_inv_locator_id          := l_new_ins_header_rec.inv_locator_id       ;
32020       l_ins_header_rec.old_pa_project_id           := l_old_ins_header_rec.pa_project_id        ;
32021       l_ins_header_rec.new_pa_project_id           := l_new_ins_header_rec.pa_project_id        ;
32022       l_ins_header_rec.old_pa_project_task_id      := l_old_ins_header_rec.pa_project_task_id   ;
32023       l_ins_header_rec.new_pa_project_task_id      := l_new_ins_header_rec.pa_project_task_id   ;
32024       l_ins_header_rec.old_pa_project_name         := l_old_ins_header_rec.pa_project_name      ;
32025       l_ins_header_rec.new_pa_project_name         := l_new_ins_header_rec.pa_project_name      ;
32026       l_ins_header_rec.old_pa_project_number       := l_old_ins_header_rec.pa_project_number    ;
32027       l_ins_header_rec.new_pa_project_number       := l_new_ins_header_rec.pa_project_number    ;
32028       l_ins_header_rec.old_pa_task_name            := l_old_ins_header_rec.pa_task_name         ;
32029       l_ins_header_rec.new_pa_task_name            := l_new_ins_header_rec.pa_task_name         ;
32030       l_ins_header_rec.old_pa_task_number          := l_old_ins_header_rec.pa_task_number       ;
32031       l_ins_header_rec.new_pa_task_number          := l_new_ins_header_rec.pa_task_number       ;
32032       l_ins_header_rec.old_in_transit_order_line_id:= l_old_ins_header_rec.in_transit_order_line_id ;
32033       l_ins_header_rec.new_in_transit_order_line_id:= l_new_ins_header_rec.in_transit_order_line_id ;
32034       l_ins_header_rec.old_in_transit_order_line_num := l_old_ins_header_rec.in_transit_order_line_number ;
32035       l_ins_header_rec.new_in_transit_order_line_num := l_new_ins_header_rec.in_transit_order_line_number ;
32036       l_ins_header_rec.old_in_transit_order_number := l_old_ins_header_rec.in_transit_order_number ;
32037       l_ins_header_rec.new_in_transit_order_number := l_new_ins_header_rec.in_transit_order_number ;
32038       l_ins_header_rec.old_wip_job_id              := l_old_ins_header_rec.wip_job_id    ;
32039       l_ins_header_rec.new_wip_job_id              := l_new_ins_header_rec.wip_job_id    ;
32040       l_ins_header_rec.old_wip_entity_name         := l_old_ins_header_rec.wip_entity_name ;
32041       l_ins_header_rec.new_wip_entity_name         := l_new_ins_header_rec.wip_entity_name ;
32042       l_ins_header_rec.old_po_order_line_id        := l_old_ins_header_rec.po_order_line_id;
32043       l_ins_header_rec.new_po_order_line_id        := l_new_ins_header_rec.po_order_line_id;
32044       l_ins_header_rec.old_last_oe_order_line_id   := l_old_ins_header_rec.last_oe_order_line_id ;
32045       l_ins_header_rec.new_last_oe_order_line_id   := l_new_ins_header_rec.last_oe_order_line_id ;
32046       l_ins_header_rec.old_last_oe_rma_line_id     := l_old_ins_header_rec.last_oe_rma_line_id ;
32047       l_ins_header_rec.new_last_oe_rma_line_id     := l_new_ins_header_rec.last_oe_rma_line_id ;
32048       l_ins_header_rec.old_last_po_po_line_id      := l_old_ins_header_rec.last_po_po_line_id ;
32049       l_ins_header_rec.new_last_po_po_line_id      := l_new_ins_header_rec.last_po_po_line_id ;
32050       l_ins_header_rec.old_last_oe_po_number       := l_old_ins_header_rec.last_oe_po_number ;
32051       l_ins_header_rec.new_last_oe_po_number       := l_new_ins_header_rec.last_oe_po_number ;
32052       l_ins_header_rec.old_last_wip_job_id         := l_old_ins_header_rec.last_wip_job_id ;
32053       l_ins_header_rec.new_last_wip_job_id         := l_new_ins_header_rec.last_wip_job_id ;
32054       l_ins_header_rec.old_last_pa_project_id      := l_old_ins_header_rec.last_pa_project_id ;
32055       l_ins_header_rec.new_last_pa_project_id      := l_new_ins_header_rec.last_pa_project_id ;
32056       l_ins_header_rec.old_last_pa_task_id         := l_old_ins_header_rec.last_pa_task_id ;
32057       l_ins_header_rec.new_last_pa_task_id         := l_new_ins_header_rec.last_pa_task_id ;
32058       l_ins_header_rec.old_last_oe_agreement_id    := l_old_ins_header_rec.last_oe_agreement_id ;
32059       l_ins_header_rec.new_last_oe_agreement_id    := l_new_ins_header_rec.last_oe_agreement_id ;
32060       l_ins_header_rec.old_install_date            := l_old_ins_header_rec.install_date ;       --added for 2671179
32061       l_ins_header_rec.new_install_date            := l_new_ins_header_rec.install_date ;       --added for 2671179
32062       l_ins_header_rec.old_manually_created_flag   := NULL ;
32063       l_ins_header_rec.new_manually_created_flag   := NULL ;
32064       l_ins_header_rec.old_return_by_date          := l_old_ins_header_rec.return_by_date ;     --added for 2671179
32065       l_ins_header_rec.new_return_by_date          := l_new_ins_header_rec.return_by_date ;     --added for 2671179
32066       l_ins_header_rec.old_actual_return_date      := l_old_ins_header_rec.actual_return_date ; --added for 2671179
32067       l_ins_header_rec.new_actual_return_date      := l_new_ins_header_rec.actual_return_date ; --added for 2671179
32068       l_ins_header_rec.old_creation_complete_flag  := NULL ;
32069       l_ins_header_rec.new_creation_complete_flag  := NULL ;
32070       l_ins_header_rec.old_completeness_flag       := l_old_ins_header_rec.completeness_flag ;
32071       l_ins_header_rec.new_completeness_flag       := l_new_ins_header_rec.completeness_flag ;
32072       l_ins_header_rec.old_context                 := l_old_ins_header_rec.context ;
32073       l_ins_header_rec.new_context                 := l_new_ins_header_rec.context ;
32074       l_ins_header_rec.old_attribute1              := l_old_ins_header_rec.attribute1 ;
32075       l_ins_header_rec.new_attribute1              := l_new_ins_header_rec.attribute1 ;
32076       l_ins_header_rec.old_attribute2              := l_old_ins_header_rec.attribute2 ;
32077       l_ins_header_rec.new_attribute2              := l_new_ins_header_rec.attribute2 ;
32078       l_ins_header_rec.old_attribute3              := l_old_ins_header_rec.attribute3 ;
32079       l_ins_header_rec.new_attribute3              := l_new_ins_header_rec.attribute3 ;
32080       l_ins_header_rec.old_attribute4              := l_old_ins_header_rec.attribute4 ;
32081       l_ins_header_rec.new_attribute4              := l_new_ins_header_rec.attribute4 ;
32082       l_ins_header_rec.old_attribute5              := l_old_ins_header_rec.attribute5 ;
32083       l_ins_header_rec.new_attribute5              := l_new_ins_header_rec.attribute5 ;
32084       l_ins_header_rec.old_attribute6              := l_old_ins_header_rec.attribute6 ;
32085       l_ins_header_rec.new_attribute6              := l_new_ins_header_rec.attribute6 ;
32086       l_ins_header_rec.old_attribute7              := l_old_ins_header_rec.attribute7 ;
32087       l_ins_header_rec.new_attribute7              := l_new_ins_header_rec.attribute7 ;
32088       l_ins_header_rec.old_attribute8              := l_old_ins_header_rec.attribute8 ;
32089       l_ins_header_rec.new_attribute8              := l_new_ins_header_rec.attribute8 ;
32090       l_ins_header_rec.old_attribute9              := l_old_ins_header_rec.attribute9 ;
32091       l_ins_header_rec.new_attribute9              := l_new_ins_header_rec.attribute9 ;
32092       l_ins_header_rec.old_attribute10             := l_old_ins_header_rec.attribute10 ;
32093       l_ins_header_rec.new_attribute10             := l_new_ins_header_rec.attribute10 ;
32094       l_ins_header_rec.old_attribute11             := l_old_ins_header_rec.attribute11 ;
32095       l_ins_header_rec.new_attribute11             := l_new_ins_header_rec.attribute11 ;
32096       l_ins_header_rec.old_attribute12             := l_old_ins_header_rec.attribute12 ;
32097       l_ins_header_rec.new_attribute12             := l_new_ins_header_rec.attribute12 ;
32098       l_ins_header_rec.old_attribute13             := l_old_ins_header_rec.attribute13 ;
32099       l_ins_header_rec.new_attribute13             := l_new_ins_header_rec.attribute13 ;
32100       l_ins_header_rec.old_attribute14             := l_old_ins_header_rec.attribute14 ;
32101       l_ins_header_rec.new_attribute14             := l_new_ins_header_rec.attribute14 ;
32102       l_ins_header_rec.old_attribute15             := l_old_ins_header_rec.attribute15 ;
32103       l_ins_header_rec.new_attribute15             := l_new_ins_header_rec.attribute15 ;
32104       l_ins_header_rec.old_last_txn_line_detail_id := l_old_ins_header_rec.last_txn_line_detail_id ;
32105       l_ins_header_rec.new_last_txn_line_detail_id := l_new_ins_header_rec.last_txn_line_detail_id ;
32106       l_ins_header_rec.old_install_location_type_code := l_old_ins_header_rec.install_location_type_code ;
32107       l_ins_header_rec.new_install_location_type_code := l_new_ins_header_rec.install_location_type_code ;
32108       l_ins_header_rec.old_install_location_id     := l_old_ins_header_rec.install_location_id ;
32109       l_ins_header_rec.new_install_location_id     := l_new_ins_header_rec.install_location_id ;
32110       l_ins_header_rec.old_instance_usage_code     := l_old_ins_header_rec.instance_usage_code ;
32111       l_ins_header_rec.new_instance_usage_code     := l_new_ins_header_rec.instance_usage_code ;
32112       l_ins_header_rec.old_current_loc_address1    := l_old_ins_header_rec.current_loc_address1 ;
32113       l_ins_header_rec.new_current_loc_address1    := l_new_ins_header_rec.current_loc_address1 ;
32114       l_ins_header_rec.old_current_loc_address2    := l_old_ins_header_rec.current_loc_address2 ;
32115       l_ins_header_rec.new_current_loc_address2    := l_new_ins_header_rec.current_loc_address2 ;
32116       l_ins_header_rec.old_current_loc_address3    := l_old_ins_header_rec.current_loc_address3 ;
32117       l_ins_header_rec.new_current_loc_address3    := l_new_ins_header_rec.current_loc_address3 ;
32118       l_ins_header_rec.old_current_loc_address4    := l_old_ins_header_rec.current_loc_address4 ;
32119       l_ins_header_rec.new_current_loc_address4    := l_new_ins_header_rec.current_loc_address4 ;
32120       l_ins_header_rec.old_current_loc_city        := l_old_ins_header_rec.current_loc_city     ;
32121       l_ins_header_rec.new_current_loc_city        := l_new_ins_header_rec.current_loc_city     ;
32122       l_ins_header_rec.old_current_loc_postal_code := l_old_ins_header_rec.current_loc_postal_code ;
32123       l_ins_header_rec.new_current_loc_postal_code := l_new_ins_header_rec.current_loc_postal_code ;
32124       l_ins_header_rec.old_current_loc_country     := l_old_ins_header_rec.current_loc_country     ;
32125       l_ins_header_rec.new_current_loc_country     := l_new_ins_header_rec.current_loc_country     ;
32126       l_ins_header_rec.old_current_loc_state       := l_old_ins_header_rec.current_loc_state     ;
32127       l_ins_header_rec.new_current_loc_state       := l_new_ins_header_rec.current_loc_state     ;
32128       l_ins_header_rec.old_sales_order_number      := l_old_ins_header_rec.sales_order_number      ;
32129       l_ins_header_rec.new_sales_order_number      := l_new_ins_header_rec.sales_order_number      ;
32130       l_ins_header_rec.old_sales_order_line_number := l_old_ins_header_rec.sales_order_line_number ;
32131       l_ins_header_rec.new_sales_order_line_number := l_new_ins_header_rec.sales_order_line_number ;
32132       l_ins_header_rec.old_sales_order_date        := l_old_ins_header_rec.sales_order_date        ;
32133       l_ins_header_rec.new_sales_order_date        := l_new_ins_header_rec.sales_order_date        ;
32134       l_ins_header_rec.old_purchase_order_number   := l_old_ins_header_rec.purchase_order_number   ;
32135       l_ins_header_rec.new_purchase_order_number   := l_new_ins_header_rec.purchase_order_number   ;
32136       l_ins_header_rec.old_instance_usage_name     := l_old_ins_header_rec.instance_usage_name     ;
32137       l_ins_header_rec.new_instance_usage_name     := l_new_ins_header_rec.instance_usage_name     ;
32138       l_ins_header_rec.old_install_loc_address1    := l_old_ins_header_rec.install_loc_address1 ;
32139       l_ins_header_rec.new_install_loc_address1    := l_new_ins_header_rec.install_loc_address1 ;
32140       l_ins_header_rec.old_install_loc_address2    := l_old_ins_header_rec.install_loc_address2 ;
32141       l_ins_header_rec.new_install_loc_address2    := l_new_ins_header_rec.install_loc_address2 ;
32142       l_ins_header_rec.old_install_loc_address3    := l_old_ins_header_rec.install_loc_address3 ;
32143       l_ins_header_rec.new_install_loc_address3    := l_new_ins_header_rec.install_loc_address3 ;
32144       l_ins_header_rec.old_install_loc_address4    := l_old_ins_header_rec.install_loc_address4 ;
32145       l_ins_header_rec.new_install_loc_address4    := l_new_ins_header_rec.install_loc_address4 ;
32146       l_ins_header_rec.old_install_loc_city        := l_old_ins_header_rec.install_loc_city     ;
32147       l_ins_header_rec.new_install_loc_city        := l_new_ins_header_rec.install_loc_city     ;
32148       l_ins_header_rec.old_install_loc_postal_code := l_old_ins_header_rec.install_loc_postal_code ;
32149       l_ins_header_rec.new_install_loc_postal_code := l_new_ins_header_rec.install_loc_postal_code ;
32150       l_ins_header_rec.old_install_loc_country     := l_old_ins_header_rec.install_loc_country     ;
32151       l_ins_header_rec.new_install_loc_country     := l_new_ins_header_rec.install_loc_country     ;
32152       l_ins_header_rec.old_install_loc_state       := l_old_ins_header_rec.install_loc_state     ;
32153       l_ins_header_rec.new_install_loc_state       := l_new_ins_header_rec.install_loc_state     ;
32154       l_ins_header_rec.old_oe_agreement_name       := l_old_ins_header_rec.last_oe_agreement_name ;
32155       l_ins_header_rec.new_oe_agreement_name       := l_new_ins_header_rec.last_oe_agreement_name ;
32156       l_ins_header_rec.old_inv_locator_name        := l_old_ins_header_rec.inv_locator_name     ;
32157       l_ins_header_rec.new_inv_locator_name        := l_new_ins_header_rec.inv_locator_name     ;
32158       l_ins_header_rec.old_current_location_number := l_old_ins_header_rec.current_loc_number;
32159       l_ins_header_rec.new_current_location_number := l_new_ins_header_rec.current_loc_number;
32160       l_ins_header_rec.old_install_location_number := l_old_ins_header_rec.install_loc_number;
32161       l_ins_header_rec.new_install_location_number := l_new_ins_header_rec.install_loc_number;
32162       --start of code change for eam integration--
32163       l_ins_header_rec.old_network_asset_flag      := l_old_ins_header_rec.network_asset_flag ;
32164       l_ins_header_rec.new_network_asset_flag      := l_new_ins_header_rec.network_asset_flag ;
32165       l_ins_header_rec.old_maintainable_flag       := l_old_ins_header_rec.maintainable_flag ;
32166       l_ins_header_rec.new_maintainable_flag       := l_new_ins_header_rec.maintainable_flag ;
32167       l_ins_header_rec.old_pn_location_id          := l_old_ins_header_rec.pn_location_id ;
32168       l_ins_header_rec.new_pn_location_id          := l_new_ins_header_rec.pn_location_id ;
32169       l_ins_header_rec.old_asset_criticality_code  := l_old_ins_header_rec.asset_criticality_code ;
32170       l_ins_header_rec.new_asset_criticality_code  := l_new_ins_header_rec.asset_criticality_code ;
32171       l_ins_header_rec.old_category_id             := l_old_ins_header_rec.category_id ;
32172       l_ins_header_rec.new_category_id             := l_new_ins_header_rec.category_id ;
32173 
32174       --start of code for bug 4754569--
32175       l_ins_header_rec.old_criticality             := l_old_ins_header_rec.criticality ;
32176       l_ins_header_rec.new_criticality             := l_new_ins_header_rec.criticality ;
32177       l_ins_header_rec.old_category_name           := l_old_ins_header_rec.category_name ;
32178       l_ins_header_rec.new_category_name           := l_new_ins_header_rec.category_name ;
32179       --end of code for bug 4754569--
32180 
32181       l_ins_header_rec.old_maintainable                := l_old_ins_header_rec.maintainable; --for bug 5211068
32182       l_ins_header_rec.new_maintainable                := l_new_ins_header_rec.maintainable;
32183 
32184       l_ins_header_rec.old_equipment_gen_object_id := l_old_ins_header_rec.equipment_gen_object_id ;
32185       l_ins_header_rec.new_equipment_gen_object_id := l_new_ins_header_rec.equipment_gen_object_id ;
32186       l_ins_header_rec.old_instantiation_flag      := l_old_ins_header_rec.instantiation_flag ;
32187       l_ins_header_rec.new_instantiation_flag      := l_new_ins_header_rec.instantiation_flag ;
32188       l_ins_header_rec.old_linear_location_id      := l_old_ins_header_rec.linear_location_id ;
32189       l_ins_header_rec.new_linear_location_id      := l_new_ins_header_rec.linear_location_id ;
32190       l_ins_header_rec.old_operational_log_flag    := l_old_ins_header_rec.operational_log_flag ;
32191       l_ins_header_rec.new_operational_log_flag    := l_new_ins_header_rec.operational_log_flag ;
32192       l_ins_header_rec.old_checkin_status          := l_old_ins_header_rec.checkin_status;
32193       l_ins_header_rec.new_checkin_status          := l_new_ins_header_rec.checkin_status;
32194       l_ins_header_rec.old_supplier_warranty_exp_date := l_old_ins_header_rec.supplier_warranty_exp_date;
32195       l_ins_header_rec.new_supplier_warranty_exp_date := l_new_ins_header_rec.supplier_warranty_exp_date;
32196       l_ins_header_rec.old_attribute16              := l_old_ins_header_rec.attribute16 ;
32197       l_ins_header_rec.new_attribute16              := l_new_ins_header_rec.attribute16 ;
32198       l_ins_header_rec.old_attribute17              := l_old_ins_header_rec.attribute17 ;
32199       l_ins_header_rec.new_attribute17              := l_new_ins_header_rec.attribute17 ;
32200       l_ins_header_rec.old_attribute18              := l_old_ins_header_rec.attribute18 ;
32201       l_ins_header_rec.new_attribute18              := l_new_ins_header_rec.attribute18 ;
32202       l_ins_header_rec.old_attribute19              := l_old_ins_header_rec.attribute19 ;
32203       l_ins_header_rec.new_attribute19              := l_new_ins_header_rec.attribute19 ;
32204       l_ins_header_rec.old_attribute20              := l_old_ins_header_rec.attribute20 ;
32205       l_ins_header_rec.new_attribute20              := l_new_ins_header_rec.attribute20 ;
32206       l_ins_header_rec.old_attribute21              := l_old_ins_header_rec.attribute21 ;
32207       l_ins_header_rec.new_attribute21              := l_new_ins_header_rec.attribute21 ;
32208       l_ins_header_rec.old_attribute22              := l_old_ins_header_rec.attribute22 ;
32209       l_ins_header_rec.new_attribute22              := l_new_ins_header_rec.attribute22 ;
32210       l_ins_header_rec.old_attribute23              := l_old_ins_header_rec.attribute23 ;
32211       l_ins_header_rec.new_attribute23              := l_new_ins_header_rec.attribute23 ;
32212       l_ins_header_rec.old_attribute24              := l_old_ins_header_rec.attribute24 ;
32213       l_ins_header_rec.new_attribute24              := l_new_ins_header_rec.attribute24 ;
32214       l_ins_header_rec.old_attribute25              := l_old_ins_header_rec.attribute25 ;
32215       l_ins_header_rec.new_attribute25              := l_new_ins_header_rec.attribute25 ;
32216       l_ins_header_rec.old_attribute26              := l_old_ins_header_rec.attribute26 ;
32217       l_ins_header_rec.new_attribute26              := l_new_ins_header_rec.attribute26 ;
32218       l_ins_header_rec.old_attribute27              := l_old_ins_header_rec.attribute27 ;
32219       l_ins_header_rec.new_attribute27              := l_new_ins_header_rec.attribute27 ;
32220       l_ins_header_rec.old_attribute28              := l_old_ins_header_rec.attribute28 ;
32221       l_ins_header_rec.new_attribute28              := l_new_ins_header_rec.attribute28 ;
32222       l_ins_header_rec.old_attribute29              := l_old_ins_header_rec.attribute29 ;
32223       l_ins_header_rec.new_attribute29              := l_new_ins_header_rec.attribute29 ;
32224       l_ins_header_rec.old_attribute30              := l_old_ins_header_rec.attribute30 ;
32225       l_ins_header_rec.new_attribute30              := l_new_ins_header_rec.attribute30 ;
32226       --end of code change for eam integration--
32227 -- Addition of columns for FA Integration
32228       l_ins_header_rec.old_payables_unit_price      := l_old_ins_header_rec.payables_unit_price;
32229       l_ins_header_rec.new_payables_unit_price      := l_new_ins_header_rec.payables_unit_price;
32230       l_ins_header_rec.old_payables_currency_code   := l_old_ins_header_rec.payables_currency_code;
32231       l_ins_header_rec.new_payables_currency_code   := l_new_ins_header_rec.payables_currency_code;
32232       l_ins_header_rec.old_purchase_unit_price      := l_old_ins_header_rec.purchase_unit_price;
32233       l_ins_header_rec.new_purchase_unit_price      := l_new_ins_header_rec.purchase_unit_price;
32234       l_ins_header_rec.old_purchase_currency_code   := l_old_ins_header_rec.purchase_currency_code;
32235       l_ins_header_rec.new_purchase_currency_code   := l_new_ins_header_rec.purchase_currency_code;
32236       l_ins_header_rec.old_sales_unit_price         := l_old_ins_header_rec.sales_unit_price;
32237       l_ins_header_rec.new_sales_unit_price         := l_new_ins_header_rec.sales_unit_price;
32238       l_ins_header_rec.old_sales_currency_code      := l_old_ins_header_rec.sales_currency_code;
32239       l_ins_header_rec.new_sales_currency_code      := l_new_ins_header_rec.sales_currency_code;
32240       l_ins_header_rec.old_operational_status_code  := l_old_ins_header_rec.operational_status_code;
32241       l_ins_header_rec.new_operational_status_code  := l_new_ins_header_rec.operational_status_code;
32242 
32243 			l_ins_header_rec.old_instance_description  		:= l_old_ins_header_rec.instance_description;
32244 			l_ins_header_rec.new_instance_description  		:= l_new_ins_header_rec.instance_description;
32245              -- End addition of columns for FA Integration
32246       i:=i+1;
32247       x_instance_history_tbl(i):= l_ins_header_rec;
32248 
32249 END LOOP;
32250 
32251     -- End of API body
32252 
32253         -- Standard check of p_commit.
32254         /*
32255         IF FND_API.To_Boolean( p_commit ) THEN
32256                 COMMIT WORK;
32257         END IF;
32258         */
32259 
32260     /***** srramakr commented for bug # 3304439
32261     -- Check for the profile option and disable the trace
32262         IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
32263                    dbms_session.set_sql_trace(false);
32264     END IF;
32265         -- End disable trace
32266     ****/
32267 
32268         -- Standard call to get message count and if count is  get message info.
32269         FND_MSG_PUB.Count_And_Get
32270                 (p_encoded => FND_API.G_FALSE,
32271                  p_count        =>      x_msg_count ,
32272              p_data     =>      x_msg_data      );
32273 EXCEPTION
32274         WHEN OTHERS THEN
32275                 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
32276                 /*
32277                 IF fnd_api.to_boolean(p_commit)
32278                 THEN
32279                 ROLLBACK TO get_instance_hist;
32280                 END IF;
32281                 */
32282                 IF FND_MSG_PUB.Check_Msg_Level
32283                      (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
32284                 THEN
32285                    FND_MSG_PUB.Add_Exc_Msg
32286                     ( G_PKG_NAME, l_api_name );
32287                 END IF;
32288                 FND_MSG_PUB.Count_And_Get
32289                 (     p_encoded => FND_API.G_FALSE,
32290                    p_count         =>      x_msg_count,
32291                         p_data      =>      x_msg_data);
32292 
32293 
32294 END get_instance_hist ;
32295 
32296 /*---------------------------------------------------*/
32297 /* procedure name: get_ext_attrib_val_hist           */
32298 /* description   : Retreive history transactions     */
32299 /*                 for extended attribute values     */
32300 /*---------------------------------------------------*/
32301 
32302 PROCEDURE get_ext_attrib_val_hist
32303 ( p_api_version             IN  NUMBER
32304  ,p_commit                  IN  VARCHAR2
32305  ,p_init_msg_list           IN  VARCHAR2
32306  ,p_validation_level        IN  NUMBER
32307  ,p_transaction_id          IN  NUMBER
32308  ,x_ext_attrib_val_hist_tbl OUT NOCOPY csi_datastructures_pub.ext_attrib_val_history_tbl
32309  ,x_return_status           OUT NOCOPY VARCHAR2
32310  ,x_msg_count               OUT NOCOPY NUMBER
32311  ,x_msg_data                OUT NOCOPY VARCHAR2
32312  )  IS
32313 CURSOR txn_hist_csr (p_txn_id IN NUMBER) IS
32314    SELECT ieh.ATTRIBUTE_VALUE_HISTORY_ID     ,
32315           ieh.ATTRIBUTE_VALUE_ID             ,
32316           ieh.TRANSACTION_ID                 ,
32317           ieh.OLD_ATTRIBUTE_VALUE            ,
32318           ieh.NEW_ATTRIBUTE_VALUE            ,
32319           ieh.OLD_ACTIVE_START_DATE          ,
32320           ieh.NEW_ACTIVE_START_DATE          ,
32321           ieh.OLD_ACTIVE_END_DATE            ,
32322           ieh.NEW_ACTIVE_END_DATE            ,
32323           ieh.OLD_CONTEXT                    ,
32324           ieh.NEW_CONTEXT                    ,
32325           ieh.OLD_ATTRIBUTE1                 ,
32326           ieh.NEW_ATTRIBUTE1                 ,
32327           ieh.OLD_ATTRIBUTE2                 ,
32328           ieh.NEW_ATTRIBUTE2                 ,
32329           ieh.OLD_ATTRIBUTE3                 ,
32330           ieh.NEW_ATTRIBUTE3                 ,
32331           ieh.OLD_ATTRIBUTE4                 ,
32332           ieh.NEW_ATTRIBUTE4                 ,
32333           ieh.OLD_ATTRIBUTE5                 ,
32334           ieh.NEW_ATTRIBUTE5                 ,
32335           ieh.OLD_ATTRIBUTE6                 ,
32336           ieh.NEW_ATTRIBUTE6                 ,
32337           ieh.OLD_ATTRIBUTE7                 ,
32338           ieh.NEW_ATTRIBUTE7                 ,
32339           ieh.OLD_ATTRIBUTE8                 ,
32340           ieh.NEW_ATTRIBUTE8                 ,
32341           ieh.OLD_ATTRIBUTE9                 ,
32342           ieh.NEW_ATTRIBUTE9                 ,
32343           ieh.OLD_ATTRIBUTE10                ,
32344           ieh.NEW_ATTRIBUTE10                ,
32345           ieh.OLD_ATTRIBUTE11                ,
32346           ieh.NEW_ATTRIBUTE11                ,
32347           ieh.OLD_ATTRIBUTE12                ,
32348           ieh.NEW_ATTRIBUTE12                ,
32349           ieh.OLD_ATTRIBUTE13                ,
32350           ieh.NEW_ATTRIBUTE13                ,
32351           ieh.OLD_ATTRIBUTE14                ,
32352           ieh.NEW_ATTRIBUTE14                ,
32353           ieh.OLD_ATTRIBUTE15                ,
32354           ieh.NEW_ATTRIBUTE15                ,
32355           ieh.FULL_DUMP_FLAG                 ,
32356           ieh.OBJECT_VERSION_NUMBER          ,
32357           ie.INSTANCE_ID                     ,
32358           iea.attribute_code
32359    FROM   csi_iea_values_h ieh,
32360           csi_iea_values   ie ,
32361           csi_i_extended_attribs iea
32362    WHERE  ieh.transaction_id = p_txn_id
32363    AND    ieh.attribute_value_id = ie.attribute_value_id
32364    AND    ie.attribute_id= iea.attribute_id;
32365 
32366 l_old_ext_header_rec  csi_datastructures_pub.extend_attrib_values_rec;
32367 l_new_ext_header_rec  csi_datastructures_pub.extend_attrib_values_rec;
32368 l_ext_header_rec      csi_datastructures_pub.ext_attrib_val_history_rec;
32369 l_temp_ext_rec        csi_datastructures_pub.ext_attrib_val_history_rec;
32370 l_api_name            CONSTANT   VARCHAR2(30)   := 'get_ext_attrib_val_hist';
32371 l_api_version         CONSTANT   NUMBER         := 1.0;
32372 i                     NUMBER := 0;
32373 BEGIN
32374         /*
32375         IF fnd_api.to_boolean(p_commit)
32376         THEN
32377            SAVEPOINT    get_ext_attrib_val_hist;
32378         END IF;
32379         */
32380 
32381         -- Standard call to check for call compatibility.
32382         IF NOT FND_API.Compatible_API_Call (l_api_version       ,
32383                                             p_api_version       ,
32384                                             l_api_name          ,
32385                                             G_PKG_NAME          )
32386         THEN
32387                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
32388         END IF;
32389 
32390     -- Initialize message list if p_init_msg_list is set to TRUE.
32391         IF FND_API.to_Boolean( p_init_msg_list ) THEN
32392                 FND_MSG_PUB.initialize;
32393         END IF;
32394 
32395         --  Initialize API return status to success
32396         x_return_status := FND_API.G_RET_STS_SUCCESS;
32397 
32398    /***** srramakr commented for bug # 3304439
32399    -- Check for the profile option and enable trace
32400    IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
32401                    dbms_session.set_sql_trace(TRUE);
32402    END IF;
32403    -- End enable trace
32404    ****/
32405 
32406    -- Start API body
32407    --
32408 
32409 
32410 
32411 
32412 FOR l_hist_csr IN txn_hist_csr (p_transaction_id)
32413 LOOP
32414           l_ext_header_rec := l_temp_ext_rec;
32415            --
32416           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)
32417           THEN
32418             l_old_ext_header_rec.attribute_value := NULL;
32419             l_new_ext_header_rec.attribute_value := NULL;
32420           ELSE
32421             l_old_ext_header_rec.attribute_value := l_hist_csr.old_attribute_value;
32422             l_new_ext_header_rec.attribute_value := l_hist_csr.new_attribute_value;
32423           END IF;
32424           --
32425           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)
32426           THEN
32427             l_old_ext_header_rec.active_start_date := NULL;
32428             l_new_ext_header_rec.active_start_date := NULL;
32429           ELSE
32430             l_old_ext_header_rec.active_start_date := l_hist_csr.old_active_start_date;
32431             l_new_ext_header_rec.active_start_date := l_hist_csr.new_active_start_date;
32432           END IF;
32433           --
32434           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)
32435           THEN
32436             l_old_ext_header_rec.active_end_date := NULL;
32437             l_new_ext_header_rec.active_end_date := NULL;
32438           ELSE
32439             l_old_ext_header_rec.active_end_date := l_hist_csr.old_active_end_date;
32440             l_new_ext_header_rec.active_end_date := l_hist_csr.new_active_end_date;
32441           END IF;
32442           --
32443           IF NVL(l_hist_csr.old_context,fnd_api.g_miss_char) = NVL(l_hist_csr.new_context,fnd_api.g_miss_char)
32444           THEN
32445             l_old_ext_header_rec.context := NULL;
32446             l_new_ext_header_rec.context := NULL;
32447           ELSE
32448             l_old_ext_header_rec.context := l_hist_csr.old_context;
32449             l_new_ext_header_rec.context := l_hist_csr.new_context;
32450           END IF;
32451           --
32452           IF NVL(l_hist_csr.old_attribute1,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute1,fnd_api.g_miss_char)
32453           THEN
32454             l_old_ext_header_rec.attribute1 := NULL;
32455             l_new_ext_header_rec.attribute1 := NULL;
32456           ELSE
32457             l_old_ext_header_rec.attribute1 := l_hist_csr.old_attribute1;
32458             l_new_ext_header_rec.attribute1 := l_hist_csr.new_attribute1;
32459           END IF;
32460           --
32461           IF NVL(l_hist_csr.old_attribute2,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute2,fnd_api.g_miss_char)
32462           THEN
32463             l_old_ext_header_rec.attribute2 := NULL;
32464             l_new_ext_header_rec.attribute2 := NULL;
32465           ELSE
32466             l_old_ext_header_rec.attribute2 := l_hist_csr.old_attribute2;
32467             l_new_ext_header_rec.attribute2 := l_hist_csr.new_attribute2;
32468           END IF;
32469           --
32470           IF NVL(l_hist_csr.old_attribute3,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute3,fnd_api.g_miss_char)
32471           THEN
32472             l_old_ext_header_rec.attribute3 := NULL;
32473             l_new_ext_header_rec.attribute3 := NULL;
32474           ELSE
32475             l_old_ext_header_rec.attribute3 := l_hist_csr.old_attribute3;
32476             l_new_ext_header_rec.attribute3 := l_hist_csr.new_attribute3;
32477           END IF;
32478           --
32479           IF NVL(l_hist_csr.old_attribute4,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute4,fnd_api.g_miss_char)
32480           THEN
32481             l_old_ext_header_rec.attribute4 := NULL;
32482             l_new_ext_header_rec.attribute4 := NULL;
32483           ELSE
32484             l_old_ext_header_rec.attribute4 := l_hist_csr.old_attribute4;
32485             l_new_ext_header_rec.attribute4 := l_hist_csr.new_attribute4;
32486           END IF;
32487           --
32488           IF NVL(l_hist_csr.old_attribute5,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute5,fnd_api.g_miss_char)
32489           THEN
32490             l_old_ext_header_rec.attribute5 := NULL;
32491             l_new_ext_header_rec.attribute5 := NULL;
32492           ELSE
32493             l_old_ext_header_rec.attribute5 := l_hist_csr.old_attribute5;
32494             l_new_ext_header_rec.attribute5 := l_hist_csr.new_attribute5;
32495           END IF;
32496           --
32497           IF NVL(l_hist_csr.old_attribute6,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute6,fnd_api.g_miss_char)
32498           THEN
32499             l_old_ext_header_rec.attribute6 := NULL;
32500             l_new_ext_header_rec.attribute6 := NULL;
32501           ELSE
32502             l_old_ext_header_rec.attribute6 := l_hist_csr.old_attribute6;
32503             l_new_ext_header_rec.attribute6 := l_hist_csr.new_attribute6;
32504           END IF;
32505           --
32506           IF NVL(l_hist_csr.old_attribute7,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute7,fnd_api.g_miss_char)
32507           THEN
32508             l_old_ext_header_rec.attribute7 := NULL;
32509             l_new_ext_header_rec.attribute7 := NULL;
32510           ELSE
32511             l_old_ext_header_rec.attribute7 := l_hist_csr.old_attribute7;
32512             l_new_ext_header_rec.attribute7 := l_hist_csr.new_attribute7;
32513           END IF;
32514           --
32515           IF NVL(l_hist_csr.old_attribute8,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute8,fnd_api.g_miss_char)
32516           THEN
32517             l_old_ext_header_rec.attribute8 := NULL;
32518             l_new_ext_header_rec.attribute8 := NULL;
32519           ELSE
32520             l_old_ext_header_rec.attribute8 := l_hist_csr.old_attribute8;
32521             l_new_ext_header_rec.attribute8 := l_hist_csr.new_attribute8;
32522           END IF;
32523           --
32524           IF NVL(l_hist_csr.old_attribute9,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute9,fnd_api.g_miss_char)
32525           THEN
32526             l_old_ext_header_rec.attribute9 := NULL;
32527             l_new_ext_header_rec.attribute9 := NULL;
32528           ELSE
32529             l_old_ext_header_rec.attribute9 := l_hist_csr.old_attribute9;
32530             l_new_ext_header_rec.attribute9 := l_hist_csr.new_attribute9;
32531           END IF;
32532           --
32533           IF NVL(l_hist_csr.old_attribute10,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute10,fnd_api.g_miss_char)
32534           THEN
32535             l_old_ext_header_rec.attribute10 := NULL;
32536             l_new_ext_header_rec.attribute10 := NULL;
32537           ELSE
32538             l_old_ext_header_rec.attribute10 := l_hist_csr.old_attribute10;
32539             l_new_ext_header_rec.attribute10 := l_hist_csr.new_attribute10;
32540           END IF;
32541           --
32542           IF NVL(l_hist_csr.old_attribute11,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute11,fnd_api.g_miss_char)
32543           THEN
32544             l_old_ext_header_rec.attribute11 := NULL;
32545             l_new_ext_header_rec.attribute11 := NULL;
32546           ELSE
32547             l_old_ext_header_rec.attribute11 := l_hist_csr.old_attribute11;
32548             l_new_ext_header_rec.attribute11 := l_hist_csr.new_attribute11;
32549           END IF;
32550           --
32551           IF NVL(l_hist_csr.old_attribute12,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute12,fnd_api.g_miss_char)
32552           THEN
32553             l_old_ext_header_rec.attribute12 := NULL;
32554             l_new_ext_header_rec.attribute12 := NULL;
32555           ELSE
32556             l_old_ext_header_rec.attribute12 := l_hist_csr.old_attribute12;
32557             l_new_ext_header_rec.attribute12 := l_hist_csr.new_attribute12;
32558           END IF;
32559           --
32560           IF NVL(l_hist_csr.old_attribute13,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute13,fnd_api.g_miss_char)
32561           THEN
32562             l_old_ext_header_rec.attribute13 := NULL;
32563             l_new_ext_header_rec.attribute13 := NULL;
32564           ELSE
32565             l_old_ext_header_rec.attribute13 := l_hist_csr.old_attribute13;
32566             l_new_ext_header_rec.attribute13 := l_hist_csr.new_attribute13;
32567           END IF;
32568           --
32569           IF NVL(l_hist_csr.old_attribute14,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute14,fnd_api.g_miss_char)
32570           THEN
32571             l_old_ext_header_rec.attribute14 := NULL;
32572             l_new_ext_header_rec.attribute14 := NULL;
32573           ELSE
32574             l_old_ext_header_rec.attribute14 := l_hist_csr.old_attribute14;
32575             l_new_ext_header_rec.attribute14 := l_hist_csr.new_attribute14;
32576           END IF;
32577           --
32578           IF NVL(l_hist_csr.old_attribute15,fnd_api.g_miss_char) = NVL(l_hist_csr.new_attribute15,fnd_api.g_miss_char)
32579           THEN
32580             l_old_ext_header_rec.attribute15 := NULL;
32581             l_new_ext_header_rec.attribute15 := NULL;
32582           ELSE
32583             l_old_ext_header_rec.attribute15 := l_hist_csr.old_attribute15;
32584             l_new_ext_header_rec.attribute15 := l_hist_csr.new_attribute15;
32585           END IF;
32586           --
32587           l_ext_header_rec.attribute_value_id     := l_hist_csr.attribute_value_id ;
32588           l_ext_header_rec.transaction_id         := p_transaction_id;
32589           l_ext_header_rec.old_attribute_value    := l_old_ext_header_rec.attribute_value ;
32590           l_ext_header_rec.new_attribute_value    := l_new_ext_header_rec.attribute_value ;
32591           l_ext_header_rec.old_active_start_date  := l_old_ext_header_rec.active_start_date ;
32592           l_ext_header_rec.new_active_start_date  := l_new_ext_header_rec.active_start_date ;
32593           l_ext_header_rec.old_active_end_date    := l_old_ext_header_rec.active_end_date ;
32594           l_ext_header_rec.new_active_end_date    := l_new_ext_header_rec.active_end_date ;
32595           l_ext_header_rec.old_context            := l_old_ext_header_rec.context ;
32596           l_ext_header_rec.new_context            := l_new_ext_header_rec.context ;
32597           l_ext_header_rec.old_attribute1         := l_old_ext_header_rec.attribute1 ;
32598           l_ext_header_rec.new_attribute1         := l_new_ext_header_rec.attribute1 ;
32599           l_ext_header_rec.old_attribute2         := l_old_ext_header_rec.attribute2 ;
32600           l_ext_header_rec.new_attribute2         := l_new_ext_header_rec.attribute2 ;
32601           l_ext_header_rec.old_attribute3         := l_old_ext_header_rec.attribute3 ;
32602           l_ext_header_rec.new_attribute3         := l_new_ext_header_rec.attribute3 ;
32603           l_ext_header_rec.old_attribute4         := l_old_ext_header_rec.attribute4 ;
32604           l_ext_header_rec.new_attribute4         := l_new_ext_header_rec.attribute4 ;
32605           l_ext_header_rec.old_attribute5         := l_old_ext_header_rec.attribute5 ;
32606           l_ext_header_rec.new_attribute5         := l_new_ext_header_rec.attribute5 ;
32607           l_ext_header_rec.old_attribute6         := l_old_ext_header_rec.attribute6 ;
32608           l_ext_header_rec.new_attribute6         := l_new_ext_header_rec.attribute6 ;
32609           l_ext_header_rec.old_attribute7         := l_old_ext_header_rec.attribute7 ;
32610           l_ext_header_rec.new_attribute7         := l_new_ext_header_rec.attribute7 ;
32611           l_ext_header_rec.old_attribute8         := l_old_ext_header_rec.attribute8 ;
32612           l_ext_header_rec.new_attribute8         := l_new_ext_header_rec.attribute8 ;
32613           l_ext_header_rec.old_attribute9         := l_old_ext_header_rec.attribute9 ;
32614           l_ext_header_rec.new_attribute9         := l_new_ext_header_rec.attribute9 ;
32615           l_ext_header_rec.old_attribute10        := l_old_ext_header_rec.attribute10 ;
32616           l_ext_header_rec.new_attribute10        := l_new_ext_header_rec.attribute10 ;
32617           l_ext_header_rec.old_attribute11        := l_old_ext_header_rec.attribute11 ;
32618           l_ext_header_rec.new_attribute11        := l_new_ext_header_rec.attribute11 ;
32619           l_ext_header_rec.old_attribute12        := l_old_ext_header_rec.attribute12 ;
32620           l_ext_header_rec.new_attribute12        := l_new_ext_header_rec.attribute12 ;
32621           l_ext_header_rec.old_attribute13        := l_old_ext_header_rec.attribute13 ;
32622           l_ext_header_rec.new_attribute13        := l_new_ext_header_rec.attribute13 ;
32623           l_ext_header_rec.old_attribute14        := l_old_ext_header_rec.attribute14 ;
32624           l_ext_header_rec.new_attribute14        := l_new_ext_header_rec.attribute14 ;
32625           l_ext_header_rec.old_attribute15        := l_old_ext_header_rec.attribute15 ;
32626           l_ext_header_rec.new_attribute15        := l_new_ext_header_rec.attribute15 ;
32627           l_ext_header_rec.attribute_code         := l_hist_csr.attribute_code ;
32628 
32629           i:=i+1;
32630 
32631           x_ext_attrib_val_hist_tbl(i):= l_ext_header_rec;
32632           x_ext_attrib_val_hist_tbl(i).instance_id := l_hist_csr.instance_id;
32633 
32634 END LOOP;
32635 
32636     -- End of API body
32637 
32638         -- Standard check of p_commit.
32639         /*
32640         IF FND_API.To_Boolean( p_commit ) THEN
32641                 COMMIT WORK;
32642         END IF;
32643         */
32644 
32645     /***** srramakr commented for bug # 3304439
32646     -- Check for the profile option and disable the trace
32647         IF (fnd_profile.value('CSI_ENABLE_SQL_TRACE') = 'Y') THEN
32648                    dbms_session.set_sql_trace(false);
32649     END IF;
32650         -- End disable trace
32651     ****/
32652 
32653         -- Standard call to get message count and if count is  get message info.
32654         FND_MSG_PUB.Count_And_Get
32655                 (p_encoded => FND_API.G_FALSE,
32656                  p_count        =>      x_msg_count ,
32657                  p_data         =>      x_msg_data      );
32658 EXCEPTION
32659         WHEN OTHERS THEN
32660                 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
32661                 /*
32662                 IF fnd_api.to_boolean(p_commit)
32663                 THEN
32664                 ROLLBACK TO get_ext_attrib_val_hist;
32665                 END IF;
32666                 */
32667                 IF FND_MSG_PUB.Check_Msg_Level
32668                      (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
32669                 THEN
32670                    FND_MSG_PUB.Add_Exc_Msg
32671                     ( G_PKG_NAME, l_api_name );
32672                 END IF;
32673                 FND_MSG_PUB.Count_And_Get
32674                 (       p_encoded => FND_API.G_FALSE,
32675                  p_count         =>      x_msg_count,
32676                         p_data      =>      x_msg_data);
32677 
32678 
32679 END get_ext_attrib_val_hist ;
32680 
32681 
32682 /*------------------------------------------------------*/
32683 /* procedure name: copy_item_instance                   */
32684 /* description :  Copies an instace from an instance.   */
32685 /*                It has the configuration parameter    */
32686 /*------------------------------------------------------*/
32687 
32688 
32689 PROCEDURE copy_item_instance
32690  ( p_api_version            IN         NUMBER
32691   ,p_commit                 IN         VARCHAR2
32692   ,p_init_msg_list          IN         VARCHAR2
32693   ,p_validation_level       IN         NUMBER
32694   ,p_source_instance_rec    IN         csi_datastructures_pub.instance_rec
32695   ,p_copy_ext_attribs       IN         VARCHAR2
32696   ,p_copy_org_assignments   IN         VARCHAR2
32697   ,p_copy_parties           IN         VARCHAR2
32698   ,p_copy_contacts          IN         VARCHAR2
32699   ,p_copy_accounts          IN         VARCHAR2
32700   ,p_copy_asset_assignments IN         VARCHAR2
32701   ,p_copy_pricing_attribs   IN         VARCHAR2
32702   ,p_copy_inst_children     IN         VARCHAR2
32703   ,p_call_from_split        IN         VARCHAR2  -- Added
32704   ,p_txn_rec                IN  OUT    NOCOPY csi_datastructures_pub.transaction_rec
32705   ,x_new_instance_tbl           OUT    NOCOPY csi_datastructures_pub.instance_tbl
32706   ,x_return_status              OUT    NOCOPY VARCHAR2
32707   ,x_msg_count                  OUT    NOCOPY NUMBER
32708   ,x_msg_data                   OUT    NOCOPY VARCHAR2
32709  )
32710 
32711  IS
32712 
32713     l_api_name                   CONSTANT   VARCHAR2(30) := 'copy_item_instance';
32714     l_api_version                CONSTANT   NUMBER      := 1.0;
32715     l_debug_level                           NUMBER;
32716     l_msg_index                             NUMBER;
32717     l_msg_count                             NUMBER;
32718     x_msg_index_out                         NUMBER;
32719     j                                       NUMBER := 1;
32720     l_curr_instance_rec                     csi_datastructures_pub.instance_rec;
32721     l_new_instance_rec                      csi_datastructures_pub.instance_rec;
32722     l_source_child_instance_rec             csi_datastructures_pub.instance_rec;
32723     l_asset_tbl                             csi_datastructures_pub.instance_asset_tbl;
32724     l_asset_header_tbl                      csi_datastructures_pub.instance_asset_header_tbl;--rk
32725     l_ext_attrib_tbl                        csi_datastructures_pub.extend_attrib_values_tbl;
32726     l_ext_attrib_def_tbl                    csi_datastructures_pub.extend_attrib_tbl;
32727     l_ext_attribs_query_rec                 csi_datastructures_pub.extend_attrib_query_rec;
32728     l_ou_query_rec                          csi_datastructures_pub.organization_unit_query_rec;
32729     l_org_unit_tbl                          csi_datastructures_pub.organization_units_tbl;
32730     l_org_unit_header_tbl                   csi_datastructures_pub.org_units_header_tbl;--rk
32731     l_pricing_attribs_query_rec             csi_datastructures_pub.pricing_attribs_query_rec;
32732     l_pricing_attribs_tbl                   csi_datastructures_pub.pricing_attribs_tbl;
32733     l_account_header_tbl                    csi_datastructures_pub.party_account_header_tbl;
32734     l_instance_asset_query_rec              csi_datastructures_pub.instance_asset_query_rec;
32735     l_instance_asset_rec                    csi_datastructures_pub.instance_asset_rec;
32736     l_party_query_rec                       csi_datastructures_pub.party_query_rec;
32737     l_party_tbl                             csi_datastructures_pub.party_tbl;
32738     l_original_party_tbl                    csi_datastructures_pub.party_tbl;
32739     l_party_input_tbl                       csi_datastructures_pub.party_tbl;
32740     l_new_party_tbl                         csi_datastructures_pub.party_tbl;
32741     l_contact_tbl                           csi_datastructures_pub.party_tbl;
32742     l_contact_input_tbl                     csi_datastructures_pub.party_tbl;
32743     l_contact_found_flag                    BOOLEAN := FALSE;
32744     l_new_contact_tbl                       csi_datastructures_pub.party_tbl;
32745     l_party_header_tbl                      csi_datastructures_pub.party_header_tbl;
32746     l_party_account_query_rec               csi_datastructures_pub.party_account_query_rec;
32747     l_contact_account_query_rec             csi_datastructures_pub.party_account_query_rec;
32748     l_party_account_tbl                     csi_datastructures_pub.party_account_tbl;
32749     l_contact_account_tbl                   csi_datastructures_pub.party_account_tbl;
32750     l_temp_party_account_tbl                csi_datastructures_pub.party_account_tbl;
32751     l_ii_relationship_rec                   csi_datastructures_pub.ii_relationship_rec;
32752     l_ii_relationship_tbl                   csi_datastructures_pub.ii_relationship_tbl;
32753     l_new_ii_relationship_tbl               csi_datastructures_pub.ii_relationship_tbl;
32754     l_new_instance_tbl                      csi_datastructures_pub.instance_tbl;
32755     l_new_child_instance_tbl                csi_datastructures_pub.instance_tbl;
32756     l_parent_object_found_flag              VARCHAR2(1);
32757     l_attribute_level                       VARCHAR2(30);
32758     l_temp_acct_hdr_tbl                     csi_datastructures_pub.party_account_header_tbl;
32759     l_pty_acct_hdr_tbl                      csi_datastructures_pub.party_account_header_tbl;
32760     k                                       NUMBER;
32761     l_vld_org_id                            NUMBER;
32762     l_internal_party_id                     NUMBER;
32763     l_party_id                              NUMBER;
32764     l_item_attribute_tbl                    csi_item_instance_pvt.item_attribute_tbl;
32765     l_location_tbl                          csi_item_instance_pvt.location_tbl;
32766     l_generic_id_tbl                        csi_item_instance_pvt.generic_id_tbl;
32767     l_lookup_tbl                            csi_item_instance_pvt.lookup_tbl;
32768     l_ins_count_rec                         csi_item_instance_pvt.ins_count_rec;
32769     l_map_count                             NUMBER := 0;
32770     l_rel_count                             NUMBER := 0;
32771     l_map_inst_tbl                          csi_item_instance_pvt.map_inst_tbl;
32772     l_par_vld_organization_id               NUMBER;
32773     l_asset_lookup_tbl                      csi_asset_pvt.lookup_tbl;
32774     l_asset_count_rec                       csi_asset_pvt.asset_count_rec;
32775     l_asset_id_tbl                          csi_asset_pvt.asset_id_tbl;
32776     l_asset_loc_tbl                         csi_asset_pvt.asset_loc_tbl;
32777     l_version_label                         VARCHAR2(30);
32778     l_version_label_rec                     csi_datastructures_pub.version_label_rec;
32779     p_rel_query_rec                         csi_datastructures_pub.relationship_query_rec;
32780     l_rel_tbl                               csi_datastructures_pub.ii_relationship_tbl;
32781     l_ii_relationship_level_tbl             csi_ii_relationships_pvt.ii_relationship_level_tbl;
32782     l_obj_id   NUMBER;
32783     --
32784     px_oks_txn_inst_tbl                     oks_ibint_pub.txn_instance_tbl;
32785     l_batch_type                            VARCHAR2(50);
32786     l_batch_id                              NUMBER;
32787     --
32788     -- Begin Add Code for Siebel Genesis Project
32789     l_raise_bes_event                       VARCHAR2(1) := nvl(fnd_profile.value('CSI_RAISE_BES_CUST_OWNED_INSTANCES'),'N');
32790     l_link_to_line_id                       NUMBER;
32791     l_item_type_code                        VARCHAR2(30);
32792     l_owner_party_id                        NUMBER;
32793     -- End Add Code for Siebel Genesis Project
32794 	l_contract_exists           VARCHAR2(1) := NULL; --Added for Bug 14593787
32795 BEGIN
32796 
32797     -- Standard Start of API savepoint
32798       SAVEPOINT      copy_item_instance;
32799 
32800     -- Standard call to check for call compatibility.
32801       IF NOT FND_API.Compatible_API_Call (l_api_version,
32802                                           p_api_version,
32803                                           l_api_name ,
32804                                           G_PKG_NAME)
32805       THEN
32806             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
32807       END IF;
32808 
32809    -- Initialize message list if p_init_msg_list is set to TRUE.
32810       IF FND_API.to_Boolean( p_init_msg_list ) THEN
32811             FND_MSG_PUB.initialize;
32812       END IF;
32813 
32814    --  Initialize API return status to success
32815           x_return_status := FND_API.G_RET_STS_SUCCESS;
32816 
32817     -- Check the profile option debug_level for debug message reporting
32818           l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
32819 
32820     -- If debug_level = 1 then dump the procedure name
32821    IF (l_debug_level > 0) THEN
32822        csi_gen_utility_pvt.put_line('copy_item_instance ');
32823    END IF;
32824 
32825 
32826 
32827     -- If the debug level = 2 then dump all the parameters values.
32828     IF (l_debug_level > 1) THEN
32829 
32830          csi_gen_utility_pvt.put_line('copy_item_instance '||
32831                               p_api_version ||'-'
32832                            || p_commit ||'-'
32833                            || p_init_msg_list ||'-'
32834                            || p_validation_level ||'-'
32835                            || p_copy_ext_attribs ||'-'
32836                            || p_copy_org_assignments ||'-'
32837                            || p_copy_parties  ||'-'
32838                            || p_copy_contacts  ||'-'
32839                            || p_copy_accounts  ||'-'
32840                            || p_copy_asset_assignments ||'-'
32841                            || p_copy_pricing_attribs ||'-'
32842                            || p_copy_inst_children
32843                             );
32844      -- Dump item instanc red
32845          csi_gen_utility_pvt.dump_instance_rec(p_source_instance_rec);
32846      -- Dump txn_rec
32847          csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
32848     END IF;
32849 
32850     -- Start API body
32851 
32852     -- Get the last_vld_organization_id for the instance_id passed
32853     BEGIN
32854        SELECT last_vld_organization_id
32855        INTO   l_par_vld_organization_id
32856        FROM   csi_item_instances
32857        WHERE  instance_id = p_source_instance_rec.instance_id;
32858     EXCEPTION
32859       WHEN OTHERS THEN
32860          NULL;
32861     END;
32862 
32863     -- Added by sguthiva for bug 2186683
32864     IF p_source_instance_rec.vld_organization_id IS NULL OR
32865        p_source_instance_rec.vld_organization_id = fnd_api.g_miss_num
32866     THEN
32867        l_vld_org_id := l_par_vld_organization_id;
32868     END IF;
32869     -- End addition by sguthiva for bug 2186683
32870 
32871 
32872      IF (p_source_instance_rec.instance_id IS NULL) OR
32873          (p_source_instance_rec.instance_id = FND_API.G_MISS_NUM) THEN
32874                FND_MESSAGE.SET_NAME('CSI','CSI_API_INSTANCE_ID_NULL');
32875                  FND_MSG_PUB.Add;
32876              RAISE FND_API.G_EXC_ERROR;
32877      ELSIF NOT (csi_Item_Instance_Vld_pvt.Val_and_get_inst_rec(
32878                   p_source_instance_rec.instance_id ,
32879                   l_curr_instance_rec )) THEN
32880                RAISE FND_API.G_EXC_ERROR;
32881      END IF;
32882 
32883 
32884     -- Check if the user has not passed incorrect options for contacts
32885      IF ((p_copy_parties  = fnd_api.g_false)
32886         AND (p_copy_contacts  = fnd_api.g_true)) THEN
32887           FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_PTY_CONTACT_OPT');
32888           FND_MSG_PUB.Add;
32889           RAISE FND_API.G_EXC_ERROR;
32890      END IF;
32891 
32892 
32893      -- If the user has passed p_copy_parties as false get only the owner, else get all the parties
32894      IF (p_copy_parties  = fnd_api.g_true) THEN
32895           l_party_query_rec.instance_party_id         := FND_API.G_MISS_NUM;
32896           l_party_query_rec.instance_id               := l_curr_instance_rec.instance_id;
32897           l_party_query_rec.party_id                  := FND_API.G_MISS_NUM;
32898           l_party_query_rec.relationship_type_code    := FND_API.G_MISS_CHAR;
32899 
32900          csi_party_relationships_pub.get_inst_party_relationships
32901                     ( p_api_version                 => p_api_version
32902                      ,p_commit                      => p_commit
32903                      ,p_init_msg_list               => p_init_msg_list
32904                      ,p_validation_level            => p_validation_level
32905                      ,p_party_query_rec             => l_party_query_rec
32906                      ,p_resolve_id_columns          => fnd_api.g_true
32907                      ,p_time_stamp                  =>  NULL
32908                      ,x_party_header_tbl            => l_party_header_tbl
32909                      ,x_return_status               => x_return_status
32910                      ,x_msg_count                   => x_msg_count
32911                      ,x_msg_data                    => x_msg_data
32912                      );
32913 
32914 
32915 
32916                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
32917                   l_msg_index := 1;
32918                   l_msg_count := x_msg_count;
32919                   WHILE l_msg_count > 0 LOOP
32920                        x_msg_data := FND_MSG_PUB.GET
32921                                       (l_msg_index,
32922                                      FND_API.G_FALSE      );
32923                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
32924                        l_msg_index := l_msg_index + 1;
32925                        l_msg_count := l_msg_count - 1;
32926                   END LOOP;
32927                   RAISE FND_API.G_EXC_ERROR;
32928                 END IF;
32929 
32930      ELSE
32931           l_party_query_rec.instance_party_id         := FND_API.G_MISS_NUM;
32932           l_party_query_rec.instance_id               := l_curr_instance_rec.instance_id;
32933           l_party_query_rec.party_id                  := FND_API.G_MISS_NUM;
32934           l_party_query_rec.relationship_type_code    := 'OWNER';
32935 
32936          csi_party_relationships_pub.get_inst_party_relationships
32937                     ( p_api_version                 => p_api_version
32938                      ,p_commit                      => p_commit
32939                      ,p_init_msg_list               => p_init_msg_list
32940                      ,p_validation_level            => p_validation_level
32941                      ,p_party_query_rec             => l_party_query_rec
32942                      ,p_resolve_id_columns          => fnd_api.g_true
32943                      ,p_time_stamp                  => NULL
32944                      ,x_party_header_tbl            => l_party_header_tbl
32945                      ,x_return_status               => x_return_status
32946                      ,x_msg_count                   => x_msg_count
32947                      ,x_msg_data                    => x_msg_data
32948                      );
32949 
32950                  IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
32951                   l_msg_index := 1;
32952                   l_msg_count := x_msg_count;
32953                   WHILE l_msg_count > 0 LOOP
32954                        x_msg_data := FND_MSG_PUB.GET
32955                                       (l_msg_index,
32956                                      FND_API.G_FALSE      );
32957                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
32958                        l_msg_index := l_msg_index + 1;
32959                        l_msg_count := l_msg_count - 1;
32960                   END LOOP;
32961                   RAISE FND_API.G_EXC_ERROR;
32962                 END IF;
32963     END IF;
32964 
32965 --   This is mean to initialize the l_party_table in order to create an instance.
32966     IF l_party_header_tbl.COUNT > 0 THEN    /*****First change here 07/27/01 - RK***/
32967                 FOR tab_row_party IN l_party_header_tbl.FIRST .. l_party_header_tbl.LAST
32968                 LOOP
32969                      IF l_party_header_tbl.EXISTS(tab_row_party) THEN
32970                         IF  l_party_header_tbl(tab_row_party).contact_flag = 'Y' THEN
32971                            -- build the contacts table
32972                              l_contact_tbl(tab_row_party).instance_party_id := l_party_header_tbl(tab_row_party).instance_party_id;
32973                              l_contact_tbl(tab_row_party).instance_id := l_party_header_tbl(tab_row_party).instance_id;
32974                              l_contact_tbl(tab_row_party).party_id := l_party_header_tbl(tab_row_party).party_id;
32975                              l_contact_tbl(tab_row_party).party_source_table := l_party_header_tbl(tab_row_party).party_source_table;
32976                              l_contact_tbl(tab_row_party).relationship_type_code := l_party_header_tbl(tab_row_party).relationship_type_code;
32977                              l_contact_tbl(tab_row_party).contact_flag := l_party_header_tbl(tab_row_party).contact_flag;
32978                              l_contact_tbl(tab_row_party).contact_ip_id := l_party_header_tbl(tab_row_party).contact_ip_id;
32979                              l_contact_tbl(tab_row_party).active_start_date := l_party_header_tbl(tab_row_party).active_start_date;
32980                              l_contact_tbl(tab_row_party).active_end_date := l_party_header_tbl(tab_row_party).active_end_date;
32981                              l_contact_tbl(tab_row_party).context := l_party_header_tbl(tab_row_party).context;
32982                              l_contact_tbl(tab_row_party).attribute1 := l_party_header_tbl(tab_row_party).attribute1;
32983                              l_contact_tbl(tab_row_party).attribute2 := l_party_header_tbl(tab_row_party).attribute2;
32984                              l_contact_tbl(tab_row_party).attribute3 := l_party_header_tbl(tab_row_party).attribute3;
32985                              l_contact_tbl(tab_row_party).attribute4 := l_party_header_tbl(tab_row_party).attribute4;
32986                              l_contact_tbl(tab_row_party).attribute5 := l_party_header_tbl(tab_row_party).attribute5;
32987                              l_contact_tbl(tab_row_party).attribute6 := l_party_header_tbl(tab_row_party).attribute6;
32988                              l_contact_tbl(tab_row_party).attribute7 := l_party_header_tbl(tab_row_party).attribute7;
32989                              l_contact_tbl(tab_row_party).attribute8 := l_party_header_tbl(tab_row_party).attribute8;
32990                              l_contact_tbl(tab_row_party).attribute9 := l_party_header_tbl(tab_row_party).attribute9;
32991                              l_contact_tbl(tab_row_party).attribute10 := l_party_header_tbl(tab_row_party).attribute10;
32992                              l_contact_tbl(tab_row_party).attribute11 := l_party_header_tbl(tab_row_party).attribute11;
32993                              l_contact_tbl(tab_row_party).attribute12 := l_party_header_tbl(tab_row_party).attribute12;
32994                              l_contact_tbl(tab_row_party).attribute13 := l_party_header_tbl(tab_row_party).attribute13;
32995                              l_contact_tbl(tab_row_party).attribute14 := l_party_header_tbl(tab_row_party).attribute14;
32996                              l_contact_tbl(tab_row_party).attribute15 := l_party_header_tbl(tab_row_party).attribute15;
32997                              l_contact_tbl(tab_row_party).object_version_number := l_party_header_tbl(tab_row_party).object_version_number;
32998   --Start fo Addition for the Bugfix 2354589.
32999                              l_contact_tbl(tab_row_party).preferred_flag := l_party_header_tbl(tab_row_party).preferred_flag;
33000                              l_contact_tbl(tab_row_party).primary_flag := l_party_header_tbl(tab_row_party).primary_flag;
33001   --End of Addition for the Bugfix 2354589.
33002                         ELSE -- Build the parties table
33003                              l_party_tbl(tab_row_party).instance_party_id := l_party_header_tbl(tab_row_party).instance_party_id;
33004                              l_party_tbl(tab_row_party).instance_id := l_party_header_tbl(tab_row_party).instance_id;
33005                              l_party_tbl(tab_row_party).party_id := l_party_header_tbl(tab_row_party).party_id;
33006                              l_party_tbl(tab_row_party).party_source_table := l_party_header_tbl(tab_row_party).party_source_table;
33007                              l_party_tbl(tab_row_party).relationship_type_code := l_party_header_tbl(tab_row_party).relationship_type_code;
33008                              l_party_tbl(tab_row_party).contact_flag := l_party_header_tbl(tab_row_party).contact_flag;
33009                              l_party_tbl(tab_row_party).contact_ip_id := l_party_header_tbl(tab_row_party).contact_ip_id;
33010                              l_party_tbl(tab_row_party).active_start_date := l_party_header_tbl(tab_row_party).active_start_date;
33011                              l_party_tbl(tab_row_party).active_end_date := l_party_header_tbl(tab_row_party).active_end_date;
33012                              l_party_tbl(tab_row_party).context := l_party_header_tbl(tab_row_party).context;
33013                              l_party_tbl(tab_row_party).attribute1 := l_party_header_tbl(tab_row_party).attribute1;
33014                              l_party_tbl(tab_row_party).attribute2 := l_party_header_tbl(tab_row_party).attribute2;
33015                              l_party_tbl(tab_row_party).attribute3 := l_party_header_tbl(tab_row_party).attribute3;
33016                              l_party_tbl(tab_row_party).attribute4 := l_party_header_tbl(tab_row_party).attribute4;
33017                              l_party_tbl(tab_row_party).attribute5 := l_party_header_tbl(tab_row_party).attribute5;
33018                              l_party_tbl(tab_row_party).attribute6 := l_party_header_tbl(tab_row_party).attribute6;
33019                              l_party_tbl(tab_row_party).attribute7 := l_party_header_tbl(tab_row_party).attribute7;
33020                              l_party_tbl(tab_row_party).attribute8 := l_party_header_tbl(tab_row_party).attribute8;
33021                              l_party_tbl(tab_row_party).attribute9 := l_party_header_tbl(tab_row_party).attribute9;
33022                              l_party_tbl(tab_row_party).attribute10 := l_party_header_tbl(tab_row_party).attribute10;
33023                              l_party_tbl(tab_row_party).attribute11 := l_party_header_tbl(tab_row_party).attribute11;
33024                              l_party_tbl(tab_row_party).attribute12 := l_party_header_tbl(tab_row_party).attribute12;
33025                              l_party_tbl(tab_row_party).attribute13 := l_party_header_tbl(tab_row_party).attribute13;
33026                              l_party_tbl(tab_row_party).attribute14 := l_party_header_tbl(tab_row_party).attribute14;
33027                              l_party_tbl(tab_row_party).attribute15 := l_party_header_tbl(tab_row_party).attribute15;
33028                              l_party_tbl(tab_row_party).object_version_number := l_party_header_tbl(tab_row_party).object_version_number;
33029   --Start fo Addition for the Bugfix 2354589.
33030                              l_party_tbl(tab_row_party).preferred_flag := l_party_header_tbl(tab_row_party).preferred_flag;
33031                              l_party_tbl(tab_row_party).primary_flag := l_party_header_tbl(tab_row_party).primary_flag;
33032   --End of Addition for the Bugfix 2354589.
33033                          END IF;
33034                      END IF;
33035                 END LOOP;
33036    END IF; --l_party_header_tbl.COUNT > 0
33037   l_original_party_tbl := l_party_tbl;
33038    -- Empty the party table
33039    l_party_header_tbl.DELETE;
33040     -- Create asset assignments if requested. Asset_assignment_tbl has alredy been fetched
33041     IF  (p_copy_asset_assignments  = fnd_api.g_true) THEN
33042           l_instance_asset_query_rec.instance_asset_id  := FND_API.G_MISS_NUM;
33043           l_instance_asset_query_rec.instance_id  := l_curr_instance_rec.instance_id;
33044           l_instance_asset_query_rec.fa_asset_id   := FND_API.G_MISS_NUM;
33045           l_instance_asset_query_rec.fa_book_type_code := FND_API.G_MISS_CHAR;
33046           l_instance_asset_query_rec.fa_location_id := FND_API.G_MISS_NUM;
33047           l_instance_asset_query_rec.update_status := FND_API.G_MISS_CHAR;
33048            csi_asset_pvt.get_instance_assets
33049             ( p_api_version                 => p_api_version
33050              ,p_commit                      => p_commit
33051              ,p_init_msg_list               => p_init_msg_list
33052              ,p_validation_level            => p_validation_level
33053              ,p_instance_asset_query_rec    => l_instance_asset_query_rec
33054              ,p_resolve_id_columns          => fnd_api.g_true
33055              ,p_time_stamp                  => NULL
33056              ,x_instance_asset_tbl          => l_asset_header_tbl
33057              ,x_return_status               => x_return_status
33058              ,x_msg_count                   => x_msg_count
33059              ,x_msg_data                    => x_msg_data
33060              );
33061                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33062                   l_msg_index := 1;
33063                   l_msg_count := x_msg_count;
33064                   WHILE l_msg_count > 0 LOOP
33065                        x_msg_data := FND_MSG_PUB.GET
33066                                       (l_msg_index,
33067                                      FND_API.G_FALSE      );
33068                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33069                        l_msg_index := l_msg_index + 1;
33070                        l_msg_count := l_msg_count - 1;
33071                   END LOOP;
33072                   RAISE FND_API.G_EXC_ERROR;
33073                 END IF;
33074     END IF;
33075     IF l_asset_header_tbl.COUNT > 0 THEN    /*****First change here 08/25/01 - RK***/
33076                 FOR tab_row_party IN l_asset_header_tbl.FIRST .. l_asset_header_tbl.LAST
33077                 LOOP
33078                      IF l_asset_header_tbl.EXISTS(tab_row_party) THEN
33079                              l_asset_tbl(tab_row_party).instance_asset_id := l_asset_header_tbl(tab_row_party).instance_asset_id;
33080                              l_asset_tbl(tab_row_party).instance_id := l_asset_header_tbl(tab_row_party).instance_id;
33081                              l_asset_tbl(tab_row_party).fa_asset_id := l_asset_header_tbl(tab_row_party).fa_asset_id;
33082                              l_asset_tbl(tab_row_party).fa_book_type_code := l_asset_header_tbl(tab_row_party).fa_book_type_code;
33083                              l_asset_tbl(tab_row_party).fa_location_id := l_asset_header_tbl(tab_row_party).fa_location_id;
33084                              l_asset_tbl(tab_row_party).asset_quantity := l_asset_header_tbl(tab_row_party).asset_quantity;
33085                              l_asset_tbl(tab_row_party).update_status := l_asset_header_tbl(tab_row_party).update_status;
33086                              l_asset_tbl(tab_row_party).active_start_date := l_asset_header_tbl(tab_row_party).active_start_date;
33087                              l_asset_tbl(tab_row_party).active_end_date := l_asset_header_tbl(tab_row_party).active_end_date;
33088                              l_asset_tbl(tab_row_party).object_version_number := l_asset_header_tbl(tab_row_party).object_version_number;
33089                      END IF;
33090                 END LOOP;
33091    END IF; --l_asset_header_tbl.COUNT > 0
33092 
33093    -- Set the non-copiable attributes as follows
33094 
33095        l_new_instance_rec.CREATION_COMPLETE_FLAG := p_source_instance_rec.CREATION_COMPLETE_FLAG;
33096        l_new_instance_rec.COMPLETENESS_FLAG := p_source_instance_rec.COMPLETENESS_FLAG;
33097 
33098     IF  (p_source_instance_rec.EXTERNAL_REFERENCE = FND_API.G_MISS_CHAR) THEN
33099           l_new_instance_rec.EXTERNAL_REFERENCE := l_curr_instance_rec.EXTERNAL_REFERENCE;
33100     ELSE
33101           l_new_instance_rec.EXTERNAL_REFERENCE := p_source_instance_rec.EXTERNAL_REFERENCE;
33102     END IF;
33103     IF ((p_source_instance_rec.INVENTORY_ITEM_ID = FND_API.G_MISS_NUM)
33104       OR (p_source_instance_rec.INVENTORY_ITEM_ID IS NULL)) THEN
33105           l_new_instance_rec.INVENTORY_ITEM_ID := l_curr_instance_rec.INVENTORY_ITEM_ID;
33106     ELSE
33107           l_new_instance_rec.INVENTORY_ITEM_ID := p_source_instance_rec.INVENTORY_ITEM_ID;
33108     END IF;
33109 
33110      -- srramakr commented for bug # 2558156
33111      -- Uncommented for bug 2985165
33112      IF p_call_from_split=fnd_api.g_true
33113      THEN
33114          IF  (p_source_instance_rec.INVENTORY_REVISION = FND_API.G_MISS_CHAR) THEN
33115               l_new_instance_rec.INVENTORY_REVISION := l_curr_instance_rec.INVENTORY_REVISION;
33116          ELSE
33117               l_new_instance_rec.INVENTORY_REVISION := p_source_instance_rec.INVENTORY_REVISION;
33118          END IF;
33119      ELSE
33120      -- Uncommented for bug 2985165
33121      -- srramakr Bug # 2558156 Revision should not be copied
33122          IF p_source_instance_rec.INVENTORY_REVISION <> FND_API.G_MISS_CHAR THEN
33123             l_new_instance_rec.INVENTORY_REVISION := p_source_instance_rec.INVENTORY_REVISION;
33124          END IF;
33125      END IF;
33126      --
33127      IF ((p_source_instance_rec.INV_MASTER_ORGANIZATION_ID = FND_API.G_MISS_NUM)
33128       OR (p_source_instance_rec.INV_MASTER_ORGANIZATION_ID IS NULL)) THEN
33129           l_new_instance_rec.INV_MASTER_ORGANIZATION_ID := l_curr_instance_rec.INV_MASTER_ORGANIZATION_ID;
33130      ELSE
33131           l_new_instance_rec.INV_MASTER_ORGANIZATION_ID := p_source_instance_rec.INV_MASTER_ORGANIZATION_ID ;
33132      END IF;
33133      IF  (p_source_instance_rec.SERIAL_NUMBER <> FND_API.G_MISS_CHAR) THEN
33134           l_new_instance_rec.SERIAL_NUMBER := p_source_instance_rec.SERIAL_NUMBER;
33135      END IF;
33136      IF ((p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG = FND_API.G_MISS_CHAR)
33137       OR (p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG IS NULL)) THEN
33138           l_new_instance_rec.MFG_SERIAL_NUMBER_FLAG := l_curr_instance_rec.MFG_SERIAL_NUMBER_FLAG;
33139      ELSE
33140           l_new_instance_rec.MFG_SERIAL_NUMBER_FLAG := p_source_instance_rec.MFG_SERIAL_NUMBER_FLAG ;
33141      END IF;
33142      IF  (p_source_instance_rec.LOT_NUMBER = FND_API.G_MISS_CHAR) THEN
33143           l_new_instance_rec.LOT_NUMBER := l_curr_instance_rec.LOT_NUMBER;
33144      ELSE
33145           l_new_instance_rec.LOT_NUMBER := p_source_instance_rec.LOT_NUMBER;
33146      END IF;
33147      IF ((p_source_instance_rec.QUANTITY = FND_API.G_MISS_NUM)
33148       OR (p_source_instance_rec.QUANTITY IS NULL)) THEN
33149           l_new_instance_rec.QUANTITY := l_curr_instance_rec.QUANTITY;
33150      ELSE
33151           l_new_instance_rec.QUANTITY := p_source_instance_rec.QUANTITY ;
33152      END IF;
33153      IF ((p_source_instance_rec.UNIT_OF_MEASURE = FND_API.G_MISS_CHAR)
33154       OR (p_source_instance_rec.UNIT_OF_MEASURE IS NULL)) THEN
33155           l_new_instance_rec.UNIT_OF_MEASURE := l_curr_instance_rec.UNIT_OF_MEASURE;
33156      ELSE
33157           l_new_instance_rec.UNIT_OF_MEASURE := p_source_instance_rec.UNIT_OF_MEASURE ;
33158      END IF;
33159      IF  (p_source_instance_rec.ACCOUNTING_CLASS_CODE = FND_API.G_MISS_CHAR) THEN
33160           l_new_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
33161      ELSE
33162           l_new_instance_rec.ACCOUNTING_CLASS_CODE := l_curr_instance_rec.ACCOUNTING_CLASS_CODE;
33163      END IF;
33164      IF  (p_source_instance_rec.INSTANCE_CONDITION_ID = FND_API.G_MISS_NUM) THEN
33165           l_new_instance_rec.INSTANCE_CONDITION_ID := l_curr_instance_rec.INSTANCE_CONDITION_ID;
33166      ELSE
33167           l_new_instance_rec.INSTANCE_CONDITION_ID := p_source_instance_rec.INSTANCE_CONDITION_ID;
33168      END IF;
33169      IF ((p_source_instance_rec.INSTANCE_STATUS_ID = FND_API.G_MISS_NUM)
33170       OR (p_source_instance_rec.INSTANCE_STATUS_ID IS NULL)) THEN
33171           l_new_instance_rec.INSTANCE_STATUS_ID := l_curr_instance_rec.INSTANCE_STATUS_ID;
33172      ELSE
33173           l_new_instance_rec.INSTANCE_STATUS_ID := p_source_instance_rec.INSTANCE_STATUS_ID ;
33174      END IF;
33175      IF ((p_source_instance_rec.CUSTOMER_VIEW_FLAG = FND_API.G_MISS_CHAR)
33176       OR (p_source_instance_rec.CUSTOMER_VIEW_FLAG IS NULL )) THEN
33177           l_new_instance_rec.CUSTOMER_VIEW_FLAG := l_curr_instance_rec.CUSTOMER_VIEW_FLAG;
33178      ELSE
33179           l_new_instance_rec.CUSTOMER_VIEW_FLAG := p_source_instance_rec.CUSTOMER_VIEW_FLAG ;
33180      END IF;
33181      IF ((p_source_instance_rec.MERCHANT_VIEW_FLAG = FND_API.G_MISS_CHAR)
33182       OR (p_source_instance_rec.MERCHANT_VIEW_FLAG IS NULL)) THEN
33183           l_new_instance_rec.MERCHANT_VIEW_FLAG := l_curr_instance_rec.MERCHANT_VIEW_FLAG;
33184      ELSE
33185           l_new_instance_rec.MERCHANT_VIEW_FLAG := p_source_instance_rec.MERCHANT_VIEW_FLAG ;
33186      END IF;
33187      IF  (p_source_instance_rec.SELLABLE_FLAG = FND_API.G_MISS_CHAR) THEN
33188           l_new_instance_rec.SELLABLE_FLAG := l_curr_instance_rec.SELLABLE_FLAG;
33189      ELSE
33190           l_new_instance_rec.SELLABLE_FLAG := p_source_instance_rec.SELLABLE_FLAG;
33191      END IF;
33192      IF  (p_source_instance_rec.SYSTEM_ID = FND_API.G_MISS_NUM) THEN
33193           l_new_instance_rec.SYSTEM_ID := l_curr_instance_rec.SYSTEM_ID;
33194      ELSE
33195           l_new_instance_rec.SYSTEM_ID := p_source_instance_rec.SYSTEM_ID;
33196      END IF;
33197      IF  (p_source_instance_rec.INSTANCE_TYPE_CODE = FND_API.G_MISS_CHAR) THEN
33198           l_new_instance_rec.INSTANCE_TYPE_CODE := l_curr_instance_rec.INSTANCE_TYPE_CODE;
33199      ELSE
33200           l_new_instance_rec.INSTANCE_TYPE_CODE := p_source_instance_rec.INSTANCE_TYPE_CODE;
33201      END IF;
33202      IF  (p_source_instance_rec.ACTIVE_START_DATE = FND_API.G_MISS_DATE) THEN
33203           l_new_instance_rec.ACTIVE_START_DATE := l_curr_instance_rec.ACTIVE_START_DATE;
33204      ELSE
33205           l_new_instance_rec.ACTIVE_START_DATE := p_source_instance_rec.ACTIVE_START_DATE;
33206      END IF;
33207      IF  (p_source_instance_rec.ACTIVE_END_DATE = FND_API.G_MISS_DATE) THEN
33208           l_new_instance_rec.ACTIVE_END_DATE := l_curr_instance_rec.ACTIVE_END_DATE;
33209      ELSE
33210           l_new_instance_rec.ACTIVE_END_DATE := p_source_instance_rec.ACTIVE_END_DATE;
33211      END IF;
33212      IF  (p_source_instance_rec.LOCATION_TYPE_CODE = FND_API.G_MISS_CHAR)  THEN
33213           l_new_instance_rec.LOCATION_TYPE_CODE := l_curr_instance_rec.LOCATION_TYPE_CODE;
33214      ELSE
33215           l_new_instance_rec.LOCATION_TYPE_CODE := p_source_instance_rec.LOCATION_TYPE_CODE;
33216      END IF;
33217      IF  (p_source_instance_rec.LOCATION_ID = FND_API.G_MISS_NUM) THEN
33218           l_new_instance_rec.LOCATION_ID := l_curr_instance_rec.LOCATION_ID;
33219      ELSE
33220           l_new_instance_rec.LOCATION_ID := p_source_instance_rec.LOCATION_ID;
33221      END IF;
33222      IF  (p_source_instance_rec.INV_ORGANIZATION_ID = FND_API.G_MISS_NUM) THEN
33223           l_new_instance_rec.INV_ORGANIZATION_ID := l_curr_instance_rec.INV_ORGANIZATION_ID;
33224      ELSE
33225           l_new_instance_rec.INV_ORGANIZATION_ID := p_source_instance_rec.INV_ORGANIZATION_ID;
33226      END IF;
33227      IF  (p_source_instance_rec.INV_SUBINVENTORY_NAME = FND_API.G_MISS_CHAR) THEN
33228           l_new_instance_rec.INV_SUBINVENTORY_NAME := l_curr_instance_rec.INV_SUBINVENTORY_NAME;
33229       ELSE
33230           l_new_instance_rec.INV_SUBINVENTORY_NAME := p_source_instance_rec.INV_SUBINVENTORY_NAME;
33231       END IF;
33232       IF  (p_source_instance_rec.INV_LOCATOR_ID = FND_API.G_MISS_NUM) THEN
33233            l_new_instance_rec.INV_LOCATOR_ID := l_curr_instance_rec.INV_LOCATOR_ID;
33234       ELSE
33235            l_new_instance_rec.INV_LOCATOR_ID := p_source_instance_rec.INV_LOCATOR_ID;
33236       END IF;
33237       IF  (p_source_instance_rec.PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
33238            l_new_instance_rec.PA_PROJECT_ID := l_curr_instance_rec.PA_PROJECT_ID;
33239       ELSE
33240            l_new_instance_rec.PA_PROJECT_ID := p_source_instance_rec.PA_PROJECT_ID;
33241       END IF;
33242       IF  (p_source_instance_rec.PA_PROJECT_TASK_ID = FND_API.G_MISS_NUM) THEN
33243            l_new_instance_rec.PA_PROJECT_TASK_ID := l_curr_instance_rec.PA_PROJECT_TASK_ID;
33244       ELSE
33245            l_new_instance_rec.PA_PROJECT_TASK_ID := p_source_instance_rec.PA_PROJECT_TASK_ID;
33246       END IF;
33247       IF  (p_source_instance_rec.IN_TRANSIT_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
33248            l_new_instance_rec.IN_TRANSIT_ORDER_LINE_ID := l_curr_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
33249       ELSE
33250            l_new_instance_rec.IN_TRANSIT_ORDER_LINE_ID := p_source_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
33251       END IF;
33252       IF  (p_source_instance_rec.WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
33253            l_new_instance_rec.WIP_JOB_ID := l_curr_instance_rec.WIP_JOB_ID;
33254       ELSE
33255            l_new_instance_rec.WIP_JOB_ID := p_source_instance_rec.WIP_JOB_ID;
33256       END IF;
33257       IF  (p_source_instance_rec.PO_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
33258            l_new_instance_rec.PO_ORDER_LINE_ID := l_curr_instance_rec.PO_ORDER_LINE_ID;
33259       ELSE
33260            l_new_instance_rec.PO_ORDER_LINE_ID := p_source_instance_rec.PO_ORDER_LINE_ID;
33261       END IF;
33262       IF  (p_source_instance_rec.LAST_TXN_LINE_DETAIL_ID = FND_API.G_MISS_NUM) THEN
33263            l_new_instance_rec.LAST_TXN_LINE_DETAIL_ID := l_curr_instance_rec.LAST_TXN_LINE_DETAIL_ID;
33264       ELSE
33265            l_new_instance_rec.LAST_TXN_LINE_DETAIL_ID := p_source_instance_rec.LAST_TXN_LINE_DETAIL_ID;
33266       END IF;
33267       IF  (p_source_instance_rec.LAST_OE_RMA_LINE_ID = FND_API.G_MISS_NUM) THEN
33268            l_new_instance_rec.LAST_OE_RMA_LINE_ID := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
33269       ELSE
33270            l_new_instance_rec.LAST_OE_RMA_LINE_ID := p_source_instance_rec.LAST_OE_RMA_LINE_ID;
33271       END IF;
33272       IF  (p_source_instance_rec.LAST_PO_PO_LINE_ID  = FND_API.G_MISS_NUM) THEN
33273            l_new_instance_rec.LAST_PO_PO_LINE_ID  := l_curr_instance_rec.LAST_PO_PO_LINE_ID ;
33274       ELSE
33275            l_new_instance_rec.LAST_PO_PO_LINE_ID  := p_source_instance_rec.LAST_PO_PO_LINE_ID ;
33276       END IF;
33277       IF  (p_source_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
33278            l_new_instance_rec.LAST_OE_PO_NUMBER := l_curr_instance_rec.LAST_OE_PO_NUMBER;
33279       ELSE
33280            l_new_instance_rec.LAST_OE_PO_NUMBER := p_source_instance_rec.LAST_OE_PO_NUMBER;
33281       END IF;
33282       IF  (p_source_instance_rec.LAST_WIP_JOB_ID = FND_API.G_MISS_NUM) THEN
33283            l_new_instance_rec.LAST_WIP_JOB_ID := l_curr_instance_rec.LAST_WIP_JOB_ID;
33284       ELSE
33285            l_new_instance_rec.LAST_WIP_JOB_ID := p_source_instance_rec.LAST_WIP_JOB_ID;
33286       END IF;
33287       IF  (p_source_instance_rec.LAST_PA_PROJECT_ID = FND_API.G_MISS_NUM) THEN
33288            l_new_instance_rec.LAST_PA_PROJECT_ID := l_curr_instance_rec.LAST_PA_PROJECT_ID;
33289       ELSE
33290            l_new_instance_rec.LAST_PA_PROJECT_ID := p_source_instance_rec.LAST_PA_PROJECT_ID;
33291       END IF;
33292       IF  (p_source_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
33293            l_new_instance_rec.LAST_PA_TASK_ID := l_curr_instance_rec.LAST_PA_TASK_ID;
33294       ELSE
33295            l_new_instance_rec.LAST_PA_TASK_ID := p_source_instance_rec.LAST_PA_TASK_ID;
33296       END IF;
33297       IF  (p_source_instance_rec.LAST_OE_AGREEMENT_ID = FND_API.G_MISS_NUM) THEN
33298            l_new_instance_rec.LAST_OE_AGREEMENT_ID  := l_curr_instance_rec.LAST_OE_AGREEMENT_ID;
33299       ELSE
33300            l_new_instance_rec.LAST_OE_AGREEMENT_ID  := p_source_instance_rec.LAST_OE_AGREEMENT_ID;
33301       END IF;
33302       IF  (p_source_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
33303            l_new_instance_rec.INSTALL_DATE := l_curr_instance_rec.INSTALL_DATE;
33304       ELSE
33305            l_new_instance_rec.INSTALL_DATE := p_source_instance_rec.INSTALL_DATE;
33306       END IF;
33307       IF  (p_source_instance_rec.MANUALLY_CREATED_FLAG = FND_API.G_MISS_CHAR) THEN
33308            l_new_instance_rec.MANUALLY_CREATED_FLAG := l_curr_instance_rec.MANUALLY_CREATED_FLAG;
33309       ELSE
33310            l_new_instance_rec.MANUALLY_CREATED_FLAG := p_source_instance_rec.MANUALLY_CREATED_FLAG;
33311       END IF;
33312       IF  (p_source_instance_rec.RETURN_BY_DATE  = FND_API.G_MISS_DATE) THEN
33313            l_new_instance_rec.RETURN_BY_DATE  := l_curr_instance_rec.RETURN_BY_DATE ;
33314       ELSE
33315            l_new_instance_rec.RETURN_BY_DATE  := p_source_instance_rec.RETURN_BY_DATE ;
33316       END IF;
33317       IF  (p_source_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
33318            l_new_instance_rec.ACTUAL_RETURN_DATE := l_curr_instance_rec.ACTUAL_RETURN_DATE;
33319       ELSE
33320            l_new_instance_rec.ACTUAL_RETURN_DATE := p_source_instance_rec.ACTUAL_RETURN_DATE;
33321       END IF;
33322       IF  (p_source_instance_rec.VERSION_LABEL = FND_API.G_MISS_CHAR) THEN
33323            l_new_instance_rec.VERSION_LABEL := l_curr_instance_rec.VERSION_LABEL;
33324       ELSE
33325            l_new_instance_rec.VERSION_LABEL := p_source_instance_rec.VERSION_LABEL;
33326       END IF;
33327       IF  (p_source_instance_rec.VERSION_LABEL_DESCRIPTION = FND_API.G_MISS_CHAR) THEN
33328            l_new_instance_rec.VERSION_LABEL_DESCRIPTION := l_curr_instance_rec.VERSION_LABEL_DESCRIPTION;
33329       ELSE
33330            l_new_instance_rec.VERSION_LABEL_DESCRIPTION := p_source_instance_rec.VERSION_LABEL_DESCRIPTION;
33331       END IF;
33332       IF  (p_source_instance_rec.CONTEXT = FND_API.G_MISS_CHAR) THEN
33333            l_new_instance_rec.CONTEXT := l_curr_instance_rec.CONTEXT;
33334       ELSE
33335            l_new_instance_rec.CONTEXT := p_source_instance_rec.CONTEXT;
33336       END IF;
33337       IF  (p_source_instance_rec.ATTRIBUTE1 = FND_API.G_MISS_CHAR) THEN
33338            l_new_instance_rec.ATTRIBUTE1 := l_curr_instance_rec.ATTRIBUTE1;
33339       ELSE
33340            l_new_instance_rec.ATTRIBUTE1 := p_source_instance_rec.ATTRIBUTE1;
33341       END IF;
33342       IF  (p_source_instance_rec.ATTRIBUTE2 = FND_API.G_MISS_CHAR) THEN
33343            l_new_instance_rec.ATTRIBUTE2 := l_curr_instance_rec.ATTRIBUTE2;
33344       ELSE
33345            l_new_instance_rec.ATTRIBUTE2 := p_source_instance_rec.ATTRIBUTE2;
33346       END IF;
33347       IF  (p_source_instance_rec.ATTRIBUTE3 = FND_API.G_MISS_CHAR) THEN
33348            l_new_instance_rec.ATTRIBUTE3 := l_curr_instance_rec.ATTRIBUTE3;
33349       ELSE
33350            l_new_instance_rec.ATTRIBUTE3 := p_source_instance_rec.ATTRIBUTE3;
33351       END IF;
33352       IF  (p_source_instance_rec.ATTRIBUTE4 = FND_API.G_MISS_CHAR) THEN
33353            l_new_instance_rec.ATTRIBUTE4 := l_curr_instance_rec.ATTRIBUTE4;
33354       ELSE
33355            l_new_instance_rec.ATTRIBUTE4 := p_source_instance_rec.ATTRIBUTE4;
33356       END IF;
33357       IF  (p_source_instance_rec.ATTRIBUTE5 = FND_API.G_MISS_CHAR) THEN
33358            l_new_instance_rec.ATTRIBUTE5 := l_curr_instance_rec.ATTRIBUTE5;
33359       ELSE
33360            l_new_instance_rec.ATTRIBUTE5 := p_source_instance_rec.ATTRIBUTE5;
33361       END IF;
33362       IF  (p_source_instance_rec.ATTRIBUTE6 = FND_API.G_MISS_CHAR) THEN
33363            l_new_instance_rec.ATTRIBUTE6 := l_curr_instance_rec.ATTRIBUTE6;
33364       ELSE
33365            l_new_instance_rec.ATTRIBUTE6 := p_source_instance_rec.ATTRIBUTE6;
33366       END IF;
33367       IF  (p_source_instance_rec.ATTRIBUTE7 = FND_API.G_MISS_CHAR) THEN
33368            l_new_instance_rec.ATTRIBUTE7 := l_curr_instance_rec.ATTRIBUTE7;
33369       ELSE
33370            l_new_instance_rec.ATTRIBUTE7 := p_source_instance_rec.ATTRIBUTE7;
33371       END IF;
33372       IF  (p_source_instance_rec.ATTRIBUTE8 = FND_API.G_MISS_CHAR) THEN
33373            l_new_instance_rec.ATTRIBUTE8 := l_curr_instance_rec.ATTRIBUTE8;
33374       ELSE
33375            l_new_instance_rec.ATTRIBUTE8 := p_source_instance_rec.ATTRIBUTE8;
33376       END IF;
33377       -- Added for bug 2681745
33378       IF  (p_source_instance_rec.ATTRIBUTE9 = FND_API.G_MISS_CHAR) THEN
33379            l_new_instance_rec.ATTRIBUTE9 := l_curr_instance_rec.ATTRIBUTE9;
33380       ELSE
33381            l_new_instance_rec.ATTRIBUTE9 := p_source_instance_rec.ATTRIBUTE9;
33382       END IF;
33383       -- End addition for bug 2681745
33384       IF  (p_source_instance_rec.ATTRIBUTE10 = FND_API.G_MISS_CHAR) THEN
33385            l_new_instance_rec.ATTRIBUTE10 := l_curr_instance_rec.ATTRIBUTE10;
33386       ELSE
33387            l_new_instance_rec.ATTRIBUTE10 := p_source_instance_rec.ATTRIBUTE10;
33388       END IF;
33389       IF  (p_source_instance_rec.ATTRIBUTE11 = FND_API.G_MISS_CHAR) THEN
33390            l_new_instance_rec.ATTRIBUTE11 := l_curr_instance_rec.ATTRIBUTE11;
33391       ELSE
33392            l_new_instance_rec.ATTRIBUTE11 := p_source_instance_rec.ATTRIBUTE11;
33393       END IF;
33394       IF  (p_source_instance_rec.ATTRIBUTE12 = FND_API.G_MISS_CHAR) THEN
33395            l_new_instance_rec.ATTRIBUTE12 := l_curr_instance_rec.ATTRIBUTE12;
33396       ELSE
33397            l_new_instance_rec.ATTRIBUTE12 := p_source_instance_rec.ATTRIBUTE12;
33398       END IF;
33399       IF  (p_source_instance_rec.ATTRIBUTE13 = FND_API.G_MISS_CHAR) THEN
33400            l_new_instance_rec.ATTRIBUTE13 := l_curr_instance_rec.ATTRIBUTE13;
33401       ELSE
33402            l_new_instance_rec.ATTRIBUTE13 := p_source_instance_rec.ATTRIBUTE13;
33403       END IF;
33404       IF  (p_source_instance_rec.ATTRIBUTE14 = FND_API.G_MISS_CHAR) THEN
33405            l_new_instance_rec.ATTRIBUTE14 := l_curr_instance_rec.ATTRIBUTE14;
33406       ELSE
33407            l_new_instance_rec.ATTRIBUTE14 := p_source_instance_rec.ATTRIBUTE14;
33408       END IF;
33409       IF  (p_source_instance_rec.ATTRIBUTE15 = FND_API.G_MISS_CHAR) THEN
33410            l_new_instance_rec.ATTRIBUTE15 := l_curr_instance_rec.ATTRIBUTE15;
33411       ELSE
33412            l_new_instance_rec.ATTRIBUTE15 := p_source_instance_rec.ATTRIBUTE15;
33413       END IF;
33414       IF  (p_source_instance_rec.LAST_OE_ORDER_LINE_ID = FND_API.G_MISS_NUM) THEN
33415            l_new_instance_rec.LAST_OE_ORDER_LINE_ID := l_curr_instance_rec.LAST_OE_ORDER_LINE_ID;
33416       ELSE
33417            l_new_instance_rec.LAST_OE_ORDER_LINE_ID := p_source_instance_rec.LAST_OE_ORDER_LINE_ID;
33418       END IF;
33419       IF (p_source_instance_rec.LAST_OE_RMA_LINE_ID  = FND_API.G_MISS_NUM) THEN
33420           l_new_instance_rec.LAST_OE_RMA_LINE_ID     := l_curr_instance_rec.LAST_OE_RMA_LINE_ID;
33421       ELSE
33422           l_new_instance_rec.LAST_OE_RMA_LINE_ID     := p_source_instance_rec.LAST_OE_RMA_LINE_ID;
33423       END IF;
33424       IF (p_source_instance_rec.LAST_PO_PO_LINE_ID  = FND_API.G_MISS_NUM) THEN
33425           l_new_instance_rec.LAST_PO_PO_LINE_ID    := l_curr_instance_rec.LAST_PO_PO_LINE_ID;
33426       ELSE
33427           l_new_instance_rec.LAST_PO_PO_LINE_ID    := p_source_instance_rec.LAST_PO_PO_LINE_ID;
33428       END IF;
33429       IF (p_source_instance_rec.LAST_OE_PO_NUMBER = FND_API.G_MISS_CHAR) THEN
33430           l_new_instance_rec.LAST_OE_PO_NUMBER       := l_curr_instance_rec.LAST_OE_PO_NUMBER;
33431       ELSE
33432           l_new_instance_rec.LAST_OE_PO_NUMBER       := p_source_instance_rec.LAST_OE_PO_NUMBER;
33433       END IF;
33434       IF (p_source_instance_rec.LAST_WIP_JOB_ID  = FND_API.G_MISS_NUM) THEN
33435           l_new_instance_rec.LAST_WIP_JOB_ID         := l_curr_instance_rec.LAST_WIP_JOB_ID;
33436       ELSE
33437           l_new_instance_rec.LAST_WIP_JOB_ID         := p_source_instance_rec.LAST_WIP_JOB_ID;
33438       END IF;
33439       IF (p_source_instance_rec.LAST_PA_PROJECT_ID  = FND_API.G_MISS_NUM) THEN
33440           l_new_instance_rec.LAST_PA_PROJECT_ID      := l_curr_instance_rec.LAST_PA_PROJECT_ID;
33441       ELSE
33442           l_new_instance_rec.LAST_PA_PROJECT_ID      := p_source_instance_rec.LAST_PA_PROJECT_ID;
33443       END IF;
33444       IF (p_source_instance_rec.LAST_PA_TASK_ID = FND_API.G_MISS_NUM) THEN
33445           l_new_instance_rec.LAST_PA_TASK_ID         := l_curr_instance_rec.LAST_PA_TASK_ID ;
33446       ELSE
33447           l_new_instance_rec.LAST_PA_TASK_ID         := p_source_instance_rec.LAST_PA_TASK_ID ;
33448       END IF;
33449       IF (p_source_instance_rec.LAST_OE_AGREEMENT_ID  = FND_API.G_MISS_NUM) THEN
33450           l_new_instance_rec.LAST_OE_AGREEMENT_ID    := l_curr_instance_rec.LAST_OE_AGREEMENT_ID ;
33451       ELSE
33452           l_new_instance_rec.LAST_OE_AGREEMENT_ID    := p_source_instance_rec.LAST_OE_AGREEMENT_ID ;
33453       END IF;
33454       IF (p_source_instance_rec.INSTALL_DATE = FND_API.G_MISS_DATE) THEN
33455           l_new_instance_rec.INSTALL_DATE            := l_curr_instance_rec.INSTALL_DATE;
33456       ELSE
33457           l_new_instance_rec.INSTALL_DATE            := p_source_instance_rec.INSTALL_DATE;
33458       END IF;
33459       IF (p_source_instance_rec.RETURN_BY_DATE = FND_API.G_MISS_DATE) THEN
33460           l_new_instance_rec.RETURN_BY_DATE          := l_curr_instance_rec.RETURN_BY_DATE;
33461       ELSE
33462           l_new_instance_rec.RETURN_BY_DATE          := p_source_instance_rec.RETURN_BY_DATE;
33463       END IF;
33464       IF (p_source_instance_rec.ACTUAL_RETURN_DATE = FND_API.G_MISS_DATE) THEN
33465           l_new_instance_rec.ACTUAL_RETURN_DATE      := l_curr_instance_rec.ACTUAL_RETURN_DATE;
33466       ELSE
33467           l_new_instance_rec.ACTUAL_RETURN_DATE      := p_source_instance_rec.ACTUAL_RETURN_DATE;
33468       END IF;
33469 	--start of code for eam integration--
33470 	IF (p_source_instance_rec.NETWORK_ASSET_FLAG = FND_API.G_MISS_CHAR) THEN
33471 	    l_new_instance_rec.NETWORK_ASSET_FLAG := l_curr_instance_rec.NETWORK_ASSET_FLAG;
33472 	ELSE
33473 	    l_new_instance_rec.NETWORK_ASSET_FLAG := p_source_instance_rec.NETWORK_ASSET_FLAG;
33474 	END IF;
33475 
33476 	IF (p_source_instance_rec.MAINTAINABLE_FLAG = FND_API.G_MISS_CHAR) THEN
33477 	    l_new_instance_rec.MAINTAINABLE_FLAG := l_curr_instance_rec.MAINTAINABLE_FLAG;
33478 	ELSE
33479 	    l_new_instance_rec.MAINTAINABLE_FLAG := p_source_instance_rec.MAINTAINABLE_FLAG;
33480 	END IF;
33481 
33482 	IF (p_source_instance_rec.PN_LOCATION_ID = FND_API.G_MISS_NUM) THEN
33483 	   l_new_instance_rec.PN_LOCATION_ID := l_curr_instance_rec.PN_LOCATION_ID;
33484 	ELSE
33485 	   l_new_instance_rec.PN_LOCATION_ID := p_source_instance_rec.PN_LOCATION_ID;
33486 	END IF;
33487 
33488 	IF (p_source_instance_rec.ASSET_CRITICALITY_CODE = FND_API.G_MISS_CHAR) THEN
33489 	   l_new_instance_rec.ASSET_CRITICALITY_CODE := l_curr_instance_rec.ASSET_CRITICALITY_CODE;
33490 	ELSE
33491 	   l_new_instance_rec.ASSET_CRITICALITY_CODE := p_source_instance_rec.ASSET_CRITICALITY_CODE;
33492 	END IF;
33493 
33494 	IF (p_source_instance_rec.CATEGORY_ID = FND_API.G_MISS_NUM) THEN
33495 	   l_new_instance_rec.CATEGORY_ID  := l_curr_instance_rec.CATEGORY_ID;
33496 	ELSE
33497 	   l_new_instance_rec.CATEGORY_ID  := p_source_instance_rec.CATEGORY_ID;
33498        END IF;
33499 
33500        IF (p_source_instance_rec.EQUIPMENT_GEN_OBJECT_ID = FND_API.G_MISS_NUM) THEN
33501 	  l_new_instance_rec.EQUIPMENT_GEN_OBJECT_ID := l_curr_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
33502        ELSE
33503 	  l_new_instance_rec.EQUIPMENT_GEN_OBJECT_ID := p_source_instance_rec.EQUIPMENT_GEN_OBJECT_ID;
33504        END IF;
33505 
33506        IF (p_source_instance_rec.INSTANTIATION_FLAG = FND_API.G_MISS_CHAR) THEN
33507 	   l_new_instance_rec.INSTANTIATION_FLAG := l_curr_instance_rec.INSTANTIATION_FLAG;
33508        ELSE
33509 	   l_new_instance_rec.INSTANTIATION_FLAG := p_source_instance_rec.INSTANTIATION_FLAG;
33510        END IF;
33511 
33512        IF (p_source_instance_rec.LINEAR_LOCATION_ID  = FND_API.G_MISS_NUM) THEN
33513 	   l_new_instance_rec.LINEAR_LOCATION_ID  := l_curr_instance_rec.LINEAR_LOCATION_ID ;
33514        ELSE
33515 	   l_new_instance_rec.LINEAR_LOCATION_ID  := p_source_instance_rec.LINEAR_LOCATION_ID ;
33516        END IF;
33517 
33518        IF (p_source_instance_rec.OPERATIONAL_LOG_FLAG = FND_API.G_MISS_CHAR) THEN
33519 	  l_new_instance_rec.OPERATIONAL_LOG_FLAG := l_curr_instance_rec.OPERATIONAL_LOG_FLAG;
33520        ELSE
33521 	  l_new_instance_rec.OPERATIONAL_LOG_FLAG := p_source_instance_rec.OPERATIONAL_LOG_FLAG;
33522        END IF;
33523 
33524        IF (p_source_instance_rec.CHECKIN_STATUS = FND_API.G_MISS_NUM) THEN
33525 	  l_new_instance_rec.CHECKIN_STATUS := l_curr_instance_rec.CHECKIN_STATUS;
33526        ELSE
33527 	  l_new_instance_rec.CHECKIN_STATUS := p_source_instance_rec.CHECKIN_STATUS;
33528        END IF;
33529 
33530        IF (p_source_instance_rec.SUPPLIER_WARRANTY_EXP_DATE = FND_API.G_MISS_DATE) THEN
33531 	  l_new_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := l_curr_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
33532        ELSE
33533 	  l_new_instance_rec.SUPPLIER_WARRANTY_EXP_DATE := p_source_instance_rec.SUPPLIER_WARRANTY_EXP_DATE;
33534        END IF;
33535 
33536        IF (p_source_instance_rec.ATTRIBUTE16 = FND_API.G_MISS_CHAR) THEN
33537 	 l_new_instance_rec.ATTRIBUTE16 := l_curr_instance_rec.ATTRIBUTE16;
33538        ELSE
33539 	 l_new_instance_rec.ATTRIBUTE16 := p_source_instance_rec.ATTRIBUTE16;
33540        END IF;
33541 
33542        IF (p_source_instance_rec.ATTRIBUTE17 = FND_API.G_MISS_CHAR) THEN
33543 	  l_new_instance_rec.ATTRIBUTE17 := l_curr_instance_rec.ATTRIBUTE17;
33544        ELSE
33545 	  l_new_instance_rec.ATTRIBUTE17 := p_source_instance_rec.ATTRIBUTE17;
33546        END IF;
33547 
33548        IF (p_source_instance_rec.ATTRIBUTE18 = FND_API.G_MISS_CHAR) THEN
33549 	  l_new_instance_rec.ATTRIBUTE18 := l_curr_instance_rec.ATTRIBUTE18;
33550        ELSE
33551 	  l_new_instance_rec.ATTRIBUTE18 := p_source_instance_rec.ATTRIBUTE18;
33552        END IF;
33553 
33554        IF (p_source_instance_rec.ATTRIBUTE19 = FND_API.G_MISS_CHAR) THEN
33555 	  l_new_instance_rec.ATTRIBUTE19 := l_curr_instance_rec.ATTRIBUTE19;
33556        ELSE
33557 	  l_new_instance_rec.ATTRIBUTE19 := p_source_instance_rec.ATTRIBUTE19;
33558        END IF;
33559 
33560        IF (p_source_instance_rec.ATTRIBUTE20 = FND_API.G_MISS_CHAR) THEN
33561 	   l_new_instance_rec.ATTRIBUTE20 := l_curr_instance_rec.ATTRIBUTE20;
33562        ELSE
33563 	   l_new_instance_rec.ATTRIBUTE20 := p_source_instance_rec.ATTRIBUTE20;
33564        END IF;
33565 
33566        IF (p_source_instance_rec.ATTRIBUTE21 = FND_API.G_MISS_CHAR) THEN
33567 	   l_new_instance_rec.ATTRIBUTE21 := l_curr_instance_rec.ATTRIBUTE21;
33568        ELSE
33569 	   l_new_instance_rec.ATTRIBUTE21 := p_source_instance_rec.ATTRIBUTE21;
33570        END IF;
33571 
33572        IF (p_source_instance_rec.ATTRIBUTE22 = FND_API.G_MISS_CHAR) THEN
33573 	  l_new_instance_rec.ATTRIBUTE22 := l_curr_instance_rec.ATTRIBUTE22;
33574        ELSE
33575 	  l_new_instance_rec.ATTRIBUTE22 := p_source_instance_rec.ATTRIBUTE22;
33576        END IF;
33577 
33578        IF (p_source_instance_rec.ATTRIBUTE23 = FND_API.G_MISS_CHAR) THEN
33579 	  l_new_instance_rec.ATTRIBUTE23 := l_curr_instance_rec.ATTRIBUTE23;
33580        ELSE
33581 	  l_new_instance_rec.ATTRIBUTE23 := p_source_instance_rec.ATTRIBUTE23;
33582        END IF;
33583 
33584        IF (p_source_instance_rec.ATTRIBUTE24 = FND_API.G_MISS_CHAR) THEN
33585 	  l_new_instance_rec.ATTRIBUTE24 := l_curr_instance_rec.ATTRIBUTE24;
33586        ELSE
33587 	  l_new_instance_rec.ATTRIBUTE24 := p_source_instance_rec.ATTRIBUTE24;
33588        END IF;
33589 
33590        IF (p_source_instance_rec.ATTRIBUTE25 = FND_API.G_MISS_CHAR) THEN
33591 	   l_new_instance_rec.ATTRIBUTE25 := l_curr_instance_rec.ATTRIBUTE25;
33592        ELSE
33593 	   l_new_instance_rec.ATTRIBUTE25 := p_source_instance_rec.ATTRIBUTE25;
33594        END IF;
33595 
33596        IF (p_source_instance_rec.ATTRIBUTE26 = FND_API.G_MISS_CHAR) THEN
33597 	  l_new_instance_rec.ATTRIBUTE26 := l_curr_instance_rec.ATTRIBUTE26;
33598        ELSE
33599 	  l_new_instance_rec.ATTRIBUTE26 := p_source_instance_rec.ATTRIBUTE26;
33600        END IF;
33601 
33602        IF (p_source_instance_rec.ATTRIBUTE27 = FND_API.G_MISS_CHAR) THEN
33603 	  l_new_instance_rec.ATTRIBUTE27 := l_curr_instance_rec.ATTRIBUTE27;
33604        ELSE
33605 	  l_new_instance_rec.ATTRIBUTE27 := p_source_instance_rec.ATTRIBUTE27;
33606        END IF;
33607 
33608        IF (p_source_instance_rec.ATTRIBUTE28 = FND_API.G_MISS_CHAR) THEN
33609 	  l_new_instance_rec.ATTRIBUTE28 := l_curr_instance_rec.ATTRIBUTE28;
33610        ELSE
33611 	  l_new_instance_rec.ATTRIBUTE28 := p_source_instance_rec.ATTRIBUTE28;
33612        END IF;
33613 
33614        IF (p_source_instance_rec.ATTRIBUTE29 = FND_API.G_MISS_CHAR) THEN
33615 	  l_new_instance_rec.ATTRIBUTE29 := l_curr_instance_rec.ATTRIBUTE29;
33616        ELSE
33617 	  l_new_instance_rec.ATTRIBUTE29 := p_source_instance_rec.ATTRIBUTE29;
33618        END IF;
33619 
33620        IF (p_source_instance_rec.ATTRIBUTE30 = FND_API.G_MISS_CHAR) THEN
33621 	  l_new_instance_rec.ATTRIBUTE30 := l_curr_instance_rec.ATTRIBUTE30;
33622        ELSE
33623 	  l_new_instance_rec.ATTRIBUTE30 := p_source_instance_rec.ATTRIBUTE30;
33624        END IF;
33625 
33626        IF (p_source_instance_rec.instance_number = fnd_api.g_miss_char)
33627        THEN
33628          NULL;
33629        ELSE
33630          l_new_instance_rec.instance_number := p_source_instance_rec.instance_number;
33631        END IF;
33632 
33633        IF (p_source_instance_rec.instance_description = fnd_api.g_miss_char)
33634        THEN
33635          NULL;
33636        ELSE
33637          l_new_instance_rec.instance_description := p_source_instance_rec.instance_description;
33638        END IF;
33639 
33640       --end of code for eam integration--
33641        -- Addition of columns for FA Integration
33642 
33643             IF (p_source_instance_rec.PAYABLES_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
33644                 l_new_instance_rec.PAYABLES_UNIT_PRICE      := l_curr_instance_rec.PAYABLES_UNIT_PRICE;
33645             ELSE
33646                 l_new_instance_rec.PAYABLES_UNIT_PRICE      := p_source_instance_rec.PAYABLES_UNIT_PRICE;
33647             END IF;
33648 
33649             IF (p_source_instance_rec.PAYABLES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
33650                 l_new_instance_rec.PAYABLES_CURRENCY_CODE := l_curr_instance_rec.PAYABLES_CURRENCY_CODE;
33651             ELSE
33652                 l_new_instance_rec.PAYABLES_CURRENCY_CODE := p_source_instance_rec.PAYABLES_CURRENCY_CODE;
33653             END IF;
33654 
33655             IF (p_source_instance_rec.PURCHASE_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
33656                 l_new_instance_rec.PURCHASE_UNIT_PRICE      := l_curr_instance_rec.PURCHASE_UNIT_PRICE;
33657             ELSE
33658                 l_new_instance_rec.PURCHASE_UNIT_PRICE      := p_source_instance_rec.PURCHASE_UNIT_PRICE;
33659             END IF;
33660 
33661             IF (p_source_instance_rec.PURCHASE_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
33662                 l_new_instance_rec.PURCHASE_CURRENCY_CODE := l_curr_instance_rec.PURCHASE_CURRENCY_CODE;
33663             ELSE
33664                 l_new_instance_rec.PURCHASE_CURRENCY_CODE := p_source_instance_rec.PURCHASE_CURRENCY_CODE;
33665             END IF;
33666 
33667             IF (p_source_instance_rec.SALES_UNIT_PRICE  = FND_API.G_MISS_NUM) THEN
33668                 l_new_instance_rec.SALES_UNIT_PRICE      := l_curr_instance_rec.SALES_UNIT_PRICE;
33669             ELSE
33670                 l_new_instance_rec.SALES_UNIT_PRICE      := p_source_instance_rec.SALES_UNIT_PRICE;
33671             END IF;
33672 
33673             IF (p_source_instance_rec.SALES_CURRENCY_CODE = FND_API.G_MISS_CHAR) THEN
33674                 l_new_instance_rec.SALES_CURRENCY_CODE := l_curr_instance_rec.SALES_CURRENCY_CODE;
33675             ELSE
33676                 l_new_instance_rec.SALES_CURRENCY_CODE := p_source_instance_rec.SALES_CURRENCY_CODE;
33677             END IF;
33678 
33679             IF (p_source_instance_rec.OPERATIONAL_STATUS_CODE = FND_API.G_MISS_CHAR) THEN
33680                 l_new_instance_rec.OPERATIONAL_STATUS_CODE := l_curr_instance_rec.OPERATIONAL_STATUS_CODE;
33681             ELSE
33682                 l_new_instance_rec.OPERATIONAL_STATUS_CODE := p_source_instance_rec.OPERATIONAL_STATUS_CODE;
33683             END IF;
33684 
33685         -- End addition of columns for FA Integration
33686       -- Set the non-copiable attributes as follows
33687             l_new_instance_rec.instance_id        := FND_API.G_MISS_NUM;
33688          --Uncommented below line for bug 14471544
33689            -- l_new_instance_rec.instance_number    := FND_API.G_MISS_CHAR; --commented for bug#16696575
33690 
33691          -- Added if condition for bug 6368191
33692          IF (p_source_instance_rec.active_start_date = FND_API.G_MISS_DATE)
33693          THEN
33694          --Default the active_start_date to system date if nothing was set
33695            l_new_instance_rec.active_start_date := SYSDATE;
33696          END IF;
33697 
33698             l_new_instance_rec.MANUALLY_CREATED_FLAG   := 'N';
33699             l_new_instance_rec.COMPLETENESS_FLAG       := NULL;
33700             l_new_instance_rec.OBJECT_VERSION_NUMBER   := 1;
33701                  -- The following is added for bug 2944298.
33702                  -- Value of instance_usage_code should be copied from the source instance
33703                  -- only if it is called from split.
33704                    IF p_call_from_split=fnd_api.g_true
33705                    THEN
33706                  -- Added by sguthiva for bug 2163942
33707                      IF (p_source_instance_rec.instance_usage_code = FND_API.G_MISS_CHAR) THEN
33708                          l_new_instance_rec.instance_usage_code := l_curr_instance_rec.instance_usage_code;
33709                      ELSE
33710                          l_new_instance_rec.instance_usage_code := p_source_instance_rec.instance_usage_code;
33711                      END IF;
33712 
33713                    ELSE
33714                       l_obj_id:=NULL;
33715 		      csi_ii_relationships_pvt.Get_Top_Most_Parent
33716 		        ( p_subject_id       => p_source_instance_rec.instance_id,
33717 		          p_rel_type_code    => 'COMPONENT-OF',
33718 			  p_object_id        => l_obj_id
33719 			);
33720 			--
33721 			IF l_obj_id <> p_source_instance_rec.instance_id THEN
33722 			   BEGIN
33723 			      SELECT instance_usage_code
33724 			      INTO   l_new_instance_rec.instance_usage_code
33725 			      FROM   csi_item_instances
33726 			      WHERE  instance_id=l_obj_id;
33727 			   EXCEPTION
33728 			      WHEN NO_DATA_FOUND THEN
33729 			         NULL;
33730 			   END;
33731 			 ELSE
33732 			    l_new_instance_rec.instance_usage_code := l_curr_instance_rec.instance_usage_code;
33733 			 END IF;
33734                    END IF;
33735                  -- End addition by sguthiva for bug 2163942
33736                  -- Added by sguthiva for bug 2230264
33737 
33738             IF (p_source_instance_rec.vld_organization_id = FND_API.G_MISS_NUM) THEN
33739                 l_new_instance_rec.vld_organization_id := l_vld_org_id;
33740             ELSE
33741                 l_new_instance_rec.vld_organization_id := p_source_instance_rec.vld_organization_id;
33742             END IF;
33743             IF (p_source_instance_rec.install_location_type_code = FND_API.G_MISS_CHAR) THEN
33744                 l_new_instance_rec.install_location_type_code := l_curr_instance_rec.install_location_type_code;
33745             ELSE
33746                 l_new_instance_rec.install_location_type_code := p_source_instance_rec.install_location_type_code;
33747             END IF;
33748             IF (p_source_instance_rec.install_location_id = FND_API.G_MISS_NUM) THEN
33749                 l_new_instance_rec.install_location_id := l_curr_instance_rec.install_location_id;
33750             ELSE
33751                 l_new_instance_rec.install_location_id := p_source_instance_rec.install_location_id;
33752             END IF;
33753         -- End addition by sguthiva for bug 2230264
33754 
33755 			IF p_source_instance_rec.SOURCE_CODE IS NULL THEN
33756               l_new_instance_rec.SOURCE_CODE := l_curr_instance_rec.SOURCE_CODE;
33757             ELSE
33758               l_new_instance_rec.SOURCE_CODE := p_source_instance_rec.SOURCE_CODE;
33759             END IF;
33760 
33761      --  Call Create_item_instance to create the new instance in csi_item_instances table.
33762             CSI_ITEM_INSTANCE_PVT.create_item_instance
33763              (  p_api_version             => p_api_version
33764                 ,p_commit                 => p_commit
33765                 ,p_init_msg_list          => p_init_msg_list
33766                 ,p_validation_level       => p_validation_level
33767                 ,p_instance_rec           => l_new_instance_rec
33768                 ,p_txn_rec                => p_txn_rec
33769                 ,p_party_tbl              => l_party_tbl
33770                 ,p_asset_tbl              => l_asset_tbl
33771                 ,x_return_status          => x_return_status
33772                 ,x_msg_count              => x_msg_count
33773                 ,x_msg_data               => x_msg_data
33774                 ,p_item_attribute_tbl     => l_item_attribute_tbl
33775                 ,p_location_tbl           => l_location_tbl
33776                 ,p_generic_id_tbl         => l_generic_id_tbl
33777                 ,p_lookup_tbl             => l_lookup_tbl
33778                 ,p_ins_count_rec          => l_ins_count_rec
33779              );
33780                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33781                   l_msg_index := 1;
33782                   l_msg_count := x_msg_count;
33783                   WHILE l_msg_count > 0 LOOP
33784                        x_msg_data := FND_MSG_PUB.GET
33785                                       (l_msg_index,
33786                                      FND_API.G_FALSE      );
33787 
33788                        csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33789                        l_msg_index := l_msg_index + 1;
33790                        l_msg_count := l_msg_count - 1;
33791                   END LOOP;
33792                   RAISE FND_API.G_EXC_ERROR;
33793                 ELSE
33794                    x_new_instance_tbl(1) := l_new_instance_rec;
33795                    l_map_count := l_map_count + 1;
33796                    l_map_inst_tbl(l_map_count).old_instance_id := p_source_instance_rec.instance_id;
33797                    l_map_inst_tbl(l_map_count).new_instance_id := l_new_instance_rec.instance_id;
33798                 END IF;
33799 
33800 
33801           -- Create a party or parties for the new instances
33802           IF l_party_tbl.COUNT > 0 THEN
33803 
33804                 FOR tab_row_party IN l_party_tbl.FIRST .. l_party_tbl.LAST
33805 
33806                 LOOP
33807 
33808                     IF l_party_tbl.EXISTS(tab_row_party) THEN
33809 
33810                        -- Build account query rec
33811                        l_party_account_query_rec.instance_party_id := l_party_tbl(tab_row_party).instance_party_id ;
33812                        l_party_account_query_rec.ip_account_id  := FND_API.G_MISS_NUM;
33813                        l_party_account_query_rec.party_account_id   := FND_API.G_MISS_NUM;
33814                        l_party_account_query_rec.relationship_type_code  := FND_API.G_MISS_CHAR;
33815 
33816                        -- Get party accounts
33817 
33818                        csi_party_relationships_pub.get_inst_party_accounts
33819                           ( p_api_version                 => p_api_version
33820                            ,p_commit                      => p_commit
33821                            ,p_init_msg_list               => p_init_msg_list
33822                            ,p_validation_level            => p_validation_level
33823                            ,p_account_query_rec           => l_party_account_query_rec
33824                            ,p_resolve_id_columns          => fnd_api.g_true
33825                            ,p_time_stamp                  => NULL
33826                            ,x_account_header_tbl          => l_account_header_tbl
33827                            ,x_return_status               => x_return_status
33828                            ,x_msg_count                   => x_msg_count
33829                            ,x_msg_data                    => x_msg_data);
33830 
33831                             IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33832                                l_msg_index := 1;
33833                                l_msg_count := x_msg_count;
33834                                WHILE l_msg_count > 0 LOOP
33835                                     x_msg_data := FND_MSG_PUB.GET
33836                                                    (l_msg_index,
33837                                                   FND_API.G_FALSE      );
33838                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33839                                     l_msg_index := l_msg_index + 1;
33840                                     l_msg_count := l_msg_count - 1;
33841                                END LOOP;
33842                                RAISE FND_API.G_EXC_ERROR;
33843                              END IF;
33844 
33845                          -- Start Addition for Bug 2186704
33846                          IF l_account_header_tbl.count>0
33847                          THEN
33848                            k:=1;
33849                             FOR i IN l_account_header_tbl.FIRST..l_account_header_tbl.LAST
33850                             LOOP
33851                                 IF l_account_header_tbl(i).active_end_date IS NULL OR
33852                                    l_account_header_tbl(i).active_end_date > SYSDATE
33853                                 THEN
33854                                    l_pty_acct_hdr_tbl(k):= l_account_header_tbl(i);
33855                                    k := k+1;
33856                                 END IF;
33857                             END LOOP;
33858                             l_account_header_tbl:=l_temp_acct_hdr_tbl;
33859                             l_account_header_tbl:=l_pty_acct_hdr_tbl;
33860                          END IF;
33861                          -- End Addition for Bug 2186704
33862 
33863                          IF l_account_header_tbl.COUNT > 0 THEN       /***********Second Change 07/27/01 - RK**********/
33864                                  FOR tab_row_party IN l_account_header_tbl.FIRST .. l_account_header_tbl.LAST
33865                                  LOOP
33866                                     IF l_account_header_tbl.EXISTS(tab_row_party) THEN
33867                                       --  Donot copy accounts if user says so
33868                                       IF (p_copy_accounts <> fnd_api.g_true) THEN
33869                                         IF (l_account_header_tbl(tab_row_party).RELATIONSHIP_TYPE_CODE = 'OWNER') THEN
33870                                         l_party_account_tbl(tab_row_party).ip_account_id := l_account_header_tbl(tab_row_party).ip_account_id;
33871                                         l_party_account_tbl(tab_row_party).instance_party_id := l_account_header_tbl(tab_row_party).instance_party_id;
33872                                         l_party_account_tbl(tab_row_party).party_account_id := l_account_header_tbl(tab_row_party).party_account_id;
33873                                         l_party_account_tbl(tab_row_party).relationship_type_code := l_account_header_tbl(tab_row_party).relationship_type_code;
33874                                         l_party_account_tbl(tab_row_party).bill_to_address := l_account_header_tbl(tab_row_party).bill_to_address;
33875                                         l_party_account_tbl(tab_row_party).ship_to_address := l_account_header_tbl(tab_row_party).ship_to_address;
33876                                         l_party_account_tbl(tab_row_party).active_start_date := l_account_header_tbl(tab_row_party).active_start_date;
33877                                         l_party_account_tbl(tab_row_party).active_end_date := l_account_header_tbl(tab_row_party).active_end_date;
33878                                         l_party_account_tbl(tab_row_party).context := l_account_header_tbl(tab_row_party).context;
33879                                         l_party_account_tbl(tab_row_party).attribute1 := l_account_header_tbl(tab_row_party).attribute1;
33880                                         l_party_account_tbl(tab_row_party).attribute2 := l_account_header_tbl(tab_row_party).attribute2;
33881                                         l_party_account_tbl(tab_row_party).attribute3 := l_account_header_tbl(tab_row_party).attribute3;
33882                                         l_party_account_tbl(tab_row_party).attribute4 := l_account_header_tbl(tab_row_party).attribute4;
33883                                         l_party_account_tbl(tab_row_party).attribute5 := l_account_header_tbl(tab_row_party).attribute5;
33884                                         l_party_account_tbl(tab_row_party).attribute6 := l_account_header_tbl(tab_row_party).attribute6;
33885                                         l_party_account_tbl(tab_row_party).attribute7 := l_account_header_tbl(tab_row_party).attribute7;
33886                                         l_party_account_tbl(tab_row_party).attribute8 := l_account_header_tbl(tab_row_party).attribute8;
33887                                         l_party_account_tbl(tab_row_party).attribute9 := l_account_header_tbl(tab_row_party).attribute9;
33888                                         l_party_account_tbl(tab_row_party).attribute10 := l_account_header_tbl(tab_row_party).attribute10;
33889                                         l_party_account_tbl(tab_row_party).attribute11 := l_account_header_tbl(tab_row_party).attribute11;
33890                                         l_party_account_tbl(tab_row_party).attribute12 := l_account_header_tbl(tab_row_party).attribute12;
33891                                         l_party_account_tbl(tab_row_party).attribute13 := l_account_header_tbl(tab_row_party).attribute13;
33892                                         l_party_account_tbl(tab_row_party).attribute14 := l_account_header_tbl(tab_row_party).attribute14;
33893                                         l_party_account_tbl(tab_row_party).attribute15 := l_account_header_tbl(tab_row_party).attribute15;
33894                                         l_party_account_tbl(tab_row_party).object_version_number := l_account_header_tbl(tab_row_party).object_version_number;
33895                                          END IF;
33896                                        ELSE
33897                                         l_party_account_tbl(tab_row_party).ip_account_id := l_account_header_tbl(tab_row_party).ip_account_id;
33898                                         l_party_account_tbl(tab_row_party).instance_party_id := l_account_header_tbl(tab_row_party).instance_party_id;
33899                                         l_party_account_tbl(tab_row_party).party_account_id := l_account_header_tbl(tab_row_party).party_account_id;
33900                                         l_party_account_tbl(tab_row_party).relationship_type_code := l_account_header_tbl(tab_row_party).relationship_type_code;
33901                                         l_party_account_tbl(tab_row_party).bill_to_address := l_account_header_tbl(tab_row_party).bill_to_address;
33902                                         l_party_account_tbl(tab_row_party).ship_to_address := l_account_header_tbl(tab_row_party).ship_to_address;
33903                                         l_party_account_tbl(tab_row_party).active_start_date := l_account_header_tbl(tab_row_party).active_start_date;
33904                                         l_party_account_tbl(tab_row_party).active_end_date := l_account_header_tbl(tab_row_party).active_end_date;
33905                                         l_party_account_tbl(tab_row_party).context := l_account_header_tbl(tab_row_party).context;
33906                                         l_party_account_tbl(tab_row_party).attribute1 := l_account_header_tbl(tab_row_party).attribute1;
33907                                         l_party_account_tbl(tab_row_party).attribute2 := l_account_header_tbl(tab_row_party).attribute2;
33908                                         l_party_account_tbl(tab_row_party).attribute3 := l_account_header_tbl(tab_row_party).attribute3;
33909                                         l_party_account_tbl(tab_row_party).attribute4 := l_account_header_tbl(tab_row_party).attribute4;
33910                                         l_party_account_tbl(tab_row_party).attribute5 := l_account_header_tbl(tab_row_party).attribute5;
33911                                         l_party_account_tbl(tab_row_party).attribute6 := l_account_header_tbl(tab_row_party).attribute6;
33912                                         l_party_account_tbl(tab_row_party).attribute7 := l_account_header_tbl(tab_row_party).attribute7;
33913                                         l_party_account_tbl(tab_row_party).attribute8 := l_account_header_tbl(tab_row_party).attribute8;
33914                                         l_party_account_tbl(tab_row_party).attribute9 := l_account_header_tbl(tab_row_party).attribute9;
33915                                         l_party_account_tbl(tab_row_party).attribute10 := l_account_header_tbl(tab_row_party).attribute10;
33916                                         l_party_account_tbl(tab_row_party).attribute11 := l_account_header_tbl(tab_row_party).attribute11;
33917                                         l_party_account_tbl(tab_row_party).attribute12 := l_account_header_tbl(tab_row_party).attribute12;
33918                                         l_party_account_tbl(tab_row_party).attribute13 := l_account_header_tbl(tab_row_party).attribute13;
33919                                         l_party_account_tbl(tab_row_party).attribute14 := l_account_header_tbl(tab_row_party).attribute14;
33920                                         l_party_account_tbl(tab_row_party).attribute15 := l_account_header_tbl(tab_row_party).attribute15;
33921                                         l_party_account_tbl(tab_row_party).object_version_number := l_account_header_tbl(tab_row_party).object_version_number;
33922                                         END IF;
33923                                       END IF;
33924                                  END LOOP;
33925                          END IF; --l_account_header_tbl.COUNT > 0
33926                     -- Empty the account_header table
33927                        l_account_header_tbl.DELETE;
33928                     -- Build the party table
33929                        l_party_tbl(tab_row_party).instance_party_id             := FND_API.G_MISS_NUM;
33930                        l_party_tbl(tab_row_party).INSTANCE_ID                   := l_new_instance_rec.instance_id;
33931                        l_party_tbl(tab_row_party).ACTIVE_START_DATE             := FND_API.G_MISS_DATE;
33932                        l_party_tbl(tab_row_party).ACTIVE_END_DATE               := FND_API.G_MISS_DATE;
33933                    -- Build the temporary party table with only one record
33934                    -- for and grab all its accounts
33935                        l_party_input_tbl(1) := l_party_tbl(tab_row_party);
33936                 -- Build its corresponding accounts
33937                         IF l_party_account_tbl.COUNT > 0 THEN
33938                             FOR tab_row_acct IN l_party_account_tbl.FIRST .. l_party_account_tbl.LAST
33939                             LOOP
33940                                -- l_party_account_tbl(tab_row_acct).parent_tbl_index := tab_row_party;
33941                                l_party_account_tbl(tab_row_acct).parent_tbl_index := 1;
33942                                l_party_account_tbl(tab_row_acct).ip_account_id  := FND_API.G_MISS_NUM;
33943                                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;
33944                                l_party_account_tbl(tab_row_acct).ACTIVE_START_DATE := FND_API.G_MISS_DATE;
33945                                l_party_account_tbl(tab_row_acct).ACTIVE_END_DATE   := FND_API.G_MISS_DATE;
33946                                l_party_account_tbl(tab_row_acct).call_contracts := FND_API.G_FALSE; -- srramakr Bug 2468638
33947                             END LOOP;
33948                         END IF;
33949                          -- Creae instance party relationship and its accounts
33950                         csi_party_relationships_pub.create_inst_party_relationship
33951                             ( p_api_version                 => p_api_version
33952                              ,p_commit                      => p_commit
33953                              ,p_init_msg_list               => p_init_msg_list
33954                              ,p_validation_level            => p_validation_level
33955                              ,p_party_tbl                   => l_party_input_tbl
33956                              ,p_party_account_tbl           => l_party_account_tbl
33957                              ,p_txn_rec                     => p_txn_rec
33958                              ,p_oks_txn_inst_tbl            => px_oks_txn_inst_tbl
33959                              ,x_return_status               => x_return_status
33960                              ,x_msg_count                   => x_msg_count
33961                              ,x_msg_data                    => x_msg_data
33962                               );
33963                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
33964                                l_msg_index := 1;
33965                                l_msg_count := x_msg_count;
33966                                WHILE l_msg_count > 0 LOOP
33967                                     x_msg_data := FND_MSG_PUB.GET
33968                                                    (l_msg_index,
33969                                                   FND_API.G_FALSE      );
33970                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
33971                                     l_msg_index := l_msg_index + 1;
33972                                     l_msg_count := l_msg_count - 1;
33973                                END LOOP;
33974                                RAISE FND_API.G_EXC_ERROR;
33975                              END IF;
33976                              -- Grab the new parties created in a new table
33977                                l_new_party_tbl(tab_row_party) := l_party_input_tbl(1);
33978                              -- Empty the party table
33979                                l_party_input_tbl.DELETE;
33980                              -- Empty the account table
33981                                l_party_account_tbl.DELETE;
33982            END IF;
33983           END LOOP;
33984       END IF;
33985           -- Create a contact or contacts for the new instances
33986       IF  (p_copy_contacts  = fnd_api.g_true) THEN
33987           IF l_contact_tbl.COUNT > 0 THEN
33988                 FOR tab_row_contact IN l_contact_tbl.FIRST .. l_contact_tbl.LAST
33989                 LOOP
33990                     IF l_contact_tbl.EXISTS(tab_row_contact) THEN
33991                       -- Find the contact_ip_id which was just created
33992                       -- for this contact
33993                        IF (l_original_party_tbl.COUNT > 0) THEN
33994                           FOR tab_row_party IN l_original_party_tbl.FIRST .. l_original_party_tbl.LAST
33995                           LOOP
33996                             IF l_original_party_tbl.EXISTS(tab_row_party) THEN
33997                               IF (l_original_party_tbl(tab_row_party).instance_party_id
33998                                  = l_contact_tbl(tab_row_contact).contact_ip_id )
33999                                 THEN
34000                                  l_contact_tbl(tab_row_contact).contact_ip_id :=
34001                                    l_new_party_tbl(tab_row_party).instance_party_id;
34002                                  l_contact_found_flag := TRUE;
34003                               END IF;
34004                             END IF;
34005                           END LOOP;
34006                        END IF;
34007                     -- Check if the contact_ip_id exists
34008                        IF ((l_contact_tbl(tab_row_contact).contact_ip_id IS NULL) OR
34009                        (l_contact_tbl(tab_row_contact).contact_ip_id
34010                          = FND_API.G_MISS_NUM)
34011                         OR NOT(l_contact_found_flag) ) THEN
34012                            FND_MESSAGE.SET_NAME('CSI','CSI_API_CONTACT_IP_ID_NULL');
34013                            FND_MESSAGE.SET_TOKEN('INSTANCE_PARTY_ID',
34014                               l_contact_tbl(tab_row_contact).instance_party_id);
34015                            FND_MSG_PUB.Add;
34016                            RAISE FND_API.G_EXC_ERROR;
34017                        END IF;
34018                     -- Build other fiels of the contact table
34019                        l_contact_tbl(tab_row_contact).instance_party_id             := FND_API.G_MISS_NUM;
34020                        l_contact_tbl(tab_row_contact).contact_flag   := 'Y';
34021                        l_contact_tbl(tab_row_contact).INSTANCE_ID                   := l_new_instance_rec.instance_id;
34022                        l_contact_tbl(tab_row_contact).ACTIVE_START_DATE             := FND_API.G_MISS_DATE;
34023                        l_contact_tbl(tab_row_contact).ACTIVE_END_DATE               := FND_API.G_MISS_DATE;
34024                    -- Build the temporary party table with only one record
34025                    -- for and grab all its accounts
34026                        l_contact_input_tbl(1) := l_contact_tbl(tab_row_contact);
34027 
34028                          -- Create instance party relationship and its accounts
34029                         csi_party_relationships_pub.create_inst_party_relationship
34030                             ( p_api_version                 => p_api_version
34031                              ,p_commit                      => p_commit
34032                              ,p_init_msg_list               => p_init_msg_list
34033                              ,p_validation_level            => p_validation_level
34034                              ,p_party_tbl                   => l_contact_input_tbl
34035                              ,p_party_account_tbl           => l_contact_account_tbl
34036                              ,p_txn_rec                     => p_txn_rec
34037                              ,p_oks_txn_inst_tbl            => px_oks_txn_inst_tbl
34038                              ,x_return_status               => x_return_status
34039                              ,x_msg_count                   => x_msg_count
34040                              ,x_msg_data                    => x_msg_data
34041                               );
34042                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34043                                l_msg_index := 1;
34044                                l_msg_count := x_msg_count;
34045                                WHILE l_msg_count > 0 LOOP
34046                                     x_msg_data := FND_MSG_PUB.GET
34047                                                    (l_msg_index,
34048                                                   FND_API.G_FALSE      );
34049                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34050                                     l_msg_index := l_msg_index + 1;
34051                                     l_msg_count := l_msg_count - 1;
34052                                END LOOP;
34053                                RAISE FND_API.G_EXC_ERROR;
34054                              END IF;
34055                              -- Grab the new parties created in a new table
34056                                l_new_contact_tbl(tab_row_contact) := l_contact_input_tbl(1);
34057                              -- Empty the party table
34058                                l_contact_input_tbl.DELETE;
34059                              -- Empty the account table
34060                                l_contact_account_tbl.DELETE;
34061                              l_contact_found_flag := FALSE;
34062            END IF;
34063           END LOOP;
34064       END IF;
34065    END IF;
34066        -- Empty the party and contact tables
34067        l_new_contact_tbl.DELETE;
34068        l_new_party_tbl.DELETE;
34069   -- Create asset assignments if requested. Asset assignments have already been fetched before
34070     IF  (p_copy_asset_assignments  = fnd_api.g_true) THEN
34071        IF l_asset_tbl.COUNT > 0 THEN
34072          FOR tab_row IN l_asset_tbl.FIRST .. l_asset_tbl.LAST
34073          LOOP
34074             IF l_asset_tbl.EXISTS(tab_row) THEN
34075                  l_asset_tbl(tab_row).INSTANCE_ID          := l_new_instance_rec.instance_id;
34076                  l_asset_tbl(tab_row).INSTANCE_ASSET_ID   := FND_API.G_MISS_NUM;
34077                  l_asset_tbl(tab_row).ACTIVE_START_DATE    := FND_API.G_MISS_DATE;
34078                  l_asset_tbl(tab_row).ACTIVE_END_DATE      := FND_API.G_MISS_DATE;
34079                  -- Trap the row in a record and create assets row by row
34080                  l_instance_asset_rec := l_asset_tbl(tab_row);
34081                   csi_asset_pvt.create_instance_asset
34082                     ( p_api_version                 => p_api_version
34083                      ,p_commit                      => p_commit
34084                      ,p_init_msg_list               => p_init_msg_list
34085                      ,p_validation_level            => p_validation_level
34086                      ,p_instance_asset_rec          => l_instance_asset_rec
34087                      ,p_txn_rec                     => p_txn_rec
34088                      ,x_return_status               => x_return_status
34089                      ,x_msg_count                   => x_msg_count
34090                      ,x_msg_data                    => x_msg_data
34091                      ,p_lookup_tbl                  => l_asset_lookup_tbl
34092                      ,p_asset_count_rec             => l_asset_count_rec
34093                      ,p_asset_id_tbl                => l_asset_id_tbl
34094                      ,p_asset_loc_tbl               => l_asset_loc_tbl
34095                     );
34096                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34097                                l_msg_index := 1;
34098                                l_msg_count := x_msg_count;
34099                                WHILE l_msg_count > 0 LOOP
34100                                     x_msg_data := FND_MSG_PUB.GET
34101                                                    (l_msg_index,
34102                                                   FND_API.G_FALSE      );
34103                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34104                                     l_msg_index := l_msg_index + 1;
34105                                     l_msg_count := l_msg_count - 1;
34106                                END LOOP;
34107                                RAISE FND_API.G_EXC_ERROR;
34108                              END IF;
34109               END IF;
34110            END LOOP;
34111         END IF;
34112      END IF;
34113    -- Created extended attributes if requested
34114     IF (p_copy_ext_attribs =  fnd_api.g_true) THEN
34115         l_ext_attribs_query_rec.attribute_value_id  := FND_API.G_MISS_NUM;
34116         l_ext_attribs_query_rec.instance_id := l_curr_instance_rec.instance_id;
34117         l_ext_attribs_query_rec.attribute_id := FND_API.G_MISS_NUM;
34118         csi_item_instance_pub.get_extended_attrib_values
34119                (p_api_version            =>  p_api_version
34120                ,p_commit                 => p_commit
34121                ,p_init_msg_list          => p_init_msg_list
34122                ,p_validation_level       => p_validation_level
34123                ,p_ext_attribs_query_rec  => l_ext_attribs_query_rec
34124                ,p_time_stamp             => NULL
34125                ,x_ext_attrib_tbl         => l_ext_attrib_tbl
34126                ,x_ext_attrib_def_tbl     => l_ext_attrib_def_tbl
34127                ,x_return_status          => x_return_status
34128                ,x_msg_count              => x_msg_count
34129                ,x_msg_data               => x_msg_data
34130                );
34131                       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34132                                l_msg_index := 1;
34133                                l_msg_count := x_msg_count;
34134                                WHILE l_msg_count > 0 LOOP
34135                                     x_msg_data := FND_MSG_PUB.GET
34136                                                    (l_msg_index,
34137                                                   FND_API.G_FALSE      );
34138                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34139                                     l_msg_index := l_msg_index + 1;
34140                                     l_msg_count := l_msg_count - 1;
34141                                END LOOP;
34142                                RAISE FND_API.G_EXC_ERROR;
34143                       END IF;
34144       IF l_ext_attrib_tbl.COUNT > 0 THEN
34145          FOR tab_row IN l_ext_attrib_tbl.FIRST .. l_ext_attrib_tbl.LAST
34146          LOOP
34147             IF l_ext_attrib_tbl.EXISTS(tab_row) THEN
34148               IF NOT(csi_Item_Instance_Vld_pvt.get_ext_attrib_level(l_ext_attrib_tbl(tab_row).attribute_id,
34149                                         l_attribute_level ))THEN
34150                  RAISE FND_API.G_EXC_ERROR;
34151               END IF;
34152               IF (l_attribute_level = 'INSTANCE') THEN
34153                  l_ext_attrib_tbl.DELETE (tab_row);
34154               ELSE
34155                  l_ext_attrib_tbl(tab_row).INSTANCE_ID := l_new_instance_rec.instance_id;
34156                  l_ext_attrib_tbl(tab_row).ATTRIBUTE_VALUE_ID   := FND_API.G_MISS_NUM;
34157                  l_ext_attrib_tbl(tab_row).ACTIVE_START_DATE  := FND_API.G_MISS_DATE;
34158                  l_ext_attrib_tbl(tab_row).ACTIVE_END_DATE  := FND_API.G_MISS_DATE;
34159               END IF;
34160             END IF;
34161          END LOOP;
34162             -- It is possible that all the extended attributes were set at instance level and thus we have an empty table
34163             IF l_ext_attrib_tbl.COUNT > 0 THEN
34164               csi_item_instance_pub.create_extended_attrib_values
34165               ( p_api_version         => p_api_version
34166                ,p_commit              => p_commit
34167                ,p_init_msg_list       => p_init_msg_list
34168                ,p_validation_level    => p_validation_level
34169                ,p_ext_attrib_tbl      => l_ext_attrib_tbl
34170                ,p_txn_rec             => p_txn_rec
34171                ,x_return_status       => x_return_status
34172                ,x_msg_count           => x_msg_count
34173                ,x_msg_data            => x_msg_data
34174               );
34175                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34176                                l_msg_index := 1;
34177                                l_msg_count := x_msg_count;
34178                                WHILE l_msg_count > 0 LOOP
34179                                     x_msg_data := FND_MSG_PUB.GET
34180                                                    (l_msg_index,
34181                                                   FND_API.G_FALSE      );
34182                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34183                                     l_msg_index := l_msg_index + 1;
34184                                     l_msg_count := l_msg_count - 1;
34185                                END LOOP;
34186                                RAISE FND_API.G_EXC_ERROR;
34187                              END IF;
34188              END IF;
34189           END IF;
34190        END IF;
34191     -- Create org assignments if requested
34192     IF (p_copy_org_assignments = fnd_api.g_true) THEN
34193           l_ou_query_rec.instance_ou_id := FND_API.G_MISS_NUM;
34194           l_ou_query_rec.instance_id := l_curr_instance_rec.instance_id;
34195           l_ou_query_rec.operating_unit_id := FND_API.G_MISS_NUM;
34196           l_ou_query_rec.relationship_type_code  := FND_API.G_MISS_CHAR;
34197             csi_organization_unit_pub.get_organization_unit
34198                (
34199                p_api_version             => p_api_version
34200                ,p_commit                 => p_commit
34201                ,p_init_msg_list          => p_init_msg_list
34202                ,p_validation_level       => p_validation_level
34203                ,p_ou_query_rec           => l_ou_query_rec
34204                ,p_resolve_id_columns     => fnd_api.g_true
34205                ,p_time_stamp             => NULL
34206                ,x_org_unit_tbl           => l_org_unit_header_tbl
34207                ,x_return_status          => x_return_status
34208                ,x_msg_count              => x_msg_count
34209                ,x_msg_data               => x_msg_data
34210                );
34211                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34212                                l_msg_index := 1;
34213                                l_msg_count := x_msg_count;
34214                                WHILE l_msg_count > 0 LOOP
34215                                     x_msg_data := FND_MSG_PUB.GET
34216                                                    (l_msg_index,
34217                                                   FND_API.G_FALSE      );
34218                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34219                                     l_msg_index := l_msg_index + 1;
34220                                     l_msg_count := l_msg_count - 1;
34221                                END LOOP;
34222                                RAISE FND_API.G_EXC_ERROR;
34223                              END IF;
34224               IF l_org_unit_header_tbl.COUNT > 0 THEN    /*****First change here 08/25/01 - RK***/
34225                 FOR tab_row_party IN l_org_unit_header_tbl.FIRST .. l_org_unit_header_tbl.LAST
34226                 LOOP
34227                      IF l_org_unit_header_tbl.EXISTS(tab_row_party) THEN
34228                              l_org_unit_tbl(tab_row_party).instance_ou_id := l_org_unit_header_tbl(tab_row_party).instance_ou_id;
34229                              l_org_unit_tbl(tab_row_party).instance_id := l_org_unit_header_tbl(tab_row_party).instance_id;
34230                              l_org_unit_tbl(tab_row_party).operating_unit_id := l_org_unit_header_tbl(tab_row_party).operating_unit_id;
34231                              l_org_unit_tbl(tab_row_party).relationship_type_code := l_org_unit_header_tbl(tab_row_party).relationship_type_code;
34232                              l_org_unit_tbl(tab_row_party).active_start_date := l_org_unit_header_tbl(tab_row_party).active_start_date;
34233                              l_org_unit_tbl(tab_row_party).active_end_date := l_org_unit_header_tbl(tab_row_party).active_end_date;
34234                              l_org_unit_tbl(tab_row_party).context := l_org_unit_header_tbl(tab_row_party).context;
34235                              l_org_unit_tbl(tab_row_party).attribute1 := l_org_unit_header_tbl(tab_row_party).attribute1;
34236                              l_org_unit_tbl(tab_row_party).attribute2 := l_org_unit_header_tbl(tab_row_party).attribute2;
34237                              l_org_unit_tbl(tab_row_party).attribute3 := l_org_unit_header_tbl(tab_row_party).attribute3;
34238                              l_org_unit_tbl(tab_row_party).attribute4 := l_org_unit_header_tbl(tab_row_party).attribute4;
34239                              l_org_unit_tbl(tab_row_party).attribute5 := l_org_unit_header_tbl(tab_row_party).attribute5;
34240                              l_org_unit_tbl(tab_row_party).attribute6 := l_org_unit_header_tbl(tab_row_party).attribute6;
34241                              l_org_unit_tbl(tab_row_party).attribute7 := l_org_unit_header_tbl(tab_row_party).attribute7;
34242                              l_org_unit_tbl(tab_row_party).attribute8 := l_org_unit_header_tbl(tab_row_party).attribute8;
34243                              l_org_unit_tbl(tab_row_party).attribute9 := l_org_unit_header_tbl(tab_row_party).attribute9;
34244                              l_org_unit_tbl(tab_row_party).attribute10 := l_org_unit_header_tbl(tab_row_party).attribute10;
34245                              l_org_unit_tbl(tab_row_party).attribute11 := l_org_unit_header_tbl(tab_row_party).attribute11;
34246                              l_org_unit_tbl(tab_row_party).attribute12 := l_org_unit_header_tbl(tab_row_party).attribute12;
34247                              l_org_unit_tbl(tab_row_party).attribute13 := l_org_unit_header_tbl(tab_row_party).attribute13;
34248                              l_org_unit_tbl(tab_row_party).attribute14 := l_org_unit_header_tbl(tab_row_party).attribute14;
34249                              l_org_unit_tbl(tab_row_party).attribute15 := l_org_unit_header_tbl(tab_row_party).attribute15;
34250                              l_org_unit_tbl(tab_row_party).object_version_number := l_org_unit_header_tbl(tab_row_party).object_version_number;
34251                      END IF;
34252                 END LOOP;
34253              END IF; --l_org_unit_header_tbl.COUNT > 0
34254      IF l_org_unit_tbl.COUNT > 0 THEN
34255          FOR tab_row IN l_org_unit_tbl.FIRST .. l_org_unit_tbl.LAST
34256          LOOP
34257             IF l_org_unit_tbl.EXISTS(tab_row) THEN
34258                  l_org_unit_tbl(tab_row).INSTANCE_ID        := l_new_instance_rec.instance_id;
34259                  l_org_unit_tbl(tab_row).INSTANCE_OU_ID     := FND_API.G_MISS_NUM;
34260                  l_org_unit_tbl(tab_row).ACTIVE_START_DATE  := FND_API.G_MISS_DATE;
34261                  l_org_unit_tbl(tab_row).ACTIVE_END_DATE    := FND_API.G_MISS_DATE;
34262               END IF;
34263          END LOOP;
34264             csi_organization_unit_pub.create_organization_unit
34265             ( p_api_version       => p_api_version
34266              ,p_commit            => p_commit
34267              ,p_init_msg_list     => p_init_msg_list
34268              ,p_validation_level  => p_validation_level
34269              ,p_org_unit_tbl      => l_org_unit_tbl
34270              ,p_txn_rec           => p_txn_rec
34271              ,x_return_status     => x_return_status
34272              ,x_msg_count         => x_msg_count
34273              ,x_msg_data          => x_msg_data
34274             );
34275                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34276                                l_msg_index := 1;
34277                                l_msg_count := x_msg_count;
34278                                WHILE l_msg_count > 0 LOOP
34279                                     x_msg_data := FND_MSG_PUB.GET
34280                                                    (l_msg_index,
34281                                                   FND_API.G_FALSE      );
34282                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34283                                     l_msg_index := l_msg_index + 1;
34284                                     l_msg_count := l_msg_count - 1;
34285                                END LOOP;
34286                                RAISE FND_API.G_EXC_ERROR;
34287                              END IF;
34288          END IF;
34289     END IF;
34290    -- Create pricing attributes if requested
34291    IF (p_copy_pricing_attribs = fnd_api.g_true) THEN
34292       l_pricing_attribs_query_rec.pricing_attribute_id  := FND_API.G_MISS_NUM;
34293       l_pricing_attribs_query_rec.instance_id           := l_curr_instance_rec.instance_id;
34294 
34295        csi_pricing_attribs_pub.get_pricing_attribs
34296             ( p_api_version                 => p_api_version
34297              ,p_commit                      => p_commit
34298              ,p_init_msg_list               => p_init_msg_list
34299              ,p_validation_level            => p_validation_level
34300              ,p_pricing_attribs_query_rec   => l_pricing_attribs_query_rec
34301              ,p_time_stamp                  => NULL
34302              ,x_pricing_attribs_tbl         => l_pricing_attribs_tbl
34303              ,x_return_status               => x_return_status
34304              ,x_msg_count                   => x_msg_count
34305              ,x_msg_data                    => x_msg_data
34306             );
34307 
34308                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34309                                l_msg_index := 1;
34310                                l_msg_count := x_msg_count;
34311                                WHILE l_msg_count > 0 LOOP
34312                                     x_msg_data := FND_MSG_PUB.GET
34313                                                    (l_msg_index,
34314                                                   FND_API.G_FALSE      );
34315                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34316                                     l_msg_index := l_msg_index + 1;
34317                                     l_msg_count := l_msg_count - 1;
34318                                END LOOP;
34319                                RAISE FND_API.G_EXC_ERROR;
34320                              END IF;
34321 
34322 
34323      IF l_pricing_attribs_tbl.COUNT > 0 THEN
34324          FOR tab_row IN l_pricing_attribs_tbl.FIRST .. l_pricing_attribs_tbl.LAST
34325          LOOP
34326             IF l_pricing_attribs_tbl.EXISTS(tab_row) THEN
34327                  l_pricing_attribs_tbl(tab_row).INSTANCE_ID            := l_new_instance_rec.instance_id;
34328                  l_pricing_attribs_tbl(tab_row).PRICING_ATTRIBUTE_ID   := FND_API.G_MISS_NUM;
34329                  l_pricing_attribs_tbl(tab_row).ACTIVE_START_DATE      := FND_API.G_MISS_DATE;
34330                  l_pricing_attribs_tbl(tab_row).ACTIVE_END_DATE        := FND_API.G_MISS_DATE;
34331               END IF;
34332          END LOOP;
34333 
34334          csi_pricing_attribs_pub.create_pricing_attribs
34335             ( p_api_version                 => p_api_version
34336              ,p_commit                      => p_commit
34337              ,p_init_msg_list               => p_init_msg_list
34338              ,p_validation_level            => p_validation_level
34339              ,p_pricing_attribs_tbl         => l_pricing_attribs_tbl
34340              ,p_txn_rec                     => p_txn_rec
34341              ,x_return_status               => x_return_status
34342              ,x_msg_count                   => x_msg_count
34343              ,x_msg_data                    => x_msg_data
34344             );
34345 
34346                              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34347                                l_msg_index := 1;
34348                                l_msg_count := x_msg_count;
34349                                WHILE l_msg_count > 0 LOOP
34350                                     x_msg_data := FND_MSG_PUB.GET
34351                                                    (l_msg_index,
34352                                                   FND_API.G_FALSE      );
34353                                     csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34354                                     l_msg_index := l_msg_index + 1;
34355                                     l_msg_count := l_msg_count - 1;
34356                                END LOOP;
34357                                RAISE FND_API.G_EXC_ERROR;
34358                              END IF;
34359        END IF;
34360    END IF;
34361 
34362 
34363 -- Added by rtalluri for Bug: 2420897 on 08/19/02
34364 -- If version label is null, then we need read the the default value from the profile option
34365       IF (p_source_instance_rec.VERSION_LABEL IS NULL ) OR
34366          (p_source_instance_rec.VERSION_LABEL = FND_API.G_MISS_CHAR) THEN
34367           l_version_label := FND_PROFILE.VALUE('CSI_DEFAULT_VERSION_LABEL');
34368            IF  l_version_label IS NULL THEN
34369                FND_MESSAGE.SET_NAME('CSI','CSI_API_INVALID_VERSION_LABEL');
34370                FND_MSG_PUB.ADD;
34371                RAISE FND_API.G_EXC_ERROR;
34372            ELSE
34373                l_new_instance_rec.version_label := l_version_label;
34374            END IF;
34375       ELSE
34376         l_new_instance_rec.VERSION_LABEL := p_source_instance_rec.VERSION_LABEL;
34377       END IF;
34378 
34379       --Calling the Create Version Label API to associate a version label for an instance created
34380 
34381         l_version_label_rec.instance_id           := l_new_instance_rec.instance_id;
34382         l_version_label_rec.version_label         := l_new_instance_rec.version_label;
34383         l_version_label_rec.date_time_stamp       := SYSDATE;
34384         l_version_label_rec.active_start_date     := l_new_instance_rec.active_start_date;
34385         l_version_label_rec.description           := l_new_instance_rec.version_label_description;
34386 
34387         csi_item_instance_pvt.create_version_label
34388           (
34389            p_api_version         => p_api_version
34390           ,p_commit              => fnd_api.g_false
34391           ,p_init_msg_list       => p_init_msg_list
34392           ,p_validation_level    => p_validation_level
34393           ,p_version_label_rec   => l_version_label_rec
34394           ,p_txn_rec             => p_txn_rec
34395           ,x_return_status       => x_return_status
34396           ,x_msg_count           => x_msg_count
34397           ,x_msg_data            => x_msg_data
34398            );
34399 
34400          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34401               csi_gen_utility_pvt.put_line( ' Error from COPY_ITEM_INSTANCE.CREATE_VERSION_LABEL..');
34402               csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
34403               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_CREATE_VERSION');
34404               FND_MESSAGE.SET_TOKEN('API_ERROR','CREATE_VERSION_LABEL');
34405               FND_MSG_PUB.Add;
34406               RAISE FND_API.G_EXC_ERROR;
34407          END IF;
34408 -- End of Addition by rtalluri for Bug: 2420897 on 08/19/02
34409 
34410       IF p_call_from_split = fnd_api.g_false
34411       THEN
34412            -- Added by sk for fixing the bug 2234365
34413            IF x_new_instance_tbl(1).instance_id IS NOT NULL AND
34414               x_new_instance_tbl(1).instance_id <> fnd_api.g_miss_num
34415            THEN
34416                   -- Added by sk for fixing bug 2245976
34417                   IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
34418                      csi_gen_utility_pvt.populate_install_param_rec;
34419                   END IF;
34420                   --
34421                   l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
34422                   --
34423                   IF l_internal_party_id IS NULL THEN
34424                      FND_MESSAGE.SET_NAME('CSI','CSI_API_UNINSTALLED_PARAMETER');
34425                      FND_MSG_PUB.ADD;
34426                      RAISE FND_API.G_EXC_ERROR;
34427                   END IF;
34428 
34429                   BEGIN
34430                       SELECT cip.party_id
34431                       INTO   l_party_id
34432                       FROM   csi_i_parties cip
34433                       WHERE  cip.instance_id = x_new_instance_tbl(1).instance_id
34434                       AND    cip.relationship_type_code = 'OWNER';
34435                  EXCEPTION
34436                    WHEN OTHERS THEN
34437                     l_party_id := NULL;
34438                    END;
34439 
34440                    -- Added for Bug 14593787
34441                   BEGIN
34442                     select 'Y'
34443                     into l_contract_exists
34444                     from okc_k_lines_b where id in
34445                     ( select CLE_ID from okc_k_items
34446                     where object1_id1=( select to_char(instance_id) from csi_item_instances where instance_id = p_source_instance_rec.instance_id)   --15866675
34447                     and jtot_object1_code= 'OKX_CUSTPROD') and rownum=1;
34448                   EXCEPTION
34449                    WHEN OTHERS THEN
34450                     l_contract_exists := NULL;
34451                   END;
34452 
34453 
34454                    IF l_party_id IS NOT NULL AND
34455                       l_internal_party_id IS NOT NULL AND
34456                       l_party_id <> l_internal_party_id
34457 					  AND (l_contract_exists = 'Y') -- Added for Bug 14593787
34458                    THEN
34459                       -- End addition by sk for fixing bug 2245976
34460                       csi_item_instance_pvt.Call_to_Contracts(
34461                               p_transaction_type   =>   'NEW'
34462                              ,p_instance_id        =>   x_new_instance_tbl(1).instance_id
34463                              ,p_new_instance_id    =>   NULL
34464                              ,p_vld_org_id         =>   x_new_instance_tbl(1).vld_organization_id
34465                              ,p_quantity           =>   NULL
34466                              ,p_party_account_id1  =>   NULL
34467                              ,p_party_account_id2  =>   NULL
34468                              ,p_transaction_date   =>   p_txn_rec.transaction_date -- For 3483763
34469                              ,p_source_transaction_date   =>   p_txn_rec.source_transaction_date -- For 3483763
34470                              ,p_oks_txn_inst_tbl   =>   px_oks_txn_inst_tbl
34471                              ,x_return_status      =>   x_return_status
34472                              ,x_msg_count          =>   x_msg_count
34473                              ,x_msg_data           =>   x_msg_data
34474                               );
34475 
34476                       IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS)
34477                       THEN
34478                          l_msg_index := 1;
34479                          l_msg_count := x_msg_count;
34480                          WHILE l_msg_count > 0 LOOP
34481                           x_msg_data := FND_MSG_PUB.GET
34482                                    (  l_msg_index,
34483                                       FND_API.G_FALSE
34484                                     );
34485                            csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
34486                              l_msg_index := l_msg_index + 1;
34487                              l_msg_count := l_msg_count - 1;
34488                          END LOOP;
34489                          RAISE FND_API.G_EXC_ERROR;
34490                       END IF;
34491                       --
34492 		      IF px_oks_txn_inst_tbl.count > 0 THEN
34493 			 csi_gen_utility_pvt.dump_oks_txn_inst_tbl(px_oks_txn_inst_tbl);
34494 			 csi_gen_utility_pvt.put_line('Calling OKS Core API...');
34495 			 --
34496 			 IF p_txn_rec.transaction_type_id = 3 THEN
34497 			    l_batch_id := p_txn_rec.source_header_ref_id;
34498 			    l_batch_type := p_txn_rec.source_group_ref;
34499 			 ELSE
34500 			    l_batch_id := NULL;
34501 			    l_batch_type := NULL;
34502 			 END IF;
34503 			 --
34504                          UPDATE CSI_TRANSACTIONS
34505                          set contracts_invoked = 'Y'
34506                          where transaction_id = p_txn_rec.transaction_id;
34507                          --
34508 			 OKS_IBINT_PUB.IB_interface
34509 			    (
34510 			      P_Api_Version           =>  1.0,
34511 			      P_init_msg_list         =>  p_init_msg_list,
34512 			      P_single_txn_date_flag  =>  'Y',
34513 			      P_Batch_type            =>  l_batch_type,
34514 			      P_Batch_ID              =>  l_batch_id,
34515 			      P_OKS_Txn_Inst_tbl      =>  px_oks_txn_inst_tbl,
34516 			      x_return_status         =>  x_return_status,
34517 			      x_msg_count             =>  x_msg_count,
34518 			      x_msg_data              =>  x_msg_data
34519 			   );
34520 			 --
34521 			 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34522 			    l_msg_index := 1;
34523 			    l_msg_count := x_msg_count;
34524 			    WHILE l_msg_count > 0 LOOP
34525 			       x_msg_data := FND_MSG_PUB.GET
34526 				       (  l_msg_index,
34527 					  FND_API.G_FALSE        );
34528 			       csi_gen_utility_pvt.put_line( 'Error from OKS_IBINT_PUB.IB_interface..');
34529 			       csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
34530 			       l_msg_index := l_msg_index + 1;
34531 			       l_msg_count := l_msg_count - 1;
34532 			    END LOOP;
34533 			    RAISE FND_API.G_EXC_ERROR;
34534 			 END IF;
34535 		      END IF;
34536                    END IF;
34537            END IF;
34538           -- End Addition by sk for fixing the bug 2234365
34539       END IF;
34540 
34541    -- Copy child instances if desired
34542    IF (p_copy_inst_children = fnd_api.g_true) THEN
34543 
34544       p_rel_query_rec.object_id := p_source_instance_rec.instance_id;
34545       p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
34546       --
34547       IF p_rel_query_rec.object_id IS NOT NULL AND
34548          p_rel_query_rec.object_id <> FND_API.G_MISS_NUM THEN
34549         csi_ii_relationships_pvt.Get_Children
34550 	 ( p_relationship_query_rec   => p_rel_query_rec,
34551 	   p_rel_tbl                  => l_rel_tbl,
34552            p_depth                    => NULL,
34553 	   p_active_relationship_only => FND_API.G_TRUE,
34554 	   p_time_stamp               => FND_API.G_MISS_DATE,
34555            p_get_dfs                  => FND_API.G_FALSE,
34556            p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
34557 	   x_return_status            => x_return_status,
34558 	   x_msg_count                => x_msg_count,
34559 	   x_msg_data                 => x_msg_data
34560 	 );
34561          --
34562          IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
34563 	    FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
34564 	    FND_MSG_PUB.Add;
34565 	    RAISE FND_API.G_EXC_ERROR;
34566          END IF;
34567       END IF;
34568        --
34569      -- FOR inst_config_rec IN inst_children_cur( p_source_instance_rec.instance_id)
34570       IF l_rel_tbl.count > 0 THEN
34571          FOR j in l_rel_tbl.FIRST .. l_rel_tbl.LAST
34572          LOOP
34573               IF NOT(csi_Item_Instance_Vld_pvt.Val_and_get_inst_rec(
34574                      l_rel_tbl(j).SUBJECT_ID,
34575                      l_source_child_instance_rec)) THEN
34576                   RAISE FND_API.G_EXC_ERROR;
34577               END IF;
34578 
34579               IF l_source_child_instance_rec.vld_organization_id = l_par_vld_organization_id
34580               THEN
34581                  l_source_child_instance_rec.vld_organization_id := l_new_instance_rec.vld_organization_id;
34582               END IF;
34583 
34584               -- Added by rtalluri for the Bug: 2297972
34585 	      IF l_source_child_instance_rec.serial_number IS NOT NULL
34586 	      THEN
34587 		 l_source_child_instance_rec.serial_number := NULL;
34588 		 l_source_child_instance_rec.mfg_serial_number_flag := 'N';
34589 		 l_source_child_instance_rec.creation_complete_flag := FND_API.G_MISS_CHAR;
34590               END IF;
34591               -- End of Addition by rtalluri for the Bug: 2297972
34592                     csi_item_instance_pvt.copy_single_item_instance
34593                      ( p_api_version                 => p_api_version
34594                       ,p_commit                      => fnd_api.g_false
34595                       ,p_init_msg_list               => p_init_msg_list
34596                       ,p_validation_level            => p_validation_level
34597                       ,p_source_instance_rec         => l_source_child_instance_rec
34598                       ,p_copy_ext_attribs            => p_copy_ext_attribs
34599                       ,p_copy_org_assignments        => p_copy_org_assignments
34600                       ,p_copy_parties                => p_copy_parties
34601                       ,p_copy_contacts               => p_copy_contacts
34602                       ,p_copy_accounts               => p_copy_accounts
34603                       ,p_copy_asset_assignments      => p_copy_asset_assignments
34604                       ,p_copy_pricing_attribs        => p_copy_pricing_attribs
34605                       ,p_call_from_split             => p_call_from_split
34606                       -- ,p_copy_inst_children          => fnd_api.g_false
34607                       ,p_txn_rec                     => p_txn_rec
34608                       ,x_new_instance_tbl            => l_new_child_instance_tbl
34609                       ,x_return_status               => x_return_status
34610                       ,x_msg_count                   => x_msg_count
34611                       ,x_msg_data                    => x_msg_data
34612                      );
34613                   IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34614                       FOR i in 1..x_msg_Count LOOP
34615                         FND_MSG_PUB.Get(p_msg_index     => i,
34616                                         p_encoded       => 'F',
34617                                         p_data          => x_msg_data,
34618                                         p_msg_index_out => x_msg_index_out );
34619                                         csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34620                      End LOOP;
34621                      RAISE fnd_api.g_exc_error;
34622                   ELSE
34623                      l_map_count := l_map_count + 1;
34624                      l_map_inst_tbl(l_map_count).old_instance_id := l_rel_tbl(j).subject_id;
34625                      l_map_inst_tbl(l_map_count).new_instance_id := l_new_child_instance_tbl(1).instance_id;
34626                   END IF;
34627        END LOOP;
34628 
34629        l_new_ii_relationship_tbl.DELETE;
34630        IF l_map_inst_tbl.count > 0
34631        THEN
34632           -- FOR inst_config_rec in inst_children_cur(p_source_instance_rec.instance_id)
34633            FOR j in l_rel_tbl.FIRST .. l_rel_tbl.LAST
34634            LOOP
34635               l_rel_count := l_rel_count + 1;
34636               l_new_ii_relationship_tbl(l_rel_count).relationship_type_code := l_rel_tbl(j).relationship_type_code;
34637               FOR map_row in l_map_inst_tbl.FIRST..l_map_inst_tbl.LAST
34638               LOOP
34639                  IF l_rel_tbl(j).subject_id = l_map_inst_tbl(map_row).old_instance_id
34640                  THEN
34641                     l_new_ii_relationship_tbl(l_rel_count).subject_id := l_map_inst_tbl(map_row).new_instance_id;
34642                     EXIT;
34643                  END IF;
34644               END LOOP;
34645             --
34646               FOR map_row in l_map_inst_tbl.FIRST..l_map_inst_tbl.LAST
34647               LOOP
34648                  IF l_rel_tbl(j).object_id = l_map_inst_tbl(map_row).old_instance_id
34649                  THEN
34650                     l_new_ii_relationship_tbl(l_rel_count).object_id := l_map_inst_tbl(map_row).new_instance_id;
34651                     EXIT;
34652                  END IF;
34653               END LOOP;
34654            END LOOP;
34655        END IF;
34656 
34657        -- Create the new configuration
34658        IF l_new_ii_relationship_tbl.count > 0
34659        THEN
34660          csi_ii_relationships_pvt.create_relationship
34661                         (  p_api_version            => p_api_version
34662                           ,p_commit                 => p_commit
34663                           ,p_init_msg_list          => p_init_msg_list
34664                           ,p_validation_level       => p_validation_level
34665                           ,p_relationship_tbl       => l_new_ii_relationship_tbl
34666                           ,p_txn_rec                => p_txn_rec
34667                           ,x_return_status          => x_return_status
34668                           ,x_msg_count              => x_msg_count
34669                           ,x_msg_data               => x_msg_data
34670                        );
34671 
34672                     IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34673                        FOR i in 1..x_msg_Count LOOP
34674                           FND_MSG_PUB.Get(p_msg_index     => i,
34675                                           p_encoded       => 'F',
34676                                           p_data          => x_msg_data,
34677                                           p_msg_index_out => x_msg_index_out );
34678                                           csi_gen_utility_pvt.put_line('message data = '||x_msg_data);
34679                        END LOOP;
34680                        RAISE fnd_api.g_exc_error;
34681                     END IF;
34682        END IF;
34683      END IF; -- l_rel_tbl count check
34684   END IF;
34685 
34686     -- Begin Add Code for Siebel Genesis Project
34687     csi_gen_utility_pvt.put_line('Calling Siebel Genesis Event in Copy Item Instance');
34688 
34689     IF l_raise_bes_event = 'Y' THEN
34690        BEGIN
34691           SELECT internal_party_id
34692           INTO   l_internal_party_id
34693           FROM   csi_install_parameters;
34694        EXCEPTION
34695           when no_data_found then
34696              l_internal_party_id := null;
34697        END;
34698 
34699        BEGIN
34700           SELECT owner_party_id
34701           INTO   l_owner_party_id
34702           FROM   csi_item_instances
34703           WHERE  instance_id = l_new_instance_rec.instance_id;
34704        EXCEPTION
34705           when no_data_found then
34706              l_owner_party_id := null;
34707        END;
34708 
34709        csi_gen_utility_pvt.put_line(' l_internal_party_Id = '||to_char(l_internal_party_id));
34710        csi_gen_utility_pvt.put_line(' l_party_Id = '||to_char(l_owner_party_id));
34711        csi_gen_utility_pvt.put_line(' fnd_api.g_miss_num = '||to_char(fnd_api.g_miss_num));
34712        IF l_internal_party_id <> l_owner_party_id THEN
34713           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
34714              csi_gen_utility_pvt.put_line('Firing the CREATE INSTANCE EVENT ');
34715              CSI_BUSINESS_EVENT_PVT.CREATE_INSTANCE_EVENT
34716                 (p_api_version          => p_api_version
34717                  ,p_commit              => fnd_api.g_false
34718                  ,p_init_msg_list       => p_init_msg_list
34719                  ,p_validation_level    => p_validation_level
34720                  ,p_instance_id         => l_new_instance_rec.instance_id
34721                  ,p_subject_instance_id => null
34722                  ,x_return_status       => x_return_status
34723                  ,x_msg_count           => x_msg_count
34724                  ,x_msg_data            => x_msg_data
34725                 );
34726 
34727              IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34728                 l_msg_index := 1;
34729                 l_msg_count := x_msg_count;
34730 
34731                 WHILE l_msg_count > 0 LOOP
34732                    x_msg_data := FND_MSG_PUB.GET
34733                            (l_msg_index,
34734                             FND_API.G_FALSE );
34735                    csi_gen_utility_pvt.put_line('Error from CSI_BUSINESS_EVENT.CREATE_INSTANCE_EVENT');
34736                    csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
34737                    l_msg_index := l_msg_index + 1;
34738                    l_msg_count := l_msg_count - 1;
34739                 END LOOP;
34740                 RAISE FND_API.G_EXC_ERROR;
34741              END IF;
34742           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
34743              csi_gen_utility_pvt.put_line('Before link to line id ');
34744              BEGIN
34745                 SELECT link_to_line_id, item_type_code
34746                 INTO   l_link_to_line_id, l_item_type_code
34747                 FROM   oe_order_lines_all
34748                 WHERE  line_id = l_new_instance_rec.last_oe_order_line_id;
34749              EXCEPTION
34750                 WHEN OTHERS THEN
34751                    l_link_to_line_id := null;
34752                    l_item_type_code := null;
34753              END;
34754 
34755              IF l_link_to_line_id is null and l_item_type_code = 'STANDARD' THEN
34756                 CSI_BUSINESS_EVENT_PVT.CREATE_INSTANCE_EVENT
34757                    (p_api_version          => p_api_version
34758                     ,p_commit              => fnd_api.g_false
34759                     ,p_init_msg_list       => p_init_msg_list
34760                     ,p_validation_level    => p_validation_level
34761                     ,p_instance_id         => l_new_instance_rec.instance_id
34762                     ,p_subject_instance_id => null
34763                     ,x_return_status       => x_return_status
34764                     ,x_msg_count           => x_msg_count
34765                     ,x_msg_data            => x_msg_data
34766                    );
34767 
34768                 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
34769                    l_msg_index := 1;
34770                    l_msg_count := x_msg_count;
34771 
34772                    WHILE l_msg_count > 0 LOOP
34773                       x_msg_data := FND_MSG_PUB.GET
34774                            (l_msg_index,
34775                             FND_API.G_FALSE );
34776                       csi_gen_utility_pvt.put_line('Error from CSI_BUSINESS_EVENT.CREATE_INSTANCE_EVENT');
34777                       csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
34778                       l_msg_index := l_msg_index + 1;
34779                       l_msg_count := l_msg_count - 1;
34780                    END LOOP;
34781                    RAISE FND_API.G_EXC_ERROR;
34782                 END IF;
34783              END IF;
34784           END IF;
34785        END IF;
34786     END IF;
34787   -- End Add Code for Siebel Genesis Project
34788 
34789   -- End of API body
34790 
34791          -- Standard check of p_commit
34792        IF FND_API.To_Boolean( p_commit ) THEN
34793                COMMIT WORK;
34794        END IF;
34795 
34796 
34797           -- Standard call to get message count and if count is  get message info.
34798           FND_MSG_PUB.Count_And_Get
34799           (p_encoded => FND_API.G_FALSE,
34800                  p_count       =>       x_msg_count ,
34801          p_data       =>       x_msg_data
34802            );
34803 EXCEPTION
34804 
34805     WHEN FND_API.G_EXC_ERROR THEN
34806             ROLLBACK TO copy_item_instance;
34807             x_return_status := FND_API.G_RET_STS_ERROR ;
34808             FND_MSG_PUB.Count_And_Get
34809                 (   p_encoded => FND_API.G_FALSE,
34810                  p_count               =>      x_msg_count,
34811                     p_data                =>      x_msg_data
34812                  );
34813 
34814       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
34815             ROLLBACK TO copy_item_instance;
34816             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
34817             FND_MSG_PUB.Count_And_Get
34818                 (   p_encoded => FND_API.G_FALSE,
34819                  p_count               =>      x_msg_count,
34820                     p_data                =>      x_msg_data
34821                  );
34822 
34823       WHEN OTHERS THEN
34824             ROLLBACK TO  copy_item_instance;
34825             x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
34826               IF       FND_MSG_PUB.Check_Msg_Level
34827                   (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
34828               THEN
34829                   FND_MSG_PUB.Add_Exc_Msg
34830                     (      G_PKG_NAME            ,
34831                           l_api_name
34832                      );
34833             END IF;
34834 
34835             FND_MSG_PUB.Count_And_Get
34836                 (   p_encoded => FND_API.G_FALSE,
34837                  p_count               =>      x_msg_count,
34838                     p_data                =>      x_msg_data
34839                 );
34840 
34841 END  copy_item_instance;
34842 
34843 
34844 
34845 /*------------------------------------------------------------*/
34846 /* Procedure name:   get_version_label_history                */
34847 /* Description :     Procedure used to  get version lables    */
34848 /*                   from history given a transaction_id      */
34849 /*------------------------------------------------------------*/
34850 
34851 PROCEDURE get_version_label_history
34852  (    p_api_version             IN  NUMBER
34853      ,p_commit                  IN  VARCHAR2
34854      ,p_init_msg_list           IN  VARCHAR2
34855      ,p_validation_level        IN  NUMBER
34856      ,p_transaction_id          IN  NUMBER
34857      ,x_version_label_hist_tbl  OUT NOCOPY csi_datastructures_pub.version_label_history_tbl
34858      ,x_return_status           OUT NOCOPY VARCHAR2
34859      ,x_msg_count               OUT NOCOPY NUMBER
34860      ,x_msg_data                OUT NOCOPY VARCHAR2
34861     )IS
34862 
34863      l_api_name      CONSTANT VARCHAR2(30)   := 'get_version_label_history' ;
34864      l_api_version   CONSTANT NUMBER         := 1.0                         ;
34865      l_csi_debug_level        NUMBER                                        ;
34866      x_msg_index_out          NUMBER                                        ;
34867      l_count                  NUMBER         := 0                           ;
34868      l_flag                   VARCHAR2(1)    :='N'                          ;
34869      i                        NUMBER :=1;
34870 
34871      CURSOR get_version_label_hist(i_transaction_id NUMBER)
34872      IS
34873      SELECT      vlh.VERSION_LABEL_HISTORY_ID,
34874                  vlh.VERSION_LABEL_ID,
34875                  vlh.TRANSACTION_ID   ,
34876                  vlh.OLD_VERSION_LABEL,
34877                  vlh.NEW_VERSION_LABEL,
34878                  vlh.OLD_DESCRIPTION  ,
34879                  vlh.NEW_DESCRIPTION  ,
34880                  vlh.OLD_DATE_TIME_STAMP,
34881                  vlh.NEW_DATE_TIME_STAMP,
34882                  vlh.OLD_ACTIVE_START_DATE,
34883                  vlh.NEW_ACTIVE_START_DATE,
34884                  vlh.OLD_ACTIVE_END_DATE ,
34885                  vlh.NEW_ACTIVE_END_DATE ,
34886                  vlh.OLD_CONTEXT        ,
34887                  vlh.NEW_CONTEXT        ,
34888                  vlh.OLD_ATTRIBUTE1     ,
34889                  vlh.NEW_ATTRIBUTE1     ,
34890                  vlh.OLD_ATTRIBUTE2     ,
34891                  vlh.NEW_ATTRIBUTE2     ,
34892                  vlh.OLD_ATTRIBUTE3     ,
34893                  vlh.NEW_ATTRIBUTE3     ,
34894                  vlh.OLD_ATTRIBUTE4     ,
34895                  vlh.NEW_ATTRIBUTE4     ,
34896                  vlh.OLD_ATTRIBUTE5     ,
34897                  vlh.NEW_ATTRIBUTE5     ,
34898                  vlh.OLD_ATTRIBUTE6     ,
34899                  vlh.NEW_ATTRIBUTE6     ,
34900                  vlh.OLD_ATTRIBUTE7     ,
34901                  vlh.NEW_ATTRIBUTE7     ,
34902                  vlh.OLD_ATTRIBUTE8     ,
34903                  vlh.NEW_ATTRIBUTE8     ,
34904                  vlh.OLD_ATTRIBUTE9     ,
34905                  vlh.NEW_ATTRIBUTE9     ,
34906                  vlh.OLD_ATTRIBUTE10    ,
34907                  vlh.NEW_ATTRIBUTE10    ,
34908                  vlh.OLD_ATTRIBUTE11    ,
34909                  vlh.NEW_ATTRIBUTE11    ,
34910                  vlh.OLD_ATTRIBUTE12    ,
34911                  vlh.NEW_ATTRIBUTE12    ,
34912                  vlh.OLD_ATTRIBUTE13    ,
34913                  vlh.NEW_ATTRIBUTE13    ,
34914                  vlh.OLD_ATTRIBUTE14    ,
34915                  vlh.NEW_ATTRIBUTE14    ,
34916                  vlh.OLD_ATTRIBUTE15    ,
34917                  vlh.NEW_ATTRIBUTE15    ,
34918                  vlh.FULL_DUMP_FLAG     ,
34919                  vlh.OBJECT_VERSION_NUMBER,
34920                  vl.INSTANCE_ID
34921      FROM     csi_i_version_labels_h vlh,
34922               csi_i_version_labels vl
34923      WHERE    vlh.transaction_id = i_transaction_id
34924      AND      vlh.version_label_id = vl.version_label_id;
34925 
34926 
34927 BEGIN
34928         -- Standard Start of API savepoint
34929      --   SAVEPOINT   get_version_label_history;
34930 
34931 
34932         -- Standard call to check for call compatibility.
34933         IF NOT FND_API.Compatible_API_Call (    l_api_version           ,
34934                                                 p_api_version           ,
34935                                                 l_api_name              ,
34936                                                 g_pkg_name              )
34937         THEN
34938            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
34939         END IF;
34940 
34941         -- Initialize message list if p_init_msg_list is set to TRUE.
34942         IF FND_API.to_Boolean( p_init_msg_list ) THEN
34943                 FND_MSG_PUB.initialize;
34944         END IF;
34945 
34946         --  Initialize API return status to success
34947         x_return_status := FND_API.G_RET_STS_SUCCESS;
34948 
34949         -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
34950         l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
34951 
34952         -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
34953         IF (l_csi_debug_level > 0) THEN
34954             csi_gen_utility_pvt.put_line( 'get_version_label_history');
34955         END IF;
34956 
34957         -- If the debug level = 2 then dump all the parameters values.
34958         IF (l_csi_debug_level > 1) THEN
34959             csi_gen_utility_pvt.put_line(  'get_version_label_history'   ||
34960                                                  p_api_version           ||'-'||
34961                                                  p_commit                ||'-'||
34962                                                  p_init_msg_list         ||'-'||
34963                                                  p_validation_level      ||'-'||
34964                                                  p_transaction_id               );
34965              -- dump the in parameter in the log file
34966 
34967         END IF;
34968 
34969         /***** srramakr commented for bug # 3304439
34970         -- Check for the profile option and enable trace
34971         l_flag:=csi_gen_utility_pvt.enable_trace(l_trace_flag => l_flag);
34972         -- End enable trace
34973         ****/
34974 
34975         -- Start API body
34976 
34977         FOR C1 IN get_version_label_hist(p_transaction_id)
34978         LOOP
34979 
34980 
34981 
34982 
34983               x_version_label_hist_tbl(i).VERSION_LABEL_HISTORY_ID:= C1.VERSION_LABEL_HISTORY_ID;
34984               x_version_label_hist_tbl(i).VERSION_LABEL_ID       := C1.VERSION_LABEL_ID;
34985               x_version_label_hist_tbl(i).TRANSACTION_ID        := C1.TRANSACTION_ID;
34986               x_version_label_hist_tbl(i).OLD_VERSION_LABEL := C1.OLD_VERSION_LABEL;
34987               x_version_label_hist_tbl(i).NEW_VERSION_LABEL := C1.NEW_VERSION_LABEL;
34988               x_version_label_hist_tbl(i).OLD_DESCRIPTION  := C1.OLD_DESCRIPTION ;
34989               x_version_label_hist_tbl(i).NEW_DESCRIPTION := C1.NEW_DESCRIPTION;
34990               x_version_label_hist_tbl(i).OLD_DATE_TIME_STAMP := C1.OLD_DATE_TIME_STAMP ;
34991               x_version_label_hist_tbl(i).NEW_DATE_TIME_STAMP := C1.NEW_DATE_TIME_STAMP;
34992               x_version_label_hist_tbl(i).OLD_ACTIVE_START_DATE:= C1.OLD_ACTIVE_START_DATE;
34993               x_version_label_hist_tbl(i).NEW_ACTIVE_START_DATE:= C1.NEW_ACTIVE_START_DATE;
34994               x_version_label_hist_tbl(i).OLD_ACTIVE_END_DATE:= C1.OLD_ACTIVE_END_DATE;
34995               x_version_label_hist_tbl(i).NEW_ACTIVE_END_DATE:= C1.NEW_ACTIVE_END_DATE;
34996               x_version_label_hist_tbl(i).OLD_CONTEXT:= C1.OLD_CONTEXT;
34997               x_version_label_hist_tbl(i).NEW_CONTEXT:= C1.NEW_CONTEXT;
34998               x_version_label_hist_tbl(i).OLD_ATTRIBUTE1:= C1.OLD_ATTRIBUTE1;
34999               x_version_label_hist_tbl(i).NEW_ATTRIBUTE1:= C1.NEW_ATTRIBUTE1;
35000               x_version_label_hist_tbl(i).OLD_ATTRIBUTE2:= C1.OLD_ATTRIBUTE2;
35001               x_version_label_hist_tbl(i).NEW_ATTRIBUTE2:= C1.NEW_ATTRIBUTE2;
35002               x_version_label_hist_tbl(i).OLD_ATTRIBUTE3:= C1.OLD_ATTRIBUTE3;
35003               x_version_label_hist_tbl(i).OLD_ATTRIBUTE3:= C1.OLD_ATTRIBUTE3;
35004               x_version_label_hist_tbl(i).OLD_ATTRIBUTE4:= C1.OLD_ATTRIBUTE4;
35005               x_version_label_hist_tbl(i).NEW_ATTRIBUTE4:= C1.NEW_ATTRIBUTE4;
35006               x_version_label_hist_tbl(i).OLD_ATTRIBUTE5:= C1.OLD_ATTRIBUTE5;
35007               x_version_label_hist_tbl(i).NEW_ATTRIBUTE5:= C1.NEW_ATTRIBUTE5;
35008               x_version_label_hist_tbl(i).OLD_ATTRIBUTE6:= C1.OLD_ATTRIBUTE6;
35009               x_version_label_hist_tbl(i).NEW_ATTRIBUTE6:= C1.NEW_ATTRIBUTE6;
35010               x_version_label_hist_tbl(i).OLD_ATTRIBUTE7:= C1.OLD_ATTRIBUTE7;
35011               x_version_label_hist_tbl(i).NEW_ATTRIBUTE7:= C1.NEW_ATTRIBUTE7;
35012               x_version_label_hist_tbl(i).OLD_ATTRIBUTE8:= C1.OLD_ATTRIBUTE8;
35013               x_version_label_hist_tbl(i).NEW_ATTRIBUTE8:= C1.NEW_ATTRIBUTE8;
35014               x_version_label_hist_tbl(i).OLD_ATTRIBUTE9:= C1.OLD_ATTRIBUTE9;
35015               x_version_label_hist_tbl(i).NEW_ATTRIBUTE9:= C1.NEW_ATTRIBUTE9;
35016               x_version_label_hist_tbl(i).OLD_ATTRIBUTE10:= C1.OLD_ATTRIBUTE10;
35017               x_version_label_hist_tbl(i).NEW_ATTRIBUTE10:= C1.NEW_ATTRIBUTE10;
35018               x_version_label_hist_tbl(i).OLD_ATTRIBUTE11:= C1.OLD_ATTRIBUTE11;
35019               x_version_label_hist_tbl(i).NEW_ATTRIBUTE11:= C1.NEW_ATTRIBUTE11;
35020               x_version_label_hist_tbl(i).OLD_ATTRIBUTE12:= C1.OLD_ATTRIBUTE12;
35021               x_version_label_hist_tbl(i).NEW_ATTRIBUTE12:= C1.NEW_ATTRIBUTE12;
35022               x_version_label_hist_tbl(i).OLD_ATTRIBUTE13:= C1.OLD_ATTRIBUTE13;
35023               x_version_label_hist_tbl(i).NEW_ATTRIBUTE13:= C1.NEW_ATTRIBUTE13;
35024               x_version_label_hist_tbl(i).OLD_ATTRIBUTE14:= C1.OLD_ATTRIBUTE14;
35025               x_version_label_hist_tbl(i).NEW_ATTRIBUTE14:= C1.NEW_ATTRIBUTE14;
35026               x_version_label_hist_tbl(i).OLD_ATTRIBUTE15:= C1.OLD_ATTRIBUTE15;
35027               x_version_label_hist_tbl(i).NEW_ATTRIBUTE15:= C1.NEW_ATTRIBUTE15;
35028               x_version_label_hist_tbl(i).FULL_DUMP_FLAG:= C1.FULL_DUMP_FLAG;
35029               x_version_label_hist_tbl(i).OBJECT_VERSION_NUMBER := C1.OBJECT_VERSION_NUMBER;
35030               x_version_label_hist_tbl(i).INSTANCE_ID := C1.INSTANCE_ID;
35031               i := i + 1;
35032 
35033       END LOOP;
35034 
35035        -- End of API body
35036 
35037        -- Standard check of p_commit.
35038        /*
35039        IF FND_API.To_Boolean( p_commit ) THEN
35040              COMMIT WORK;
35041        END IF;
35042        */
35043 
35044        /***** srramakr commented for bug # 3304439
35045        -- Check for the profile option and disable the trace
35046        IF (l_flag = 'Y') THEN
35047             dbms_session.set_sql_trace(false);
35048        END IF;
35049        -- End disable trace
35050        ****/
35051 
35052        -- Standard call to get message count and if count is  get message info.
35053        FND_MSG_PUB.Count_And_Get
35054                 (p_encoded => FND_API.G_FALSE,
35055                  p_count        =>      x_msg_count ,
35056                  p_data         =>      x_msg_data   );
35057 EXCEPTION
35058         WHEN FND_API.G_EXC_ERROR THEN
35059              --   ROLLBACK TO get_version_label_history;
35060                 x_return_status := FND_API.G_RET_STS_ERROR ;
35061                 FND_MSG_PUB.Count_And_Get
35062                 (   p_encoded => FND_API.G_FALSE,
35063                  p_count   =>      x_msg_count,
35064                     p_data    =>      x_msg_data );
35065         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
35066               --  ROLLBACK TO get_version_label_history;
35067                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
35068                 FND_MSG_PUB.Count_And_Get
35069                 (   p_encoded => FND_API.G_FALSE,
35070                  p_count   =>      x_msg_count,
35071                     p_data    =>      x_msg_data  );
35072         WHEN OTHERS THEN
35073               --  ROLLBACK TO get_version_label_history;
35074                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
35075                 IF      FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
35076                 FND_MSG_PUB.Add_Exc_Msg
35077                 (       g_pkg_name          ,
35078                         l_api_name           );
35079                 END IF;
35080                 FND_MSG_PUB.Count_And_Get
35081                 ( p_encoded => FND_API.G_FALSE,
35082                  p_count     =>      x_msg_count,
35083                   p_data      =>      x_msg_data  );
35084 
35085 END get_version_label_history;
35086 
35087 /*----------------------------------------------------*/
35088 /* Procedure name: get_instance_link_locations        */
35089 /* Description :   procedure to                       */
35090 /*                 get an Item Instance               */
35091 /*----------------------------------------------------*/
35092 
35093 PROCEDURE get_instance_link_locations
35094  (
35095       p_api_version          IN  NUMBER
35096      ,p_commit               IN  VARCHAR2
35097      ,p_init_msg_list        IN  VARCHAR2
35098      ,p_validation_level     IN  NUMBER
35099      ,p_instance_id          IN  NUMBER
35100      ,x_instance_link_rec    OUT NOCOPY csi_datastructures_pub.instance_link_rec
35101      ,x_return_status        OUT NOCOPY VARCHAR2
35102      ,x_msg_count            OUT NOCOPY NUMBER
35103      ,x_msg_data             OUT NOCOPY VARCHAR2
35104     )IS
35105 
35106     l_api_name               CONSTANT VARCHAR2(30)   := 'GET_INSTANCE_LINK_LOCATIONS';
35107     l_api_version            CONSTANT NUMBER         := 1.0;
35108     l_debug_level            NUMBER;
35109     l_flag                   VARCHAR2(1)             := 'N';
35110     l_instance_header_tbl    csi_datastructures_pub.instance_header_tbl;
35111 
35112  BEGIN
35113     -- Standard Start of API savepoint
35114       -- SAVEPOINT  get_instance_link_locations;
35115 
35116     -- Check for freeze_flag in csi_install_parameters is set to 'Y'
35117        csi_utility_grp.check_ib_active;
35118 
35119     -- Standard call to check for call compatibility.
35120        IF NOT FND_API.Compatible_API_Call (l_api_version,
35121                                             p_api_version,
35122                                             l_api_name,
35123                                             G_PKG_NAME    )
35124        THEN
35125                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
35126        END IF;
35127 
35128     -- Initialize message list if p_init_msg_list is set to TRUE.
35129        IF FND_API.to_Boolean( p_init_msg_list ) THEN
35130                FND_MSG_PUB.initialize;
35131        END IF;
35132 
35133     -- Initialize API return status to success
35134        x_return_status := FND_API.G_RET_STS_SUCCESS;
35135 
35136     -- Check the profile option debug_level for debug message reporting
35137        l_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
35138 
35139     -- If debug_level = 1 then dump the procedure name
35140        IF (l_debug_level > 0) THEN
35141             csi_gen_utility_pvt.put_line( 'get_instance_link_locations');
35142        END IF;
35143 
35144     -- If the debug level = 2 then dump all the parameters values.
35145        IF (l_debug_level > 1) THEN
35146             csi_gen_utility_pvt.put_line( 'get_instance_link_locations'         ||
35147                                           p_api_version           ||'-'||
35148                                           p_commit                ||'-'||
35149                                           p_init_msg_list         ||'-'||
35150                                           p_validation_level            );
35151          -- dump the query records into a log file
35152             csi_gen_utility_pvt.put_line(p_instance_id);
35153        END IF;
35154 
35155     /***** srramakr commented for bug # 3304439
35156     -- Check for the profile option and enable trace
35157        l_flag:=CSI_GEN_UTILITY_PVT.enable_trace(l_trace_flag => l_flag);
35158     -- End enable trace
35159     ****/
35160 
35161     -- Start API body
35162        IF   (p_instance_id IS NULL)
35163        THEN
35164              FND_MESSAGE.Set_Name('CSI', 'CSI_API_INVALID_INSTANCE_ID');
35165              FND_MESSAGE.Set_Token('INSTANCE_ID', p_instance_id);
35166              FND_MSG_PUB.ADD;
35167              RAISE FND_API.G_EXC_ERROR;
35168        END IF;
35169 
35170        l_instance_header_tbl(1).instance_id := p_instance_id;
35171 
35172        BEGIN
35173          SELECT last_vld_organization_id,
35174                 inventory_item_id
35175          INTO   l_instance_header_tbl(1).vld_organization_id,
35176                 l_instance_header_tbl(1).inventory_item_id
35177          FROM   csi_item_instances
35178          WHERE  instance_id =l_instance_header_tbl(1).instance_id;
35179       EXCEPTION
35180          WHEN OTHERS THEN
35181           NULL;
35182       END;
35183 
35184       csi_item_instance_vld_pvt.get_link_locations
35185                              (
35186                                p_instance_header_tbl => l_instance_header_tbl,
35187                                x_return_status       => x_return_status
35188                              );
35189       IF NOT x_return_status = FND_API.G_RET_STS_SUCCESS THEN
35190          RAISE FND_API.G_EXC_ERROR;
35191       END IF;
35192 
35193         x_instance_link_rec.instance_id           := l_instance_header_tbl(1).instance_id;
35194         x_instance_link_rec.start_loc_address1    := l_instance_header_tbl(1).start_loc_address1;
35195         x_instance_link_rec.start_loc_address2    := l_instance_header_tbl(1).start_loc_address2;
35196         x_instance_link_rec.start_loc_address3    := l_instance_header_tbl(1).start_loc_address3;
35197         x_instance_link_rec.start_loc_address4    := l_instance_header_tbl(1).start_loc_address4;
35198         x_instance_link_rec.start_loc_city        := l_instance_header_tbl(1).start_loc_city;
35199         x_instance_link_rec.start_loc_state       := l_instance_header_tbl(1).start_loc_state;
35200         x_instance_link_rec.start_loc_postal_code := l_instance_header_tbl(1).start_loc_postal_code;
35201         x_instance_link_rec.start_loc_country     := l_instance_header_tbl(1).start_loc_country;
35202 
35203         x_instance_link_rec.end_loc_address1      := l_instance_header_tbl(1).end_loc_address1;
35204         x_instance_link_rec.end_loc_address2      := l_instance_header_tbl(1).end_loc_address2;
35205         x_instance_link_rec.end_loc_address3      := l_instance_header_tbl(1).end_loc_address3;
35206         x_instance_link_rec.end_loc_address4      := l_instance_header_tbl(1).end_loc_address4;
35207         x_instance_link_rec.end_loc_city          := l_instance_header_tbl(1).end_loc_city;
35208         x_instance_link_rec.end_loc_state         := l_instance_header_tbl(1).end_loc_state;
35209         x_instance_link_rec.end_loc_postal_code   := l_instance_header_tbl(1).end_loc_postal_code;
35210         x_instance_link_rec.end_loc_country       := l_instance_header_tbl(1).end_loc_country;
35211 
35212    -- End of API body
35213    -- Standard check of p_commit.
35214    /*
35215       IF FND_API.To_Boolean( p_commit ) THEN
35216           COMMIT WORK;
35217       END IF;
35218       */
35219     /***** srramakr commented for bug # 3304439
35220    -- Check for the profile option and disable the trace
35221       IF (l_flag = 'Y') THEN
35222           dbms_session.set_sql_trace(FALSE);
35223       END IF;
35224    -- End disable trace
35225    ****/
35226 
35227    -- Standard call to get message count and if count is  get message info.
35228       FND_MSG_PUB.Count_And_Get
35229                    (p_encoded => FND_API.G_FALSE,
35230                  p_count        =>      x_msg_count ,
35231                     p_data         =>      x_msg_data
35232                     );
35233 
35234 EXCEPTION
35235 
35236         WHEN FND_API.G_EXC_ERROR THEN
35237            --     ROLLBACK TO get_instance_link_locations;
35238                 x_return_status := FND_API.G_RET_STS_ERROR ;
35239                 FND_MSG_PUB.Count_And_Get
35240                      (  p_encoded => FND_API.G_FALSE,
35241                  p_count     =>     x_msg_count,
35242                         p_data      =>     x_msg_data );
35243         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
35244              --   ROLLBACK TO get_instance_link_locations;
35245                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
35246                 FND_MSG_PUB.Count_And_Get
35247                      ( p_encoded => FND_API.G_FALSE,
35248                  p_count     =>      x_msg_count,
35249                        p_data      =>      x_msg_data  );
35250         WHEN OTHERS THEN
35251             --    ROLLBACK TO get_instance_link_locations;
35252                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
35253                 IF FND_MSG_PUB.Check_Msg_Level
35254                      ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
35255                 THEN
35256                    FND_MSG_PUB.Add_Exc_Msg
35257                      ( G_PKG_NAME, l_api_name );
35258                 END IF;
35259                 FND_MSG_PUB.Count_And_Get
35260                      ( p_encoded => FND_API.G_FALSE,
35261                  p_count     =>      x_msg_count,
35262                        p_data      =>      x_msg_data  );
35263 
35264 END get_instance_link_locations;
35265 
35266 PROCEDURE Update_version_time
35267  (
35268      p_api_version           IN     NUMBER
35269     ,p_commit                IN     VARCHAR2
35270     ,p_init_msg_list         IN     VARCHAR2
35271     ,p_validation_level      IN     NUMBER
35272     ,p_txn_rec               IN OUT NOCOPY csi_datastructures_pub.transaction_rec
35273     ,x_return_status         OUT NOCOPY   VARCHAR2
35274     ,x_msg_count             OUT NOCOPY   NUMBER
35275     ,x_msg_data              OUT NOCOPY   VARCHAR2)
35276      IS
35277 CURSOR c_ver_csr (p_txn_id NUMBER) IS
35278   SELECT cv.version_label_id      version_label_id
35279         ,cv.object_version_number object_version_number
35280         ,cv.instance_id instance_id
35281   FROM   csi_i_version_labels cv,
35282          csi_i_version_labels_h ch
35283   WHERE  cv.version_label_id=ch.version_label_id
35284   AND    ch.transaction_id=p_txn_id;
35285   l_sysdate               DATE :=SYSDATE;
35286   l_return_status         VARCHAR2(1);
35287   l_msg_data              VARCHAR2(2000);
35288   l_msg_count             NUMBER;
35289   l_msg_index             NUMBER;
35290   l_version_label_rec     csi_datastructures_pub.version_label_rec;
35291   l_temp_label_rec        csi_datastructures_pub.version_label_rec;
35292 BEGIN
35293         SAVEPOINT   Update_version_time;
35294 
35295         x_return_status := FND_API.G_RET_STS_SUCCESS;
35296 
35297       FOR l_ver_csr IN c_ver_csr(p_txn_rec.transaction_id)
35298       LOOP
35299          l_version_label_rec:=l_temp_label_rec;
35300          l_version_label_rec.version_label_id:=l_ver_csr.version_label_id;
35301          l_version_label_rec.date_time_stamp:=l_sysdate;
35302          l_version_label_rec.object_version_number:=l_ver_csr.object_version_number;
35303            csi_item_instance_pvt.update_version_label
35304             ( p_api_version             => p_api_version
35305              ,p_commit                  => p_commit
35306              ,p_init_msg_list           => p_init_msg_list
35307              ,p_validation_level        => p_validation_level
35308              ,p_version_label_rec       => l_version_label_rec
35309              ,p_txn_rec                 => p_txn_rec
35310              ,p_call_transaction        => fnd_api.g_false
35311              ,x_return_status           => l_return_status
35312              ,x_msg_count               => l_msg_count
35313              ,x_msg_data                => l_msg_data);
35314 
35315            IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
35316                      l_msg_index := 1;
35317                      l_msg_count := x_msg_count;
35318                WHILE l_msg_count > 0 LOOP
35319                           x_msg_data := FND_MSG_PUB.GET
35320                           (  l_msg_index,
35321                                          FND_API.G_FALSE        );
35322                   csi_gen_utility_pvt.put_line( ' Error from update_version_label..');
35323                   csi_gen_utility_pvt.put_line('MESSAGE DATA = '||x_msg_data);
35324                    l_msg_index := l_msg_index + 1;
35325                    l_msg_count := l_msg_count - 1;
35326                END LOOP;
35327                 RAISE FND_API.G_EXC_ERROR;
35328            END IF;
35329       END LOOP;
35330 EXCEPTION
35331    WHEN NO_DATA_FOUND THEN
35332         NULL;
35333    WHEN FND_API.G_EXC_ERROR THEN
35334             ROLLBACK TO Update_version_time;
35335             x_return_status := FND_API.G_RET_STS_ERROR ;
35336             FND_MSG_PUB.Count_And_Get
35337             (   p_encoded => FND_API.G_FALSE,
35338                  p_count   =>      x_msg_count,
35339                 p_data    =>      x_msg_data );
35340    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
35341                 ROLLBACK TO Update_version_time;
35342                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
35343                 FND_MSG_PUB.Count_And_Get
35344                 (   p_encoded => FND_API.G_FALSE,
35345                  p_count   =>      x_msg_count,
35346                     p_data    =>      x_msg_data  );
35347 END Update_version_time;
35348 
35349 PROCEDURE get_config_keys
35350     (p_instance_id     IN  NUMBER,
35351      p_config_rec      OUT NOCOPY csi_item_instance_pvt.lock_config_rec
35352     )
35353 IS
35354 BEGIN
35355     SELECT config_inst_hdr_id
35356           ,config_inst_rev_num
35357           ,config_inst_item_id
35358       INTO p_config_rec.config_inst_hdr_id
35359           ,p_config_rec.config_inst_rev_num
35360           ,p_config_rec.config_inst_item_id
35361       FROM csi_item_instances
35362      WHERE instance_id=p_instance_id;
35363 EXCEPTION
35364   WHEN NO_DATA_FOUND THEN
35365     NULL;
35366 END get_config_keys;
35367 
35368 PROCEDURE get_instance_lock_status
35369 (    p_instance_id         IN   NUMBER ,
35370      p_lock_status         OUT NOCOPY  NUMBER
35371 ) IS
35372  l_lock_status   NUMBER :=0;
35373 BEGIN
35374     SELECT lock_status
35375       INTO p_lock_status
35376       FROM csi_item_instance_locks
35377      WHERE lock_status <> l_lock_status
35378        AND instance_id=p_instance_id;
35379  EXCEPTION
35380   WHEN NO_DATA_FOUND THEN
35381      p_lock_status  := l_lock_status;
35382   WHEN TOO_MANY_ROWS THEN
35383     csi_gen_utility_pvt.put_line ('In csi_item_instance_pvt.get_instance_lock_status - too_many_rows exception ');
35384      p_lock_status := 2;
35385 END get_instance_lock_status;
35386 
35387 -- Return TRUE if instance is locked
35388 FUNCTION check_item_instance_lock
35389 (    p_instance_id         IN  NUMBER ,
35390      p_config_inst_hdr_id  IN  NUMBER ,
35391      p_config_inst_item_id IN  NUMBER ,
35392      p_config_inst_rev_num IN  NUMBER
35393 ) RETURN BOOLEAN IS
35394  l_return_value  BOOLEAN := FALSE;
35395  l_lock_id       NUMBER;
35396  l_lock_status   NUMBER :=0;
35397 BEGIN
35398  IF p_instance_id IS NOT NULL AND
35399     p_instance_id <> fnd_api.g_miss_num
35400  THEN
35401      BEGIN
35402         SELECT lock_id
35403           INTO l_lock_id
35404           FROM csi_item_instance_locks
35405          WHERE lock_status IS NOT NULL
35406            AND lock_status <> l_lock_status
35407            AND instance_id=p_instance_id;
35408     l_return_value := TRUE;
35409      EXCEPTION
35410       WHEN NO_DATA_FOUND THEN
35411            l_return_value  := FALSE;
35412       WHEN TOO_MANY_ROWS THEN
35413            l_return_value := TRUE;
35414      END;
35415  ELSIF (p_config_inst_hdr_id IS NOT NULL AND
35416         p_config_inst_hdr_id <> fnd_api.g_miss_num AND
35417         p_config_inst_item_id IS NOT NULL AND
35418         p_config_inst_item_id <> fnd_api.g_miss_num AND
35419         p_config_inst_rev_num IS NOT NULL AND
35420         p_config_inst_rev_num <> fnd_api.g_miss_num )
35421  THEN
35422      BEGIN
35423         SELECT lock_id
35424           INTO l_lock_id
35425           FROM csi_item_instance_locks
35426          WHERE lock_status IS NOT NULL
35427            AND lock_status <> l_lock_status
35428            AND config_inst_hdr_id  = p_config_inst_hdr_id
35429            AND config_inst_rev_num = p_config_inst_rev_num
35430            AND config_inst_item_id = p_config_inst_item_id;
35431     l_return_value := TRUE;
35432      EXCEPTION
35433       WHEN NO_DATA_FOUND THEN
35434            l_return_value  := FALSE;
35435       WHEN TOO_MANY_ROWS THEN
35436            l_return_value := TRUE;
35437      END;
35438  END IF;
35439  RETURN l_return_value;
35440 END check_item_instance_lock;
35441 
35442 
35443 PROCEDURE lock_item_instances
35444  (
35445      p_api_version           IN   NUMBER
35446     ,p_commit                IN   VARCHAR2
35447     ,p_init_msg_list         IN   VARCHAR2
35448     ,p_validation_level      IN   NUMBER
35449     ,px_config_tbl           IN   OUT NOCOPY csi_cz_int.config_tbl
35450 --    ,p_txn_rec               IN   OUT NOCOPY csi_datastructures_pub.transaction_rec
35451     ,x_return_status         OUT  NOCOPY VARCHAR2
35452     ,x_msg_count             OUT  NOCOPY NUMBER
35453     ,x_msg_data              OUT  NOCOPY VARCHAR2
35454  )
35455 AS
35456 l_api_name         CONSTANT VARCHAR2(30)   := 'LOCK_ITEM_INSTANCES';
35457 l_api_version      CONSTANT NUMBER         := 1.0;
35458 l_csi_debug_level  NUMBER;
35459 l_rel_type_code    VARCHAR2(30) := 'COMPONENT-OF';
35460 l_root_node        NUMBER;
35461 l_config_tbl       csi_cz_int.config_tbl := px_config_tbl;
35462 l_count            NUMBER;
35463 l_rel_tbl          csi_datastructures_pub.ii_relationship_tbl;
35464 l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
35465 l_rel_query_rec    csi_datastructures_pub.relationship_query_rec;
35466 l_lock_tbl         CSI_ITEM_INSTANCE_PVT.lock_instances_tbl; --csi_cz_int.config_tbl;
35467 l_root             NUMBER:=0;
35468 l_found            VARCHAR2(1):='N';
35469 l_root_hdr_id      NUMBER;
35470 l_root_item_id     NUMBER;
35471 l_root_rev_num     NUMBER;
35472 l_lock_config_rec  csi_item_instance_pvt.lock_config_rec;
35473 l_lock_count       NUMBER;
35474 l_lock_id          NUMBER;
35475 l_dup_count        NUMBER;
35476 BEGIN
35477 
35478   SAVEPOINT    csi_lock_item_instance;
35479 
35480 
35481         -- Check for freeze_flag in csi_install_parameters is set to 'Y'
35482 
35483      csi_utility_grp.check_ib_active;
35484 
35485         -- Standard call to check for call compatibility.
35486         IF NOT FND_API.Compatible_API_Call (    l_api_version           ,
35487                                                 p_api_version           ,
35488                                                 l_api_name              ,
35489                                                 g_pkg_name              )
35490         THEN
35491                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
35492         END IF;
35493 
35494         -- Initialize message list if p_init_msg_list is set to TRUE.
35495         IF FND_API.to_Boolean( p_init_msg_list ) THEN
35496                 FND_MSG_PUB.initialize;
35497         END IF;
35498 
35499         --  Initialize API return status to success
35500         x_return_status := FND_API.G_RET_STS_SUCCESS;
35501 
35502         -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
35503         l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
35504 
35505         -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
35506         IF (l_csi_debug_level > 0) THEN
35507             csi_gen_utility_pvt.put_line( 'lock_item_instances');
35508         END IF;
35509 
35510 
35511         -- If the debug level = 2 then dump all the parameters values.
35512         IF (l_csi_debug_level > 1) THEN
35513                csi_gen_utility_pvt.put_line( 'lock_item_instances'||
35514                                                    p_api_version           ||'-'||
35515                                                    p_commit                ||'-'||
35516                                                    p_init_msg_list         ||'-'||
35517                                                    p_validation_level            );
35518                -- Dump the records in the log file
35519           IF px_config_tbl.COUNT > 0
35520           THEN
35521            FOR tab_row IN px_config_tbl.FIRST .. px_config_tbl.LAST
35522            LOOP
35523              csi_gen_utility_pvt.put_line('                                         ');
35524              csi_gen_utility_pvt.put_line('Dumping the values for config tbl Rec # :'||tab_row);
35525              csi_gen_utility_pvt.put_line('source_application_id    :'||px_config_tbl(tab_row).source_application_id);
35526              csi_gen_utility_pvt.put_line('source_txn_header_ref    :'||px_config_tbl(tab_row).source_txn_header_ref);
35527              csi_gen_utility_pvt.put_line('source_txn_line_ref1     :'||px_config_tbl(tab_row).source_txn_line_ref1);
35528              csi_gen_utility_pvt.put_line('source_txn_line_ref2     :'||px_config_tbl(tab_row).source_txn_line_ref2);
35529              csi_gen_utility_pvt.put_line('source_txn_line_ref3     :'||px_config_tbl(tab_row).source_txn_line_ref3);
35530              csi_gen_utility_pvt.put_line('instance_id              :'||px_config_tbl(tab_row).instance_id);
35531              csi_gen_utility_pvt.put_line('lock_id                  :'||px_config_tbl(tab_row).lock_id);
35532              csi_gen_utility_pvt.put_line('config_inst_hdr_id       :'||px_config_tbl(tab_row).config_inst_hdr_id);
35533              csi_gen_utility_pvt.put_line('config_inst_item_id      :'||px_config_tbl(tab_row).config_inst_item_id);
35534              csi_gen_utility_pvt.put_line('config_inst_rev_num      :'||px_config_tbl(tab_row).config_inst_rev_num);
35535              csi_gen_utility_pvt.put_line('lock_status              :'||px_config_tbl(tab_row).lock_status);
35536            END LOOP;
35537           END IF;
35538                --csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
35539         END IF;
35540 
35541   l_lock_tbl.DELETE;
35542 
35543  IF px_config_tbl.count > 0
35544  THEN
35545   FOR i IN px_config_tbl.FIRST .. px_config_tbl.LAST
35546   LOOP
35547    IF px_config_tbl.EXISTS(i)
35548    THEN
35549     IF (px_config_tbl(i).instance_id IS NOT NULL AND
35550         px_config_tbl(i).instance_id <> fnd_api.g_miss_num) OR
35551        (px_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
35552         px_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
35553         px_config_tbl(i).config_inst_item_id IS NOT NULL AND
35554         px_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
35555         px_config_tbl(i).config_inst_rev_num IS NOT NULL AND
35556         px_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )
35557     THEN
35558 
35559      -- Check for duplicate instances
35560     IF (px_config_tbl(i).instance_id IS NOT NULL AND
35561         px_config_tbl(i).instance_id <> fnd_api.g_miss_num)
35562     THEN
35563       l_dup_count:=0;
35564       FOR dup_csr IN px_config_tbl.FIRST .. px_config_tbl.LAST
35565       LOOP
35566           IF (px_config_tbl(dup_csr).instance_id IS NOT NULL AND
35567               px_config_tbl(dup_csr).instance_id <> fnd_api.g_miss_num AND
35568               px_config_tbl(dup_csr).instance_id = px_config_tbl(i).instance_id)
35569           THEN
35570              l_dup_count := l_dup_count +1;
35571           END IF;
35572       END LOOP;
35573 
35574       IF  l_dup_count > 1
35575       THEN
35576         FND_MESSAGE.SET_NAME('CSI','CSI_DUPLICATE_INS_KEY');
35577         FND_MESSAGE.SET_TOKEN('INSTANCE_ID',px_config_tbl(i).instance_id);
35578         FND_MSG_PUB.Add;
35579         RAISE FND_API.G_EXC_ERROR;
35580       END IF;
35581     END IF;
35582 
35583      -- Check for duplicate config keys
35584     IF (px_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
35585         px_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
35586         px_config_tbl(i).config_inst_item_id IS NOT NULL AND
35587         px_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
35588         px_config_tbl(i).config_inst_rev_num IS NOT NULL AND
35589         px_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )
35590     THEN
35591       l_dup_count:=0;
35592       FOR dup_csr IN px_config_tbl.FIRST .. px_config_tbl.LAST
35593       LOOP
35594           IF (px_config_tbl(dup_csr).config_inst_hdr_id IS NOT NULL AND
35595               px_config_tbl(dup_csr).config_inst_hdr_id <> fnd_api.g_miss_num AND
35596               px_config_tbl(dup_csr).config_inst_hdr_id =px_config_tbl(i).config_inst_hdr_id) AND
35597              (px_config_tbl(dup_csr).config_inst_item_id IS NOT NULL AND
35598               px_config_tbl(dup_csr).config_inst_item_id <> fnd_api.g_miss_num AND
35599               px_config_tbl(dup_csr).config_inst_item_id=px_config_tbl(i).config_inst_item_id) AND
35600              (px_config_tbl(dup_csr).config_inst_rev_num IS NOT NULL AND
35601               px_config_tbl(dup_csr).config_inst_rev_num <> fnd_api.g_miss_num AND
35602               px_config_tbl(dup_csr).config_inst_rev_num=px_config_tbl(i).config_inst_rev_num)
35603           THEN
35604              l_dup_count := l_dup_count +1;
35605           END IF;
35606       END LOOP;
35607 
35608       IF  l_dup_count > 1
35609       THEN
35610             FND_MESSAGE.SET_NAME('CSI','CSI_DUPLICATE_KEYS_LOCKED');
35611             FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',px_config_tbl(i).config_inst_hdr_id);
35612             FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',px_config_tbl(i).config_inst_item_id);
35613             FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',px_config_tbl(i).config_inst_rev_num);
35614             FND_MSG_PUB.Add;
35615             RAISE FND_API.G_EXC_ERROR;
35616       END IF;
35617     END IF;
35618 
35619 
35620      IF (px_config_tbl(i).instance_id IS NOT NULL AND
35621          px_config_tbl(i).instance_id <> fnd_api.g_miss_num)
35622      THEN
35623       IF csi_item_instance_pvt.check_item_instance_lock (p_instance_id => px_config_tbl(i).instance_id)
35624       THEN
35625          FND_MESSAGE.SET_NAME('CSI','CSI_INS_ALREADY_LOCKED');
35626          FND_MESSAGE.SET_TOKEN('INSTANCE_ID',px_config_tbl(i).instance_id);
35627          FND_MSG_PUB.Add;
35628          RAISE FND_API.G_EXC_ERROR;
35629       ELSE
35630         l_found:='N';
35631         IF l_lock_tbl.COUNT > 0
35632         THEN
35633          FOR j IN l_lock_tbl.FIRST .. l_lock_tbl.LAST
35634          LOOP
35635           IF (l_lock_tbl(j).instance_id IS NOT NULL AND
35636               l_lock_tbl(j).instance_id <> fnd_api.g_miss_num) AND
35637               l_lock_tbl(j).instance_id=px_config_tbl(i).instance_id
35638           THEN
35639            l_found:='Y';
35640           END IF;
35641          END LOOP;
35642         END IF;
35643 
35644         IF l_found='N'
35645         THEN
35646 
35647           csi_ii_relationships_pvt.get_top_most_parent
35648           ( p_subject_id      => px_config_tbl(i).instance_id,
35649             p_rel_type_code   => l_rel_type_code,
35650             p_object_id       => l_root_node
35651            );
35652 
35653 
35654         l_rel_query_rec.object_id := l_root_node;
35655         l_rel_query_rec.relationship_type_code := l_rel_type_code;
35656 
35657          csi_ii_relationships_pvt.get_children
35658           ( p_relationship_query_rec    => l_rel_query_rec,
35659             p_rel_tbl                   => l_rel_tbl,
35660             p_depth                     => NULL,
35661             p_active_relationship_only  => FND_API.G_TRUE,
35662             p_config_only               => FND_API.G_TRUE,
35663             p_time_stamp                => FND_API.G_MISS_DATE,
35664             p_get_dfs                   => FND_API.G_FALSE,
35665             p_ii_relationship_level_tbl => l_ii_relationship_level_tbl,
35666 		    x_return_status             => x_return_status,
35667             x_msg_count                 => x_msg_count,
35668             x_msg_data                  => x_msg_data
35669 		   );
35670 
35671 
35672            IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
35673               FND_MESSAGE.SET_NAME('CSI','CSI_API_GET_CHILDREN_ERROR');
35674               FND_MSG_PUB.Add;
35675               RAISE FND_API.G_EXC_ERROR;
35676            END IF;
35677           l_lock_count:=l_lock_tbl.COUNT+1;
35678           l_lock_tbl(l_lock_count).instance_id:=l_root_node;
35679           l_lock_tbl(l_lock_count).root_instance_id:=l_root_node;
35680           l_root_hdr_id := null;
35681           l_root_item_id:= null;
35682           l_root_rev_num:= null;
35683          FOR l_root_config IN px_config_tbl.FIRST .. px_config_tbl.LAST
35684          LOOP
35685           IF px_config_tbl(l_root_config).instance_id=l_root_node
35686           THEN
35687             l_lock_tbl(l_lock_count).root_config_inst_hdr_id := px_config_tbl(l_root_config).config_inst_hdr_id;
35688             l_lock_tbl(l_lock_count).root_config_inst_item_id:= px_config_tbl(l_root_config).config_inst_item_id;
35689             l_lock_tbl(l_lock_count).root_config_inst_rev_num:= px_config_tbl(l_root_config).config_inst_rev_num;
35690             l_root_hdr_id := px_config_tbl(l_root_config).config_inst_hdr_id;
35691             l_root_item_id:= px_config_tbl(l_root_config).config_inst_item_id;
35692             l_root_rev_num:= px_config_tbl(l_root_config).config_inst_rev_num;
35693            EXIT;
35694           END IF;
35695          END LOOP;
35696 
35697          IF l_rel_tbl.COUNT>0
35698          THEN
35699           FOR l_chld_csr IN l_rel_tbl.FIRST .. l_rel_tbl.LAST
35700           LOOP
35701            l_lock_count:=l_lock_tbl.COUNT+1;
35702            l_lock_tbl(l_lock_count).instance_id:=l_rel_tbl(l_chld_csr).subject_id;
35703             IF csi_item_instance_pvt.check_item_instance_lock (p_instance_id => l_rel_tbl(l_chld_csr).subject_id)
35704             THEN
35705               FND_MESSAGE.SET_NAME('CSI','CSI_INS_ALREADY_LOCKED');
35706               FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_lock_tbl(l_lock_count).instance_id);
35707               FND_MSG_PUB.Add;
35708               RAISE FND_API.G_EXC_ERROR;
35709             END IF;
35710            l_lock_tbl(l_lock_count).root_instance_id:=l_root_node;
35711            l_lock_tbl(l_lock_count).root_config_inst_hdr_id := l_root_hdr_id;
35712            l_lock_tbl(l_lock_count).root_config_inst_item_id:= l_root_item_id;
35713            l_lock_tbl(l_lock_count).root_config_inst_rev_num:= l_root_rev_num;
35714           END LOOP;
35715          END IF;
35716         END IF;
35717       END IF;
35718      ELSIF (px_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
35719             px_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
35720             px_config_tbl(i).config_inst_item_id IS NOT NULL AND
35721             px_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
35722             px_config_tbl(i).config_inst_rev_num IS NOT NULL AND
35723             px_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )
35724      THEN
35725        IF csi_item_instance_pvt.check_item_instance_lock ( p_config_inst_hdr_id  => px_config_tbl(i).config_inst_hdr_id
35726                                         ,p_config_inst_item_id => px_config_tbl(i).config_inst_item_id
35727                                         ,p_config_inst_rev_num => px_config_tbl(i).config_inst_rev_num
35728                                         )
35729        THEN
35730          FND_MESSAGE.SET_NAME('CSI','CSI_CONFIG_KEYS_LOCKED');
35731          FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',px_config_tbl(i).config_inst_hdr_id);
35732          FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',px_config_tbl(i).config_inst_item_id);
35733          FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',px_config_tbl(i).config_inst_rev_num);
35734          FND_MSG_PUB.Add;
35735          RAISE FND_API.G_EXC_ERROR;
35736        ELSE
35737         l_lock_count:=l_lock_tbl.COUNT+1;
35738         l_lock_tbl(l_lock_count).config_inst_hdr_id    :=px_config_tbl(i).config_inst_hdr_id;
35739         l_lock_tbl(l_lock_count).config_inst_item_id   :=px_config_tbl(i).config_inst_item_id;
35740         l_lock_tbl(l_lock_count).config_inst_rev_num   :=px_config_tbl(i).config_inst_rev_num;
35741         l_lock_tbl(l_lock_count).source_application_id :=px_config_tbl(i).source_application_id;
35742         l_lock_tbl(l_lock_count).source_txn_header_ref :=px_config_tbl(i).source_txn_header_ref;
35743 
35744         BEGIN
35745           SELECT instance_hdr_id  -- root_config_hdr_id
35746                 ,config_item_id   -- root_config_item_id
35747                 ,instance_rev_nbr -- root_config_rev_nbr
35748           INTO   l_lock_tbl(l_lock_count).root_config_inst_hdr_id
35749                 ,l_lock_tbl(l_lock_count).root_config_inst_item_id
35750                 ,l_lock_tbl(l_lock_count).root_config_inst_rev_num
35751           FROM   cz_config_items czItems
35752           WHERE  czItems.instance_hdr_id  = px_config_tbl(i).config_inst_hdr_id
35753           AND    czItems.instance_rev_nbr = px_config_tbl(i).config_inst_rev_num
35754           AND    czItems.component_instance_type = 'I'  -- I = Root instance
35755           AND    czItems.deleted_flag = '0';
35756         EXCEPTION
35757           WHEN OTHERS THEN
35758              NULL;
35759         END;
35760 
35761         --l_lock_tbl(l_lock_count).root_config_inst_hdr_id := px_config_tbl(i).config_inst_hdr_id;
35762         --l_lock_tbl(l_lock_count).root_config_inst_item_id:= px_config_tbl(i).config_inst_item_id;
35763         --l_lock_tbl(l_lock_count).root_config_inst_rev_num:= px_config_tbl(i).config_inst_rev_num;
35764         l_lock_tbl(l_lock_count).lock_status:=2;
35765         px_config_tbl(i).lock_status:=2;
35766        END IF;
35767      END IF;
35768     ELSE
35769          FND_MESSAGE.SET_NAME('CSI','CSI_PASSED_INVALID_KEYS');
35770          FND_MSG_PUB.Add;
35771          RAISE FND_API.G_EXC_ERROR;
35772     END IF;
35773 
35774    END IF;
35775   END LOOP;
35776  END IF;
35777 
35778    IF l_lock_tbl.COUNT > 0
35779    THEN
35780     FOR root IN l_lock_tbl.FIRST .. l_lock_tbl.LAST
35781     LOOP
35782     IF l_lock_tbl.EXISTS(root)
35783     THEN
35784      IF (l_lock_tbl(root).root_config_inst_hdr_id IS NOT NULL AND
35785          l_lock_tbl(root).root_config_inst_hdr_id <> fnd_api.g_miss_num AND
35786          l_lock_tbl(root).root_config_inst_item_id IS NOT NULL AND
35787          l_lock_tbl(root).root_config_inst_item_id <> fnd_api.g_miss_num AND
35788          l_lock_tbl(root).root_config_inst_rev_num IS NOT NULL AND
35789          l_lock_tbl(root).root_config_inst_rev_num <> fnd_api.g_miss_num ) AND
35790         (l_lock_tbl(root).instance_id IS NULL OR
35791          l_lock_tbl(root).instance_id = fnd_api.g_miss_num)
35792      THEN
35793         FOR chd IN l_lock_tbl.FIRST .. l_lock_tbl.LAST
35794         LOOP
35795            IF ( (l_lock_tbl(chd).root_config_inst_hdr_id IS NULL OR
35796                  l_lock_tbl(chd).root_config_inst_hdr_id = fnd_api.g_miss_num) AND
35797                 (l_lock_tbl(chd).root_config_inst_item_id IS NULL OR
35798                  l_lock_tbl(chd).root_config_inst_item_id = fnd_api.g_miss_num) AND
35799                 (l_lock_tbl(chd).root_config_inst_rev_num IS NULL OR
35800                  l_lock_tbl(chd).root_config_inst_rev_num = fnd_api.g_miss_num)) AND
35801               (  l_lock_tbl(chd).instance_id IS NULL OR
35802                  l_lock_tbl(chd).instance_id = fnd_api.g_miss_num) AND
35803               (  l_lock_tbl(chd).config_inst_hdr_id = l_lock_tbl(root).config_inst_hdr_id AND
35804                  l_lock_tbl(chd).config_inst_rev_num = l_lock_tbl(root).config_inst_rev_num )
35805            THEN
35806               l_lock_tbl(chd).root_config_inst_hdr_id  := l_lock_tbl(root).root_config_inst_hdr_id;
35807               l_lock_tbl(chd).root_config_inst_item_id := l_lock_tbl(root).root_config_inst_item_id;
35808               l_lock_tbl(chd).root_config_inst_rev_num := l_lock_tbl(root).root_config_inst_rev_num;
35809            END IF;
35810         END LOOP;
35811      END IF;
35812     END IF;
35813     END LOOP;
35814    END IF;
35815 
35816 
35817 
35818    SELECT csi_item_instance_locks_s.NEXTVAL
35819      INTO l_lock_id
35820      FROM SYS.dual;
35821 
35822      IF px_config_tbl.COUNT > 0
35823      THEN
35824        FOR i IN px_config_tbl.FIRST .. px_config_tbl.LAST
35825        LOOP
35826          IF px_config_tbl.EXISTS(i)
35827          THEN
35828            px_config_tbl(i).lock_id:=l_lock_id;
35829          END IF;
35830        END LOOP;
35831      END IF;
35832 
35833 
35834    IF l_lock_tbl.COUNT > 0 AND
35835       px_config_tbl.COUNT>0
35836    THEN
35837      FOR l_lock IN 1..l_lock_tbl.COUNT
35838      LOOP
35839      IF l_lock_tbl.EXISTS(l_lock)
35840      THEN
35841       FOR l_config IN px_config_tbl.FIRST .. px_config_tbl.LAST
35842       LOOP
35843       IF px_config_tbl.EXISTS(l_config)
35844       THEN
35845        IF l_lock_tbl(l_lock).instance_id=px_config_tbl(l_config).instance_id AND
35846          (l_lock_tbl(l_lock).instance_id IS NOT NULL AND
35847           l_lock_tbl(l_lock).instance_id <> fnd_api.g_miss_num) AND
35848          (px_config_tbl(l_config).instance_id IS NOT NULL AND
35849           px_config_tbl(l_config).instance_id <> fnd_api.g_miss_num)
35850        THEN
35851           l_lock_tbl(l_lock).lock_status           :=2;
35852          -- l_lock_tbl(l_lock).lock_id               :=l_lock_id;
35853           l_lock_tbl(l_lock).source_application_id :=px_config_tbl(l_config).source_application_id;
35854           l_lock_tbl(l_lock).source_txn_header_ref :=px_config_tbl(l_config).source_txn_header_ref;
35855           l_lock_tbl(l_lock).source_txn_line_ref1  :=px_config_tbl(l_config).source_txn_line_ref1;
35856           l_lock_tbl(l_lock).source_txn_line_ref2  :=px_config_tbl(l_config).source_txn_line_ref2;
35857           l_lock_tbl(l_lock).source_txn_line_ref3  :=px_config_tbl(l_config).source_txn_line_ref3;
35858           l_lock_tbl(l_lock).config_inst_hdr_id    :=px_config_tbl(l_config).config_inst_hdr_id;
35859           l_lock_tbl(l_lock).config_inst_item_id   :=px_config_tbl(l_config).config_inst_item_id;
35860           l_lock_tbl(l_lock).config_inst_rev_num   :=px_config_tbl(l_config).config_inst_rev_num;
35861           px_config_tbl(l_config).lock_id          :=l_lock_id;
35862           px_config_tbl(l_config).lock_status      :=2;
35863        END IF;
35864       END IF;
35865       END LOOP; -- For config_tbl loop
35866       IF l_lock_tbl(l_lock).lock_status IS NULL OR
35867          l_lock_tbl(l_lock).lock_status = fnd_api.g_miss_num
35868       THEN
35869         l_lock_tbl(l_lock).lock_status:=1;
35870         l_lock_tbl(l_lock).source_application_id :=px_config_tbl(1).source_application_id;
35871         l_lock_tbl(l_lock).source_txn_header_ref :=px_config_tbl(1).source_txn_header_ref;
35872        IF (l_lock_tbl(l_lock).instance_id IS NOT NULL AND
35873            l_lock_tbl(l_lock).instance_id <> fnd_api.g_miss_num) AND
35874           ( (l_lock_tbl(l_lock).config_inst_hdr_id IS NULL OR
35875              l_lock_tbl(l_lock).config_inst_hdr_id = fnd_api.g_miss_num) AND
35876             (l_lock_tbl(l_lock).config_inst_item_id IS NULL OR
35877              l_lock_tbl(l_lock).config_inst_item_id = fnd_api.g_miss_num) AND
35878             (l_lock_tbl(l_lock).config_inst_rev_num IS NULL OR
35879              l_lock_tbl(l_lock).config_inst_rev_num = fnd_api.g_miss_num) )
35880        THEN
35881          -- CALL GET CONFIG KEYS
35882             get_config_keys(p_instance_id => l_lock_tbl(l_lock).instance_id,
35883                             p_config_rec  => l_lock_config_rec
35884                             );
35885             l_lock_tbl(l_lock).config_inst_hdr_id:=l_lock_config_rec.config_inst_hdr_id;
35886             l_lock_tbl(l_lock).config_inst_item_id:=l_lock_config_rec.config_inst_item_id;
35887             l_lock_tbl(l_lock).config_inst_rev_num:=l_lock_config_rec.config_inst_rev_num;
35888        END IF;
35889 
35890       END IF;
35891      END IF;
35892      END LOOP; -- For lock_tbl loop
35893    END IF;
35894 
35895 
35896 
35897    -- Call table handler
35898    IF l_lock_tbl.COUNT>0
35899    THEN
35900     FOR l_insert_csr IN l_lock_tbl.FIRST .. l_lock_tbl.LAST
35901     LOOP
35902      IF l_lock_tbl.EXISTS(l_insert_csr)
35903      THEN
35904       INSERT INTO csi_item_instance_locks
35905       (    lock_id
35906           ,lock_status
35907           ,instance_id
35908           ,config_inst_hdr_id
35909           ,config_inst_item_id
35910           ,config_inst_rev_num
35911           ,root_instance_id
35912           ,root_config_inst_hdr_id
35913           ,root_config_inst_item_id
35914           ,root_config_inst_rev_num
35915           ,lock_source_appln_id
35916           ,lock_source_header_ref
35917           ,lock_source_line_ref1
35918           ,lock_source_line_ref2
35919           ,lock_source_line_ref3
35920           ,date_locked
35921           ,last_updated_by
35922           ,last_update_date
35923           ,object_version_number
35924           ,last_update_login
35925           ,created_by
35926           ,creation_date
35927       )
35928       VALUES
35929       (
35930            l_lock_id
35931           ,l_lock_tbl(l_insert_csr).lock_status
35932           ,decode(l_lock_tbl(l_insert_csr).instance_id,fnd_api.g_miss_num,NULL,l_lock_tbl(l_insert_csr).instance_id)
35933           ,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)
35934           ,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)
35935           ,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)
35936           ,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)
35937           ,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)
35938           ,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)
35939           ,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)
35940           ,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)
35941           ,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)
35942           ,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)
35943           ,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)
35944           ,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)
35945           ,SYSDATE --p_txn_rec.source_transaction_date
35946           ,fnd_global.user_id
35947           ,SYSDATE
35948           ,1
35949           ,fnd_global.user_id
35950           ,fnd_global.user_id
35951           ,SYSDATE
35952       );
35953      END IF;
35954     END LOOP;
35955     /*
35956           CSI_TRANSACTIONS_PVT.Create_transaction
35957           (
35958              p_api_version            => p_api_version
35959             ,p_commit                 => p_commit
35960             ,p_init_msg_list          => p_init_msg_list
35961             ,p_validation_level       => p_validation_level
35962             ,p_Success_IF_Exists_Flag => 'Y'
35963             ,p_transaction_rec        => p_txn_rec
35964             ,x_return_status          => x_return_status
35965             ,x_msg_count              => x_msg_count
35966             ,x_msg_data               => x_msg_data
35967           );
35968 
35969          IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
35970               FND_MESSAGE.SET_NAME('CSI','CSI_FAILED_TO_VALIDATE_TXN');
35971               FND_MESSAGE.SET_TOKEN('TRANSACTION_ID',p_txn_rec.transaction_id );
35972               FND_MSG_PUB.Add;
35973               RAISE FND_API.G_EXC_ERROR;
35974          END IF;
35975          */
35976    END IF;
35977 
35978         IF FND_API.To_Boolean( p_commit ) THEN
35979             COMMIT WORK;
35980         END IF;
35981 
35982         -- Standard call to get message count and if count is  get message info.
35983         FND_MSG_PUB.Count_And_Get
35984                 (p_encoded => FND_API.G_FALSE,
35985                  p_count        =>      x_msg_count ,
35986                  p_data         =>      x_msg_data   );
35987 
35988 EXCEPTION
35989         WHEN FND_API.G_EXC_ERROR THEN
35990                 ROLLBACK TO csi_lock_item_instance;
35991                 x_return_status := FND_API.G_RET_STS_ERROR ;
35992                 FND_MSG_PUB.Count_And_Get
35993                 (       p_encoded => FND_API.G_FALSE,
35994                  p_count   =>      x_msg_count,
35995                         p_data    =>      x_msg_data    );
35996         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
35997                 ROLLBACK TO csi_lock_item_instance;
35998                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
35999                 FND_MSG_PUB.Count_And_Get
36000                 ( p_encoded => FND_API.G_FALSE,
36001                  p_count     =>      x_msg_count,
36002                   p_data      =>      x_msg_data  );
36003         WHEN OTHERS THEN
36004                 ROLLBACK TO csi_lock_item_instance;
36005                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
36006                 IF FND_MSG_PUB.Check_Msg_Level
36007                      (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
36008                 THEN
36009                    FND_MSG_PUB.Add_Exc_Msg
36010                     ( g_pkg_name, l_api_name );
36011                 END IF;
36012                 FND_MSG_PUB.Count_And_Get
36013                 (  p_encoded => FND_API.G_FALSE,
36014                  p_count   =>      x_msg_count,
36015                    p_data    =>      x_msg_data   );
36016 END lock_item_instances;
36017 
36018 PROCEDURE validate_lock
36019 (    p_lock_id             IN  NUMBER ,
36020      p_instance_id         IN  NUMBER ,
36021      p_config_inst_hdr_id  IN  NUMBER ,
36022      p_config_inst_item_id IN  NUMBER ,
36023      p_config_inst_rev_num IN  NUMBER ,
36024      p_lock_status         OUT NOCOPY NUMBER,
36025      p_root                OUT NOCOPY BOOLEAN
36026 ) AS
36027  l_lock_status            NUMBER :=3;
36028  l_root_value             BOOLEAN := FALSE;
36029  l_root_config_hdr_id     NUMBER;
36030  l_root_config_item_id    NUMBER;
36031  l_root_config_rev_num    NUMBER;
36032  l_root_instance_id       NUMBER;
36033 BEGIN
36034     p_root := l_root_value;
36035  IF p_instance_id IS NOT NULL AND
36036     p_instance_id <> fnd_api.g_miss_num AND
36037     p_lock_id IS NOT NULL AND
36038     p_lock_id <> fnd_api.g_miss_num
36039  THEN
36040      BEGIN
36041         SELECT lock_status
36042               ,root_instance_id
36043           INTO l_lock_status
36044               ,l_root_instance_id
36045           FROM csi_item_instance_locks
36046          WHERE instance_id=p_instance_id
36047            AND lock_id = p_lock_id;
36048        IF p_instance_id = l_root_instance_id
36049        THEN
36050          p_root := TRUE;
36051        END IF;
36052      EXCEPTION
36053       WHEN NO_DATA_FOUND THEN
36054            l_lock_status :=3;
36055      END;
36056  ELSIF (p_config_inst_hdr_id IS NOT NULL AND
36057         p_config_inst_hdr_id <> fnd_api.g_miss_num AND
36058         p_config_inst_item_id IS NOT NULL AND
36059         p_config_inst_item_id <> fnd_api.g_miss_num AND
36060         p_config_inst_rev_num IS NOT NULL AND
36061         p_config_inst_rev_num <> fnd_api.g_miss_num ) AND
36062        (p_lock_id IS NOT NULL AND
36063         p_lock_id <> fnd_api.g_miss_num)
36064  THEN
36065      BEGIN
36066         SELECT lock_status
36067               ,root_config_inst_hdr_id
36068               ,root_config_inst_item_id
36069               ,root_config_inst_rev_num
36070           INTO l_lock_status
36071               ,l_root_config_hdr_id
36072               ,l_root_config_item_id
36073               ,l_root_config_rev_num
36074           FROM csi_item_instance_locks
36075          WHERE config_inst_hdr_id  = p_config_inst_hdr_id
36076            AND config_inst_rev_num = p_config_inst_rev_num
36077            AND config_inst_item_id = p_config_inst_item_id
36078            AND lock_id = p_lock_id;
36079        IF p_config_inst_hdr_id = l_root_config_hdr_id AND
36080           p_config_inst_rev_num = l_root_config_rev_num AND
36081           p_config_inst_item_id = l_root_config_item_id
36082        THEN
36083          p_root := TRUE;
36084        END IF;
36085      EXCEPTION
36086       WHEN NO_DATA_FOUND THEN
36087            l_lock_status :=3;
36088      END;
36089  ELSE
36090    l_lock_status :=3;
36091  END IF;
36092   p_lock_status :=l_lock_status;
36093 END validate_lock;
36094 
36095 
36096 PROCEDURE build_unlock_config
36097 (p_lock_id              IN NUMBER,
36098  p_config_inst_hdr_id   IN NUMBER,
36099  p_config_inst_item_id  IN NUMBER,
36100  p_config_inst_rev_num  IN NUMBER,
36101  p_bld_unlock_tbl       OUT NOCOPY csi_item_instance_pvt.lock_instances_tbl
36102  )
36103 AS
36104 CURSOR config_csr(p_root_hdr    IN NUMBER,
36105                   p_root_rev    IN NUMBER,
36106                   p_lock_status IN NUMBER)
36107  IS
36108  SELECT config_inst_hdr_id,
36109         config_inst_item_id,
36110         config_inst_rev_num,
36111         lock_status
36112    FROM csi_item_instance_locks
36113   WHERE root_config_inst_hdr_id = p_root_hdr
36114     AND root_config_inst_rev_num = p_root_rev
36115     AND lock_id = p_lock_id
36116     AND lock_status <> p_lock_status;
36117 l_root_hdr_id   NUMBER;
36118 l_root_rev_num  NUMBER;
36119 l_ctr           NUMBER;
36120 l_unlock_status NUMBER:=0;
36121 BEGIN
36122  BEGIN
36123    SELECT root_config_inst_hdr_id,
36124           root_config_inst_rev_num
36125      INTO l_root_hdr_id,
36126           l_root_rev_num
36127      FROM csi_item_instance_locks
36128     WHERE lock_id = p_lock_id
36129       AND config_inst_hdr_id = p_config_inst_hdr_id
36130       AND config_inst_rev_num = p_config_inst_rev_num
36131       AND config_inst_item_id = p_config_inst_item_id;
36132       l_ctr:=0;
36133       FOR l_config_csr IN config_csr (p_root_hdr    => l_root_hdr_id
36134                                      ,p_root_rev    => l_root_rev_num
36135                                      ,p_lock_status => l_unlock_status)
36136       LOOP
36137          l_ctr := l_ctr+1;
36138          p_bld_unlock_tbl(l_ctr).config_inst_hdr_id := l_config_csr.config_inst_hdr_id;
36139          p_bld_unlock_tbl(l_ctr).config_inst_rev_num := l_config_csr.config_inst_rev_num;
36140          p_bld_unlock_tbl(l_ctr).config_inst_item_id := l_config_csr.config_inst_item_id;
36141          p_bld_unlock_tbl(l_ctr).lock_status :=l_config_csr.lock_status;
36142       END LOOP;
36143  EXCEPTION
36144   WHEN NO_DATA_FOUND THEN
36145     NULL;
36146  END;
36147 END build_unlock_config;
36148 
36149 PROCEDURE unlock_tbl_handler
36150 (p_unlock_tbl            IN   CSI_ITEM_INSTANCE_PVT.lock_instances_tbl,
36151  p_unlock_param          IN   VARCHAR2,
36152  p_date                  IN   DATE
36153  )
36154 AS
36155 l_last_updated_by   NUMBER;
36156 l_last_update_login NUMBER;
36157 l_unlock_status     NUMBER;
36158 BEGIN
36159 l_unlock_status     := 0;
36160 l_last_updated_by   := fnd_global.user_id;
36161 l_last_update_login := fnd_global.login_id;
36162 
36163  IF p_unlock_param = 'INSTANCE'
36164  THEN
36165   IF p_unlock_tbl.COUNT>0
36166   THEN
36167    FOR i IN p_unlock_tbl.FIRST .. p_unlock_tbl.LAST
36168    LOOP
36169     IF p_unlock_tbl.EXISTS(i)
36170     THEN
36171      UPDATE csi_item_instance_locks
36172         SET lock_status= p_unlock_tbl(i).lock_status
36173            ,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)
36174            ,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)
36175            ,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)
36176            ,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)
36177            ,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)
36178            ,date_unlocked             = p_date
36179            ,object_version_number     = object_version_number+1
36180            ,last_updated_by           = l_last_updated_by
36181            ,last_update_date          = SYSDATE
36182            ,last_update_login         = l_last_update_login
36183       WHERE instance_id = p_unlock_tbl(i).instance_id
36184         AND lock_id =   p_unlock_tbl(i).lock_id;
36185     END IF;
36186    END LOOP;
36187   END IF;
36188  ELSIF p_unlock_param = 'CONFIG'
36189  THEN
36190   IF p_unlock_tbl.COUNT>0
36191   THEN
36192    FOR i IN p_unlock_tbl.FIRST .. p_unlock_tbl.LAST
36193    LOOP
36194     IF p_unlock_tbl.EXISTS(i)
36195     THEN
36196      UPDATE csi_item_instance_locks
36197         SET lock_status= p_unlock_tbl(i).lock_status
36198            ,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)
36199            ,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)
36200            ,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)
36201            ,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)
36202            ,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)
36203            ,date_unlocked             = p_date
36204            ,object_version_number     = object_version_number+1
36205            ,last_updated_by           = l_last_updated_by
36206            ,last_update_date          = SYSDATE
36207            ,last_update_login         = l_last_update_login
36208       WHERE config_inst_hdr_id  = p_unlock_tbl(i).config_inst_hdr_id
36209         AND config_inst_item_id = p_unlock_tbl(i).config_inst_item_id
36210         AND config_inst_rev_num = p_unlock_tbl(i).config_inst_rev_num
36211         AND lock_id             = p_unlock_tbl(i).lock_id;
36212     END IF;
36213    END LOOP;
36214   END IF;
36215  END IF;
36216 
36217 END unlock_tbl_handler;
36218 
36219 
36220 PROCEDURE unlock_item_instances
36221  (
36222      p_api_version           IN   NUMBER
36223     ,p_commit                IN   VARCHAR2
36224     ,p_init_msg_list         IN   VARCHAR2
36225     ,p_validation_level      IN   NUMBER
36226     ,p_config_tbl            IN   csi_cz_int.config_tbl
36227     ,p_unlock_all            IN   VARCHAR2
36228 --    ,p_txn_rec               IN   OUT NOCOPY csi_datastructures_pub.transaction_rec
36229     ,x_return_status         OUT  NOCOPY VARCHAR2
36230     ,x_msg_count             OUT  NOCOPY NUMBER
36231     ,x_msg_data              OUT  NOCOPY VARCHAR2
36232  )
36233 AS
36234 l_api_name         CONSTANT VARCHAR2(30)   := 'UNLOCK_ITEM_INSTANCES';
36235 l_api_version      CONSTANT NUMBER         := 1.0;
36236 l_csi_debug_level  NUMBER;
36237 l_rel_tbl          csi_datastructures_pub.ii_relationship_tbl;
36238 l_ii_relationship_level_tbl csi_ii_relationships_pvt.ii_relationship_level_tbl;
36239 l_rel_query_rec    csi_datastructures_pub.relationship_query_rec;
36240 l_rel_type_code    VARCHAR2(30) := 'COMPONENT-OF';
36241 l_unlock_tbl       csi_item_instance_pvt.lock_instances_tbl;
36242 l_unlock_ins_tbl   csi_item_instance_pvt.lock_instances_tbl;
36243 l_unlock_count     NUMBER;
36244 l_unlock_config    csi_item_instance_pvt.lock_instances_tbl;
36245 l_unlock_root      csi_item_instance_pvt.lock_instances_tbl;
36246 l_bld_unlock_tbl   csi_item_instance_pvt.lock_instances_tbl;
36247 l_config_count     NUMBER;
36248 l_config_root      NUMBER;
36249 l_instance_ctr     NUMBER;
36250 l_config_ctr       NUMBER;
36251 l_warning          VARCHAR2(1) :='N';
36252 l_valid_lock_status NUMBER;
36253 l_found            VARCHAR2(1);
36254 l_root_value       BOOLEAN := FALSE;
36255 l_unlock_root_ins  NUMBER;
36256 BEGIN
36257 
36258   SAVEPOINT csi_unlock_item_instance;
36259 
36260         -- Check for freeze_flag in csi_install_parameters is set to 'Y'
36261 
36262      csi_utility_grp.check_ib_active;
36263 
36264         -- Standard call to check for call compatibility.
36265         IF NOT FND_API.Compatible_API_Call (    l_api_version           ,
36266                                                 p_api_version           ,
36267                                                 l_api_name              ,
36268                                                 g_pkg_name              )
36269         THEN
36270                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
36271         END IF;
36272 
36273         -- Initialize message list if p_init_msg_list is set to TRUE.
36274         IF FND_API.to_Boolean( p_init_msg_list ) THEN
36275                 FND_MSG_PUB.initialize;
36276         END IF;
36277 
36278         --  Initialize API return status to success
36279         x_return_status := FND_API.G_RET_STS_SUCCESS;
36280 
36281         -- Check the profile option CSI_DEBUG_LEVEL for debug message reporting
36282         l_csi_debug_level:=fnd_profile.value('CSI_DEBUG_LEVEL');
36283 
36284         -- If CSI_DEBUG_LEVEL = 1 then dump the procedure name
36285         IF (l_csi_debug_level > 0) THEN
36286             csi_gen_utility_pvt.put_line( 'unlock_item_instances');
36287         END IF;
36288 
36289 
36290         -- If the debug level = 2 then dump all the parameters values.
36291         IF (l_csi_debug_level > 1) THEN
36292                csi_gen_utility_pvt.put_line( 'unlock_item_instances'||
36293                                                    p_api_version           ||'-'||
36294                                                    p_commit                ||'-'||
36295                                                    p_init_msg_list         ||'-'||
36296                                                    p_validation_level            );
36297                -- Dump the records in the log file
36298           IF p_config_tbl.COUNT > 0
36299           THEN
36300            FOR tab_row IN p_config_tbl.FIRST .. p_config_tbl.LAST
36301            LOOP
36302              csi_gen_utility_pvt.put_line('                                         ');
36303              csi_gen_utility_pvt.put_line('Dumping the values for config tbl Rec # :'||tab_row);
36304              csi_gen_utility_pvt.put_line('source_application_id    :'||p_config_tbl(tab_row).source_application_id);
36305              csi_gen_utility_pvt.put_line('source_txn_header_ref    :'||p_config_tbl(tab_row).source_txn_header_ref);
36306              csi_gen_utility_pvt.put_line('source_txn_line_ref1     :'||p_config_tbl(tab_row).source_txn_line_ref1);
36307              csi_gen_utility_pvt.put_line('source_txn_line_ref2     :'||p_config_tbl(tab_row).source_txn_line_ref2);
36308              csi_gen_utility_pvt.put_line('source_txn_line_ref3     :'||p_config_tbl(tab_row).source_txn_line_ref3);
36309              csi_gen_utility_pvt.put_line('instance_id              :'||p_config_tbl(tab_row).instance_id);
36310              csi_gen_utility_pvt.put_line('lock_id                  :'||p_config_tbl(tab_row).lock_id);
36311              csi_gen_utility_pvt.put_line('config_inst_hdr_id       :'||p_config_tbl(tab_row).config_inst_hdr_id);
36312              csi_gen_utility_pvt.put_line('config_inst_item_id      :'||p_config_tbl(tab_row).config_inst_item_id);
36313              csi_gen_utility_pvt.put_line('config_inst_rev_num      :'||p_config_tbl(tab_row).config_inst_rev_num);
36314              csi_gen_utility_pvt.put_line('lock_status              :'||p_config_tbl(tab_row).lock_status);
36315            END LOOP;
36316           END IF;
36317                --csi_gen_utility_pvt.dump_txn_rec(p_txn_rec);
36318         END IF;
36319 
36320 
36321 
36322   l_unlock_tbl.DELETE;
36323              csi_gen_utility_pvt.put_line('p_unlock_all             :'||p_unlock_all);
36324   IF p_unlock_all IS NOT NULL AND
36325      p_unlock_all = fnd_api.g_true
36326   THEN
36327              csi_gen_utility_pvt.put_line('Processing to unlock all locked instances.');
36328   -- This is the case where root node(instance_id) is passed and
36329   -- we need to get all its children and unlock them.
36330    IF p_config_tbl.COUNT >0
36331    THEN
36332     FOR i IN p_config_tbl.FIRST .. p_config_tbl.LAST
36333     LOOP
36334      IF p_config_tbl.EXISTS(i)
36335      THEN
36336       IF ((p_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
36337            p_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
36338            p_config_tbl(i).config_inst_item_id IS NOT NULL AND
36339            p_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
36340            p_config_tbl(i).config_inst_rev_num IS NOT NULL AND
36341            p_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )) AND
36342           (p_config_tbl(i).lock_id IS NOT NULL AND
36343            p_config_tbl(i).lock_id <> fnd_api.g_miss_num)
36344       THEN
36345              csi_gen_utility_pvt.put_line('Processing where config keys were passed.');
36346        l_found:='N';
36347        IF l_unlock_config.count>0
36348        THEN
36349         FOR l_un_csr IN l_unlock_config.FIRST .. l_unlock_config.LAST
36350         LOOP
36351          IF l_unlock_config.EXISTS(l_un_csr)
36352          THEN
36353            IF l_unlock_config(l_un_csr).lock_id=p_config_tbl(i).lock_id AND
36354               l_unlock_config(l_un_csr).config_inst_hdr_id=p_config_tbl(i).config_inst_hdr_id AND
36355               l_unlock_config(l_un_csr).config_inst_item_id=p_config_tbl(i).config_inst_item_id AND
36356               l_unlock_config(l_un_csr).config_inst_rev_num=p_config_tbl(i).config_inst_rev_num
36357            THEN
36358             l_found:='Y';
36359            END IF;
36360          END IF;
36361         END LOOP;
36362        END IF;
36363 
36364        IF l_found='N'
36365        THEN
36366 
36367                  l_valid_lock_status:=NULL;
36368                  validate_lock
36369                     (    p_lock_id             => p_config_tbl(i).lock_id,
36370                          p_instance_id         => fnd_api.g_miss_num,
36371                          p_config_inst_hdr_id  => p_config_tbl(i).config_inst_hdr_id,
36372                          p_config_inst_item_id => p_config_tbl(i).config_inst_item_id,
36373                          p_config_inst_rev_num => p_config_tbl(i).config_inst_rev_num,
36374                          p_lock_status         => l_valid_lock_status,
36375                          p_root                => l_root_value
36376                     );
36377         IF l_valid_lock_status NOT IN (0,3) AND
36378            l_valid_lock_status IS NOT NULL
36379         THEN
36380           --p_config_tbl(i).lock_status:=0;
36381            build_unlock_config(p_lock_id             => p_config_tbl(i).lock_id,
36382                                p_config_inst_hdr_id  => p_config_tbl(i).config_inst_hdr_id,
36383                                p_config_inst_item_id => p_config_tbl(i).config_inst_item_id,
36384                                p_config_inst_rev_num => p_config_tbl(i).config_inst_rev_num,
36385                                p_bld_unlock_tbl      => l_bld_unlock_tbl
36386                                );
36387 
36388            l_config_count := l_unlock_config.count;
36389          IF l_bld_unlock_tbl.COUNT >0
36390          THEN
36391           FOR l_bld IN l_bld_unlock_tbl.FIRST .. l_bld_unlock_tbl.LAST
36392           LOOP
36393            IF l_bld_unlock_tbl.EXISTS(l_bld)
36394            THEN
36395 
36396            l_unlock_config(l_config_count+l_bld).config_inst_hdr_id    :=l_bld_unlock_tbl(l_bld).config_inst_hdr_id;
36397            l_unlock_config(l_config_count+l_bld).config_inst_item_id   :=l_bld_unlock_tbl(l_bld).config_inst_item_id;
36398            l_unlock_config(l_config_count+l_bld).config_inst_rev_num   :=l_bld_unlock_tbl(l_bld).config_inst_rev_num;
36399            l_unlock_config(l_config_count+l_bld).lock_id:=p_config_tbl(i).lock_id;
36400            l_unlock_config(l_config_count+l_bld).lock_status:=p_config_tbl(i).lock_status;
36401            l_unlock_config(l_config_count+l_bld).source_application_id :=p_config_tbl(i).source_application_id;
36402            l_unlock_config(l_config_count+l_bld).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
36403            --l_unlock_config(l_config_count+l_bld).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
36404            --l_unlock_config(l_config_count+l_bld).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
36405            --l_unlock_config(l_config_count+l_bld).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
36406              IF l_bld_unlock_tbl(l_bld).lock_status = 2 AND
36407                 p_config_tbl(i).source_application_id = 542
36408              THEN
36409               FND_MESSAGE.SET_NAME('CSI','CSI_CANT_UNLOCK_TREE');
36410               FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',l_bld_unlock_tbl(l_bld).config_inst_hdr_id);
36411               FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',l_bld_unlock_tbl(l_bld).config_inst_item_id);
36412               FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',l_bld_unlock_tbl(l_bld).config_inst_rev_num);
36413               FND_MSG_PUB.Add;
36414               RAISE FND_API.G_EXC_ERROR;
36415              ELSIF (p_config_tbl(i).lock_status IS NULL OR
36416                  p_config_tbl(i).lock_status NOT IN (0,1)) OR
36417                  p_config_tbl(i).lock_status > l_bld_unlock_tbl(l_bld).lock_status
36418              THEN
36419               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_CON_STATUS');
36420               FND_MESSAGE.SET_TOKEN('ORIGINAL_STATUS',l_bld_unlock_tbl(l_bld).lock_status);
36421               FND_MESSAGE.SET_TOKEN('LOCK_STATUS',p_config_tbl(i).lock_status);
36422               FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',l_bld_unlock_tbl(l_bld).config_inst_hdr_id);
36423               FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',l_bld_unlock_tbl(l_bld).config_inst_item_id);
36424               FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',l_bld_unlock_tbl(l_bld).config_inst_rev_num);
36425               FND_MSG_PUB.Add;
36426               RAISE FND_API.G_EXC_ERROR;
36427              END IF;
36428            END IF;
36429           END LOOP;
36430          END IF;
36431 
36432         ELSE
36433            IF l_valid_lock_status=3
36434            THEN
36435               l_warning := 'E';
36436            ELSE
36437              IF l_valid_lock_status=0 AND
36438                 l_warning <> 'E'
36439              THEN
36440               l_warning := 'Y';
36441              END IF;
36442            END IF;
36443         END IF;
36444        END IF;
36445       ELSE
36446        l_warning := 'E';
36447       END IF;
36448      END IF;
36449     END LOOP;
36450    END IF;
36451 
36452   ELSE -- Case where p_unlock_all is fnd_api.g_false
36453 
36454              csi_gen_utility_pvt.put_line('P_unlock_all is false : Processing to unlock instances ');
36455    IF p_config_tbl.COUNT >0
36456    THEN
36457     FOR i IN p_config_tbl.FIRST .. p_config_tbl.LAST
36458     LOOP
36459      IF p_config_tbl.EXISTS(i)
36460      THEN
36461       IF ((p_config_tbl(i).instance_id IS NOT NULL AND
36462            p_config_tbl(i).instance_id <> fnd_api.g_miss_num) OR
36463           (p_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
36464            p_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
36465            p_config_tbl(i).config_inst_item_id IS NOT NULL AND
36466            p_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
36467            p_config_tbl(i).config_inst_rev_num IS NOT NULL AND
36468            p_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )) AND
36469           (p_config_tbl(i).lock_id IS NOT NULL AND
36470            p_config_tbl(i).lock_id <> fnd_api.g_miss_num)
36471       THEN
36472 
36473         IF (p_config_tbl(i).instance_id IS NOT NULL AND
36474             p_config_tbl(i).instance_id <> fnd_api.g_miss_num)
36475         THEN
36476 
36477                  l_valid_lock_status:=NULL;
36478                 validate_lock
36479                     (    p_lock_id             => p_config_tbl(i).lock_id,
36480                          p_instance_id         => p_config_tbl(i).instance_id,
36481                          p_config_inst_hdr_id  => fnd_api.g_miss_num,
36482                          p_config_inst_item_id => fnd_api.g_miss_num,
36483                          p_config_inst_rev_num => fnd_api.g_miss_num,
36484                          p_lock_status         => l_valid_lock_status,
36485                          p_root                => l_root_value
36486                     );
36487 
36488 
36489          IF l_valid_lock_status IS NOT NULL AND
36490             l_valid_lock_status NOT IN (0,3)
36491          THEN
36492           --p_config_tbl(i).lock_status:=0;
36493           IF NOT l_root_value
36494           THEN
36495            l_unlock_count:=l_unlock_tbl.COUNT+1;
36496            l_unlock_tbl(l_unlock_count).instance_id:=p_config_tbl(i).instance_id;
36497            l_unlock_tbl(l_unlock_count).lock_id:=p_config_tbl(i).lock_id;
36498            l_unlock_tbl(l_unlock_count).lock_status:=p_config_tbl(i).lock_status;
36499            l_unlock_tbl(l_unlock_count).source_application_id :=p_config_tbl(i).source_application_id;
36500            l_unlock_tbl(l_unlock_count).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
36501            l_unlock_tbl(l_unlock_count).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
36502            l_unlock_tbl(l_unlock_count).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
36503            l_unlock_tbl(l_unlock_count).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
36504           ELSE
36505            l_unlock_root_ins:=l_unlock_ins_tbl.COUNT+1;
36506            l_unlock_ins_tbl(l_unlock_root_ins).instance_id:=p_config_tbl(i).instance_id;
36507            l_unlock_ins_tbl(l_unlock_root_ins).lock_id:=p_config_tbl(i).lock_id;
36508            l_unlock_ins_tbl(l_unlock_root_ins).lock_status:=p_config_tbl(i).lock_status;
36509            l_unlock_ins_tbl(l_unlock_root_ins).source_application_id :=p_config_tbl(i).source_application_id;
36510            l_unlock_ins_tbl(l_unlock_root_ins).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
36511            l_unlock_ins_tbl(l_unlock_root_ins).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
36512            l_unlock_ins_tbl(l_unlock_root_ins).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
36513            l_unlock_ins_tbl(l_unlock_root_ins).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
36514           END IF;
36515 
36516              IF (p_config_tbl(i).lock_status IS NULL OR
36517                  p_config_tbl(i).lock_status NOT IN (0,1)) OR
36518                  p_config_tbl(i).lock_status > l_valid_lock_status
36519              THEN
36520               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INS_STATUS');
36521               FND_MESSAGE.SET_TOKEN('ORIGINAL_STATUS',l_valid_lock_status);
36522               FND_MESSAGE.SET_TOKEN('LOCK_STATUS',p_config_tbl(i).lock_status);
36523               FND_MESSAGE.SET_TOKEN('INSTANCE_ID',p_config_tbl(i).instance_id);
36524               FND_MSG_PUB.Add;
36525               RAISE FND_API.G_EXC_ERROR;
36526              END IF;
36527          ELSE
36528            IF l_valid_lock_status=3
36529            THEN
36530               l_warning := 'E';
36531            ELSE
36532              IF l_valid_lock_status=0 AND
36533                 l_warning <> 'E'
36534              THEN
36535               l_warning := 'Y';
36536              END IF;
36537            END IF;
36538          END IF;
36539         ELSIF (p_config_tbl(i).config_inst_hdr_id IS NOT NULL AND
36540                p_config_tbl(i).config_inst_hdr_id <> fnd_api.g_miss_num AND
36541                p_config_tbl(i).config_inst_item_id IS NOT NULL AND
36542                p_config_tbl(i).config_inst_item_id <> fnd_api.g_miss_num AND
36543                p_config_tbl(i).config_inst_rev_num IS NOT NULL AND
36544                p_config_tbl(i).config_inst_rev_num <> fnd_api.g_miss_num )
36545         THEN
36546                   l_valid_lock_status:=NULL;
36547                 validate_lock
36548                     (    p_lock_id             => p_config_tbl(i).lock_id,
36549                          p_instance_id         => fnd_api.g_miss_num,
36550                          p_config_inst_hdr_id  => p_config_tbl(i).config_inst_hdr_id,
36551                          p_config_inst_item_id => p_config_tbl(i).config_inst_item_id,
36552                          p_config_inst_rev_num => p_config_tbl(i).config_inst_rev_num,
36553                          p_lock_status         => l_valid_lock_status,
36554                          p_root                => l_root_value
36555                     );
36556 
36557 
36558          IF l_valid_lock_status NOT IN (0,3) AND
36559             l_valid_lock_status IS NOT NULL
36560          THEN
36561           -- p_config_tbl(i).lock_status:=0;
36562           IF NOT l_root_value
36563           THEN
36564            l_config_count := l_unlock_config.count+1;
36565            l_unlock_config(l_config_count).config_inst_hdr_id    :=p_config_tbl(i).config_inst_hdr_id;
36566            l_unlock_config(l_config_count).config_inst_item_id   :=p_config_tbl(i).config_inst_item_id;
36567            l_unlock_config(l_config_count).config_inst_rev_num   :=p_config_tbl(i).config_inst_rev_num;
36568            l_unlock_config(l_config_count).lock_id:=p_config_tbl(i).lock_id;
36569            l_unlock_config(l_config_count).lock_status:=p_config_tbl(i).lock_status;
36570            l_unlock_config(l_config_count).source_application_id :=p_config_tbl(i).source_application_id;
36571            l_unlock_config(l_config_count).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
36572            l_unlock_config(l_config_count).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
36573            l_unlock_config(l_config_count).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
36574            l_unlock_config(l_config_count).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
36575           ELSE
36576            l_config_root := l_unlock_root.count+1;
36577            l_unlock_root(l_config_root).config_inst_hdr_id    :=p_config_tbl(i).config_inst_hdr_id;
36578            l_unlock_root(l_config_root).config_inst_item_id   :=p_config_tbl(i).config_inst_item_id;
36579            l_unlock_root(l_config_root).config_inst_rev_num   :=p_config_tbl(i).config_inst_rev_num;
36580            l_unlock_root(l_config_root).lock_id:=p_config_tbl(i).lock_id;
36581            l_unlock_root(l_config_root).lock_status:=p_config_tbl(i).lock_status;
36582            l_unlock_root(l_config_root).source_application_id :=p_config_tbl(i).source_application_id;
36583            l_unlock_root(l_config_root).source_txn_header_ref :=p_config_tbl(i).source_txn_header_ref;
36584            l_unlock_root(l_config_root).source_txn_line_ref1  :=p_config_tbl(i).source_txn_line_ref1;
36585            l_unlock_root(l_config_root).source_txn_line_ref2  :=p_config_tbl(i).source_txn_line_ref2;
36586            l_unlock_root(l_config_root).source_txn_line_ref3  :=p_config_tbl(i).source_txn_line_ref3;
36587           END IF;
36588              IF (p_config_tbl(i).lock_status IS NULL OR
36589                  p_config_tbl(i).lock_status NOT IN (0,1)) OR
36590                  p_config_tbl(i).lock_status > l_valid_lock_status
36591              THEN
36592               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_CON_STATUS');
36593               FND_MESSAGE.SET_TOKEN('ORIGINAL_STATUS',l_valid_lock_status);
36594               FND_MESSAGE.SET_TOKEN('LOCK_STATUS',p_config_tbl(i).lock_status);
36595               FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',p_config_tbl(i).config_inst_hdr_id);
36596               FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',p_config_tbl(i).config_inst_item_id);
36597               FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',p_config_tbl(i).config_inst_rev_num);
36598               FND_MSG_PUB.Add;
36599               RAISE FND_API.G_EXC_ERROR;
36600              END IF;
36601          ELSE
36602            IF l_valid_lock_status=3
36603            THEN
36604               l_warning := 'E';
36605            ELSE
36606              IF l_valid_lock_status=0 AND
36607                 l_warning <> 'E'
36608              THEN
36609               l_warning := 'Y';
36610              END IF;
36611            END IF;
36612          END IF;
36613         END IF;
36614       ELSE
36615         l_warning := 'E';
36616       END IF;
36617      END IF;
36618     END LOOP;
36619    END IF;
36620   END IF;
36621 
36622    IF l_warning = 'Y'
36623    THEN
36624       FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_LOCKS');
36625       FND_MSG_PUB.Add;
36626    ELSIF l_warning = 'E'
36627    THEN
36628       FND_MESSAGE.SET_NAME('CSI','CSI_LOCKID_NOT_PASSED');
36629       FND_MSG_PUB.Add;
36630       RAISE FND_API.G_EXC_ERROR;
36631    END IF;
36632       csi_gen_utility_pvt.put_line('Count of l_unlock_tbl is :'||l_unlock_tbl.count);
36633    IF l_unlock_tbl.COUNT>0
36634    THEN
36635       csi_gen_utility_pvt.put_line('Before calling unlock_tbl_handler in instance mode. ');
36636       unlock_tbl_handler (l_unlock_tbl,'INSTANCE',SYSDATE);
36637    END IF;
36638 
36639       csi_gen_utility_pvt.put_line('Count of l_unlock_config is :'||l_unlock_config.count);
36640    IF l_unlock_config.COUNT>0
36641    THEN
36642       csi_gen_utility_pvt.put_line('Before calling unlock_tbl_handler in config mode. ');
36643       unlock_tbl_handler (l_unlock_config,'CONFIG',SYSDATE);
36644    END IF;
36645 
36646       csi_gen_utility_pvt.put_line('Count of l_unlock_ins_tbl is :'||l_unlock_ins_tbl.count);
36647    IF l_unlock_ins_tbl.COUNT>0
36648    THEN
36649       csi_gen_utility_pvt.put_line('Before calling unlock_tbl_handler in instance root mode. ');
36650 
36651      FOR i IN l_unlock_ins_tbl.FIRST .. l_unlock_ins_tbl.LAST
36652      LOOP
36653         IF l_unlock_ins_tbl.EXISTS(i)
36654         THEN
36655          IF l_unlock_ins_tbl(i).lock_status=0
36656          THEN
36657            SELECT COUNT(*)
36658              INTO l_instance_ctr
36659              FROM csi_item_instance_locks
36660             WHERE root_instance_id =l_unlock_ins_tbl(i).instance_id
36661               AND lock_id = l_unlock_ins_tbl(i).lock_id
36662               AND lock_status IN (1,2);
36663            IF l_instance_ctr >1  -- this includes root
36664            THEN
36665               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_INST_STATUS');
36666               FND_MESSAGE.SET_TOKEN('INSTANCE_ID',l_unlock_ins_tbl(i).instance_id);
36667               FND_MSG_PUB.Add;
36668               RAISE FND_API.G_EXC_ERROR;
36669            END IF;
36670          END IF;
36671         END IF;
36672      END LOOP;
36673       unlock_tbl_handler (l_unlock_ins_tbl,'INSTANCE',SYSDATE);
36674    END IF;
36675 
36676    IF l_unlock_root.COUNT>0
36677    THEN
36678       csi_gen_utility_pvt.put_line('Before calling unlock_tbl_handler in config root mode. ');
36679 
36680      FOR i IN l_unlock_root.FIRST .. l_unlock_root.LAST
36681      LOOP
36682         IF l_unlock_root.EXISTS(i)
36683         THEN
36684          IF l_unlock_root(i).lock_status=0
36685          THEN
36686            SELECT COUNT(*)
36687              INTO l_config_ctr
36688              FROM csi_item_instance_locks
36689             WHERE root_config_inst_hdr_id =l_unlock_root(i).config_inst_hdr_id
36690               AND root_config_inst_item_id = l_unlock_root(i).config_inst_item_id
36691               AND root_config_inst_rev_num = l_unlock_root(i).config_inst_rev_num
36692               AND lock_id = l_unlock_root(i).lock_id
36693               AND lock_status IN (1,2);
36694            IF l_config_ctr >1  -- this includes root
36695            THEN
36696               FND_MESSAGE.SET_NAME('CSI','CSI_INVALID_CONF_STATUS');
36697               FND_MESSAGE.SET_TOKEN('CONFIG_INST_HDR_ID',l_unlock_root(i).config_inst_hdr_id);
36698               FND_MESSAGE.SET_TOKEN('CONFIG_INST_ITEM_ID',l_unlock_root(i).config_inst_item_id);
36699               FND_MESSAGE.SET_TOKEN('CONFIG_INST_REV_NUM',l_unlock_root(i).config_inst_rev_num);
36700               FND_MSG_PUB.Add;
36701               RAISE FND_API.G_EXC_ERROR;
36702            END IF;
36703          END IF;
36704         END IF;
36705      END LOOP;
36706 
36707      unlock_tbl_handler (l_unlock_root,'CONFIG',SYSDATE);
36708 
36709    END IF;
36710 
36711         IF FND_API.To_Boolean( p_commit ) THEN
36712             COMMIT WORK;
36713         END IF;
36714 
36715         -- Standard call to get message count and if count is  get message info.
36716         FND_MSG_PUB.Count_And_Get
36717                 (p_encoded => FND_API.G_FALSE,
36718                  p_count        =>      x_msg_count ,
36719                  p_data         =>      x_msg_data   );
36720 
36721              csi_gen_utility_pvt.put_line('Reached to the end of csi_unlock_item_instance procedure.');
36722 
36723 EXCEPTION
36724         WHEN FND_API.G_EXC_ERROR THEN
36725                 ROLLBACK TO csi_unlock_item_instance;
36726                 x_return_status := FND_API.G_RET_STS_ERROR ;
36727                 FND_MSG_PUB.Count_And_Get
36728                 (       p_encoded => FND_API.G_FALSE,
36729                  p_count   =>      x_msg_count,
36730                         p_data    =>      x_msg_data    );
36731         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
36732                 ROLLBACK TO csi_unlock_item_instance;
36733                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
36734                 FND_MSG_PUB.Count_And_Get
36735                 ( p_encoded => FND_API.G_FALSE,
36736                  p_count     =>      x_msg_count,
36737                   p_data      =>      x_msg_data  );
36738         WHEN OTHERS THEN
36739                 ROLLBACK TO csi_unlock_item_instance;
36740                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
36741                 IF FND_MSG_PUB.Check_Msg_Level
36742                      (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
36743                 THEN
36744                    FND_MSG_PUB.Add_Exc_Msg
36745                     ( g_pkg_name, l_api_name );
36746                 END IF;
36747                 FND_MSG_PUB.Count_And_Get
36748                 (  p_encoded => FND_API.G_FALSE,
36749                  p_count   =>      x_msg_count,
36750                    p_data    =>      x_msg_data   );
36751 END unlock_item_instances;
36752 
36753 
36754 END CSI_ITEM_INSTANCE_PVT;