[Home] [Help]
PACKAGE BODY: APPS.CSI_DIAGNOSTICS_PKG
Source
1 PACKAGE BODY csi_diagnostics_pkg as
2 /* $Header: csidiagb.pls 120.18 2007/10/24 00:34:50 lakmohan ship $ */
3
4 g_no_lot constant number := 1;
5 g_lot constant number := 2;
6
7 CURSOR error_cur is
8 SELECT /*+ parallel(cte) */
9 cte.inv_material_transaction_id mtl_txn_id,
10 cte.transaction_error_id txn_error_id
11 FROM csi_txn_errors cte
12 WHERE cte.processed_flag in ('E', 'R')
13 AND cte.inv_material_transaction_id is not null;
14
15 -- this CURSOR returns the serial numbers that are in the transaction
16 CURSOR srl_cur(
17 p_mtl_txn_id in number)
18 IS
19 SELECT mut.serial_number serial_number,
20 mut.inventory_item_id item_id,
21 mut.organization_id organization_id
22 FROM mtl_unit_transactions mut
23 WHERE mut.transaction_id = p_mtl_txn_id
24 UNION
25 SELECT mut.serial_number serial_number,
26 mut.inventory_item_id item_id,
27 mut.organization_id organization_id
28 FROM mtl_transaction_lot_numbers mtln,
29 mtl_unit_transactions mut
30 WHERE mtln.transaction_id = p_mtl_txn_id
31 AND mut.transaction_id = mtln.serial_transaction_id;
32
33 CURSOR all_txn_cur(
34 p_serial_number in varchar2,
35 p_item_id in number)
36 IS
37 SELECT mmt.creation_date mtl_creation_date,
38 mmt.transaction_id mtl_txn_id,
39 mmt.transaction_date mtl_txn_date,
40 mmt.inventory_item_id item_id,
41 mmt.organization_id organization_id,
42 mmt.transaction_type_id mtl_type_id,
43 mtt.transaction_type_name mtl_txn_name,
44 mmt.transaction_action_id mtl_action_id,
45 mmt.transaction_source_type_id mtl_source_type_id,
46 mmt.transaction_source_id mtl_source_id,
47 mmt.trx_source_line_id mtl_source_line_id,
48 mmt.transaction_quantity mtl_txn_qty,
49 mtt.type_class mtl_type_class,
50 mmt.transfer_transaction_id mtl_xfer_txn_id,
51 mmt.revision mtl_revision,
52 to_char(null) lot_number,
53 to_char(mmt.transaction_date,'dd-mm-yy hh24:mi:ss') mtl_txn_char_date
54 FROM mtl_unit_transactions mut,
55 mtl_material_transactions mmt,
56 mtl_transaction_types mtt
57 WHERE mut.serial_number = p_serial_number
58 AND mut.inventory_item_id = p_item_id
59 AND mmt.transaction_id = mut.transaction_id
60 AND mtt.transaction_type_id = mmt.transaction_type_id
61 UNION
62 SELECT mmt.creation_date mtl_creation_date,
63 mmt.transaction_id mtl_txn_id,
64 mmt.transaction_date mtl_txn_date,
65 mmt.inventory_item_id item_id,
66 mmt.organization_id organization_id,
67 mmt.transaction_type_id mtl_type_id,
68 mtt.transaction_type_name mtl_txn_name,
69 mmt.transaction_action_id mtl_action_id,
70 mmt.transaction_source_type_id mtl_source_type_id,
71 mmt.transaction_source_id mtl_source_id,
72 mmt.trx_source_line_id mtl_source_line_id,
73 mmt.transaction_quantity mtl_txn_qty,
74 mtt.type_class mtl_type_class,
75 mmt.transfer_transaction_id mtl_xfer_txn_id,
76 mmt.revision mtl_revision,
77 mtln.lot_number lot_number,
78 to_char(mmt.transaction_date,'dd-mm-yy hh24:mi:ss') mtl_txn_char_date
79 FROM mtl_unit_transactions mut,
80 mtl_transaction_lot_numbers mtln,
81 mtl_material_transactions mmt,
82 mtl_transaction_types mtt
83 WHERE mut.serial_number = p_serial_number
84 AND mut.inventory_item_id = p_item_id
85 AND mtln.organization_id = mut.organization_id
86 AND mtln.transaction_date = mut.transaction_date
87 AND mtln.serial_transaction_id = mut.transaction_id
88 AND mmt.transaction_id = mtln.transaction_id
89 AND mtt.transaction_type_id = mmt.transaction_type_id
90 ORDER BY 1 desc, 2 desc;
91
92 CURSOR inv_cur(p_mtl_txn_id in number) IS
93 SELECT mmt.inventory_item_id item_id,
94 mmt.organization_id organization_id,
95 mmt.transfer_organization_id xfer_organization_id,
96 mmt.subinventory_code subinv_code,
97 mmt.locator_id locator_id,
98 mmt.revision revision,
99 abs(mmt.primary_quantity) quantity,
100 mmt.transaction_date mtl_txn_date,
101 mmt.transaction_id mtl_txn_id,
102 mmt.transaction_action_id mtl_action_id,
103 mmt.trx_source_line_id trx_source_line_id,
104 mmt.transaction_source_id mtl_source_id,
105 mmt.source_project_id source_project_id,
106 mmt.source_task_id source_task_id
107 FROM mtl_material_transactions mmt
108 WHERE mmt.transaction_id = p_mtl_txn_id;
109
110 CURSOR from_sixfer_cur(
111 p_mtl_txn_id in number,
112 p_mtl_xfer_txn_id in number)
113 IS
114 SELECT mmt.inventory_item_id item_id,
115 mmt.organization_id organization_id,
116 mmt.subinventory_code subinv_code,
117 mmt.locator_id locator_id,
118 mmt.revision revision,
119 to_char(null) lot_number,
120 abs(mmt.primary_quantity) quantity,
121 mmt.transaction_date mtl_txn_date,
122 mmt.transaction_id mtl_txn_id,
123 mmt.trx_source_line_id trx_source_line_id
124 FROM mtl_material_transactions mmt
125 WHERE (mmt.transaction_id = p_mtl_txn_id
126 OR
127 mmt.transaction_id = p_mtl_xfer_txn_id)
128 AND mmt.transaction_quantity < 0
129 UNION
130 SELECT mmt.inventory_item_id item_id,
131 mmt.organization_id organization_id,
132 mmt.subinventory_code subinv_code,
133 mmt.locator_id locator_id,
134 mmt.revision revision,
135 mtln.lot_number lot_number,
136 abs(mtln.primary_quantity) quantity,
137 mmt.transaction_date mtl_txn_date,
138 mmt.transaction_id mtl_txn_id,
139 mmt.trx_source_line_id trx_source_line_id
140 FROM mtl_material_transactions mmt,
141 mtl_transaction_lot_numbers mtln
142 WHERE (mmt.transaction_id = p_mtl_txn_id
143 OR
144 mmt.transaction_id = p_mtl_xfer_txn_id)
145 AND mmt.transaction_quantity < 0
146 AND mtln.transaction_id = mmt.transaction_id;
147
148 --
149 PROCEDURE log(
150 p_message in varchar2)
151 IS
152 BEGIN
153
154 fnd_file.put_line(fnd_file.log, p_message);
155
156 csi_t_gen_utility_pvt.g_debug_level := 10;
157
158 csi_t_gen_utility_pvt.build_file_name(
159 p_file_segment1 => 'csisynclog',
160 p_file_segment2 => to_char(sysdate, 'mmddyy'));
161
162 csi_t_gen_utility_pvt.add(p_message);
163
164 csi_t_gen_utility_pvt.g_debug_level := 0;
165
166 END log;
167
168 --
169 PROCEDURE out(
170 p_message in varchar2)
171 IS
172 BEGIN
173
174 fnd_file.put_line(fnd_file.output, p_message);
175
176 csi_t_gen_utility_pvt.g_debug_level := 10;
177
178 csi_t_gen_utility_pvt.build_file_name(
179 p_file_segment1 => 'csisyncout',
180 p_file_segment2 => to_char(sysdate, 'mmddyy'));
181
182 csi_t_gen_utility_pvt.add(p_message);
183
184 csi_t_gen_utility_pvt.g_debug_level := 0;
185
186 END out;
187
188 --
189 FUNCTION date_time_stamp RETURN varchar2
190 IS
191 l_date_time_stamp varchar2(30);
192 BEGIN
193
194 SELECT to_char(sysdate,'DD-MON-YYYY HH24:MI:SS : ')
195 INTO l_date_time_stamp
196 FROM sys.dual;
197
198 RETURN l_date_time_stamp;
199 END date_time_stamp;
200
201 --
202 PROCEDURE debug_off IS
203 BEGIN
204 fnd_profile.put('CSI_DEBUG_LEVEL',0);
205 fnd_profile.put('CSE_DEBUG_OPTION','N');
206 fnd_profile.put('OKS_DEBUG','N');
207 csi_t_gen_utility_pvt.g_debug_level := 0;
208 END debug_off;
209
210 --
211 PROCEDURE stack_message(
212 p_message in varchar2)
213 IS
214 BEGIN
215 fnd_msg_pub.initialize;
216 fnd_message.set_name('FND','FND_GENERIC_MESSAGE');
217 fnd_message.set_token('MESSAGE',p_message);
218 fnd_msg_pub.add;
219 END stack_message;
220 --
221 PROCEDURE Update_Lookup(p_routine_name in varchar2) IS
222 l_type VARCHAR2(30) := 'CSI_CORRECTION_ROUTINES';
223 BEGIN
224 UPDATE FND_LOOKUP_VALUES
225 SET enabled_flag = 'N',
226 last_updated_by = -1,
227 last_update_date = sysdate
228 WHERE lookup_type = l_type
229 AND lookup_code = p_routine_name;
230 END Update_Lookup;
231 --
232 FUNCTION correction_txn_type_id RETURN NUMBER
233 IS
234 l_txn_type_id number;
235 BEGIN
236
237 BEGIN
238 SELECT transaction_type_id
239 INTO l_txn_type_id
240 FROM csi_txn_types
241 WHERE source_transaction_type = 'DATA_CORRECTION';
242 EXCEPTION
243 WHEN no_data_found THEN
244 l_txn_type_id := 2;
245 END;
246
247 RETURN l_txn_type_id;
248
249 END correction_txn_type_id;
250
251 PROCEDURE get_lot_number(
252 p_lot_code IN number,
253 p_mtl_txn_id IN number,
254 p_serial_number IN varchar2,
255 x_lot_number OUT nocopy varchar2)
256 IS
257 CURSOR lot_cur(cp_mtl_txn_id IN number, cp_serial_number IN varchar2) IS
258 SELECT mtln.lot_number
259 FROM mtl_transaction_lot_numbers mtln,
260 mtl_unit_transactions mut
261 WHERE mtln.transaction_id = cp_mtl_txn_id
262 AND mut.transaction_id = mtln.serial_transaction_id
263 AND mut.serial_number = cp_serial_number;
264 BEGIN
265
266 IF p_lot_code = 1 THEN
267 x_lot_number := fnd_api.g_miss_char;
268 END IF;
269
270 IF p_lot_code = 2 THEN
271 x_lot_number := fnd_api.g_miss_char;
272 FOR lot_rec IN lot_cur(p_mtl_txn_id, p_serial_number)
273 LOOP
274 x_lot_number := lot_rec.lot_number;
275 END LOOP;
276 END IF;
277
278 END get_lot_number;
279
280 --
281 PROCEDURE Build_Inst_Rec_of_Table
282 (
283 p_inst_tbl IN csi_datastructures_pub.instance_tbl
284 ,p_inst_rec_tab IN OUT NOCOPY csi_diagnostics_pkg.instance_rec_tab
285 ,p_inst_hist_tbl IN OUT NOCOPY csi_diagnostics_pkg.T_NUM
286 ) IS
287 BEGIN
288 FOR i in p_inst_tbl.FIRST .. p_inst_tbl.LAST LOOP
289 select CSI_ITEM_INSTANCES_H_S.nextval
290 into p_inst_hist_tbl(i) from dual;
291 --
292 p_inst_rec_tab.INSTANCE_ID(i) := p_inst_tbl(i).INSTANCE_ID;
293 p_inst_rec_tab.INSTANCE_NUMBER(i) := p_inst_tbl(i).INSTANCE_NUMBER;
294 p_inst_rec_tab.EXTERNAL_REFERENCE(i) := p_inst_tbl(i).EXTERNAL_REFERENCE;
295 p_inst_rec_tab.INVENTORY_ITEM_ID(i) := p_inst_tbl(i).INVENTORY_ITEM_ID;
296 p_inst_rec_tab.VLD_ORGANIZATION_ID(i) := p_inst_tbl(i).VLD_ORGANIZATION_ID;
297 p_inst_rec_tab.INVENTORY_REVISION(i) := p_inst_tbl(i).INVENTORY_REVISION;
298 p_inst_rec_tab.INV_MASTER_ORGANIZATION_ID(i) := p_inst_tbl(i).INV_MASTER_ORGANIZATION_ID;
299 p_inst_rec_tab.SERIAL_NUMBER(i) := p_inst_tbl(i).SERIAL_NUMBER;
300 p_inst_rec_tab.MFG_SERIAL_NUMBER_FLAG(i) := p_inst_tbl(i).MFG_SERIAL_NUMBER_FLAG;
301 p_inst_rec_tab.LOT_NUMBER(i) := p_inst_tbl(i).LOT_NUMBER;
302 p_inst_rec_tab.QUANTITY(i) := p_inst_tbl(i).QUANTITY;
303 p_inst_rec_tab.UNIT_OF_MEASURE(i) := p_inst_tbl(i).UNIT_OF_MEASURE;
304 p_inst_rec_tab.ACCOUNTING_CLASS_CODE(i) := p_inst_tbl(i).ACCOUNTING_CLASS_CODE;
305 p_inst_rec_tab.INSTANCE_CONDITION_ID(i) := p_inst_tbl(i).INSTANCE_CONDITION_ID;
306 p_inst_rec_tab.INSTANCE_STATUS_ID(i) := p_inst_tbl(i).INSTANCE_STATUS_ID;
307 p_inst_rec_tab.CUSTOMER_VIEW_FLAG(i) := p_inst_tbl(i).CUSTOMER_VIEW_FLAG;
308 p_inst_rec_tab.MERCHANT_VIEW_FLAG(i) := p_inst_tbl(i).MERCHANT_VIEW_FLAG;
309 p_inst_rec_tab.SELLABLE_FLAG(i) := p_inst_tbl(i).SELLABLE_FLAG;
310 p_inst_rec_tab.SYSTEM_ID(i) := p_inst_tbl(i).SYSTEM_ID;
311 p_inst_rec_tab.INSTANCE_TYPE_CODE(i) := p_inst_tbl(i).INSTANCE_TYPE_CODE;
312 p_inst_rec_tab.ACTIVE_START_DATE(i) := p_inst_tbl(i).ACTIVE_START_DATE;
313 p_inst_rec_tab.ACTIVE_END_DATE(i) := p_inst_tbl(i).ACTIVE_END_DATE;
314 p_inst_rec_tab.LOCATION_TYPE_CODE(i) := p_inst_tbl(i).LOCATION_TYPE_CODE;
315 p_inst_rec_tab.LOCATION_ID(i) := p_inst_tbl(i).LOCATION_ID;
319 p_inst_rec_tab.PA_PROJECT_ID(i) := p_inst_tbl(i).PA_PROJECT_ID;
316 p_inst_rec_tab.INV_ORGANIZATION_ID(i) := p_inst_tbl(i).INV_ORGANIZATION_ID;
317 p_inst_rec_tab.INV_SUBINVENTORY_NAME(i) := p_inst_tbl(i).INV_SUBINVENTORY_NAME;
318 p_inst_rec_tab.INV_LOCATOR_ID(i) := p_inst_tbl(i).INV_LOCATOR_ID;
320 p_inst_rec_tab.PA_PROJECT_TASK_ID(i) := p_inst_tbl(i).PA_PROJECT_TASK_ID;
321 p_inst_rec_tab.IN_TRANSIT_ORDER_LINE_ID(i) := p_inst_tbl(i).IN_TRANSIT_ORDER_LINE_ID;
322 p_inst_rec_tab.WIP_JOB_ID(i) := p_inst_tbl(i).WIP_JOB_ID;
323 p_inst_rec_tab.PO_ORDER_LINE_ID(i) := p_inst_tbl(i).PO_ORDER_LINE_ID;
324 p_inst_rec_tab.LAST_OE_ORDER_LINE_ID(i) := p_inst_tbl(i).LAST_OE_ORDER_LINE_ID;
325 p_inst_rec_tab.LAST_OE_RMA_LINE_ID(i) := p_inst_tbl(i).LAST_OE_RMA_LINE_ID;
326 p_inst_rec_tab.LAST_PO_PO_LINE_ID(i) := p_inst_tbl(i).LAST_PO_PO_LINE_ID;
327 p_inst_rec_tab.LAST_OE_PO_NUMBER(i) := p_inst_tbl(i).LAST_OE_PO_NUMBER;
328 p_inst_rec_tab.LAST_WIP_JOB_ID(i) := p_inst_tbl(i).LAST_WIP_JOB_ID;
329 p_inst_rec_tab.LAST_PA_PROJECT_ID(i) := p_inst_tbl(i).LAST_PA_PROJECT_ID;
330 p_inst_rec_tab.LAST_PA_TASK_ID(i) := p_inst_tbl(i).LAST_PA_TASK_ID;
331 p_inst_rec_tab.LAST_OE_AGREEMENT_ID(i) := p_inst_tbl(i).LAST_OE_AGREEMENT_ID;
332 p_inst_rec_tab.INSTALL_DATE(i) := p_inst_tbl(i).INSTALL_DATE;
333 p_inst_rec_tab.MANUALLY_CREATED_FLAG(i) := p_inst_tbl(i).MANUALLY_CREATED_FLAG;
334 p_inst_rec_tab.RETURN_BY_DATE(i) := p_inst_tbl(i).RETURN_BY_DATE;
335 p_inst_rec_tab.ACTUAL_RETURN_DATE(i) := p_inst_tbl(i).ACTUAL_RETURN_DATE;
336 p_inst_rec_tab.CREATION_COMPLETE_FLAG(i) := p_inst_tbl(i).CREATION_COMPLETE_FLAG;
337 p_inst_rec_tab.COMPLETENESS_FLAG(i) := p_inst_tbl(i).COMPLETENESS_FLAG;
338 p_inst_rec_tab.VERSION_LABEL(i) := p_inst_tbl(i).VERSION_LABEL;
339 p_inst_rec_tab.VERSION_LABEL_DESCRIPTION(i) := p_inst_tbl(i).VERSION_LABEL_DESCRIPTION;
340 p_inst_rec_tab.CONTEXT(i) := p_inst_tbl(i).CONTEXT;
341 p_inst_rec_tab.ATTRIBUTE1(i) := p_inst_tbl(i).ATTRIBUTE1;
342 p_inst_rec_tab.ATTRIBUTE2(i) := p_inst_tbl(i).ATTRIBUTE2;
343 p_inst_rec_tab.ATTRIBUTE3(i) := p_inst_tbl(i).ATTRIBUTE3;
344 p_inst_rec_tab.ATTRIBUTE4(i) := p_inst_tbl(i).ATTRIBUTE4;
345 p_inst_rec_tab.ATTRIBUTE5(i) := p_inst_tbl(i).ATTRIBUTE5;
346 p_inst_rec_tab.ATTRIBUTE6(i) := p_inst_tbl(i).ATTRIBUTE6;
347 p_inst_rec_tab.ATTRIBUTE7(i) := p_inst_tbl(i).ATTRIBUTE7;
348 p_inst_rec_tab.ATTRIBUTE8(i) := p_inst_tbl(i).ATTRIBUTE8;
349 p_inst_rec_tab.ATTRIBUTE9(i) := p_inst_tbl(i).ATTRIBUTE9;
350 p_inst_rec_tab.ATTRIBUTE10(i) := p_inst_tbl(i).ATTRIBUTE10;
351 p_inst_rec_tab.ATTRIBUTE11(i) := p_inst_tbl(i).ATTRIBUTE11;
352 p_inst_rec_tab.ATTRIBUTE12(i) := p_inst_tbl(i).ATTRIBUTE12;
353 p_inst_rec_tab.ATTRIBUTE13(i) := p_inst_tbl(i).ATTRIBUTE13;
354 p_inst_rec_tab.ATTRIBUTE14(i) := p_inst_tbl(i).ATTRIBUTE14;
355 p_inst_rec_tab.ATTRIBUTE15(i) := p_inst_tbl(i).ATTRIBUTE15;
356 p_inst_rec_tab.OBJECT_VERSION_NUMBER(i) := p_inst_tbl(i).OBJECT_VERSION_NUMBER;
357 p_inst_rec_tab.LAST_TXN_LINE_DETAIL_ID(i) := p_inst_tbl(i).LAST_TXN_LINE_DETAIL_ID;
358 p_inst_rec_tab.INSTALL_LOCATION_TYPE_CODE(i) := p_inst_tbl(i).INSTALL_LOCATION_TYPE_CODE;
359 p_inst_rec_tab.INSTALL_LOCATION_ID(i) := p_inst_tbl(i).INSTALL_LOCATION_ID;
360 p_inst_rec_tab.INSTANCE_USAGE_CODE(i) := p_inst_tbl(i).INSTANCE_USAGE_CODE;
361 p_inst_rec_tab.CONFIG_INST_HDR_ID(i) := p_inst_tbl(i).CONFIG_INST_HDR_ID;
362 p_inst_rec_tab.CONFIG_INST_REV_NUM(i) := p_inst_tbl(i).CONFIG_INST_REV_NUM;
363 p_inst_rec_tab.CONFIG_INST_ITEM_ID(i) := p_inst_tbl(i).CONFIG_INST_ITEM_ID;
364 p_inst_rec_tab.CONFIG_VALID_STATUS(i) := p_inst_tbl(i).CONFIG_VALID_STATUS;
365 p_inst_rec_tab.INSTANCE_DESCRIPTION(i) := p_inst_tbl(i).INSTANCE_DESCRIPTION;
366 END LOOP;
367 END Build_Inst_Rec_of_Table;
368 --
369 PROCEDURE Build_Rel_Rec_of_Table
370 (
371 p_ii_relationship_tbl IN csi_datastructures_pub.ii_relationship_tbl
372 ,p_ii_relationship_rec_tab IN OUT NOCOPY csi_diagnostics_pkg.ii_relationship_rec_tab
373 ,p_rel_hist_tbl IN OUT NOCOPY csi_diagnostics_pkg.T_NUM
374 ) IS
375 BEGIN
376 FOR i in p_ii_relationship_tbl.FIRST .. p_ii_relationship_tbl.LAST LOOP
377 select CSI_II_RELATIONSHIPS_H_S.nextval
378 into p_rel_hist_tbl(i) from dual;
379 --
380 p_ii_relationship_rec_tab.RELATIONSHIP_ID(i) := p_ii_relationship_tbl(i).RELATIONSHIP_ID;
381 p_ii_relationship_rec_tab.RELATIONSHIP_TYPE_CODE(i) := p_ii_relationship_tbl(i).RELATIONSHIP_TYPE_CODE;
382 p_ii_relationship_rec_tab.OBJECT_ID(i) := p_ii_relationship_tbl(i).OBJECT_ID;
383 p_ii_relationship_rec_tab.SUBJECT_ID(i) := p_ii_relationship_tbl(i).SUBJECT_ID;
384 p_ii_relationship_rec_tab.SUBJECT_HAS_CHILD(i) := p_ii_relationship_tbl(i).SUBJECT_HAS_CHILD;
385 p_ii_relationship_rec_tab.POSITION_REFERENCE(i) := p_ii_relationship_tbl(i).POSITION_REFERENCE;
386 p_ii_relationship_rec_tab.ACTIVE_START_DATE(i) := p_ii_relationship_tbl(i).ACTIVE_START_DATE;
387 p_ii_relationship_rec_tab.ACTIVE_END_DATE(i) := p_ii_relationship_tbl(i).ACTIVE_END_DATE;
388 p_ii_relationship_rec_tab.DISPLAY_ORDER(i) := p_ii_relationship_tbl(i).DISPLAY_ORDER;
389 p_ii_relationship_rec_tab.MANDATORY_FLAG(i) := p_ii_relationship_tbl(i).MANDATORY_FLAG;
390 p_ii_relationship_rec_tab.CONTEXT(i) := p_ii_relationship_tbl(i).CONTEXT;
391 p_ii_relationship_rec_tab.ATTRIBUTE1(i) := p_ii_relationship_tbl(i).ATTRIBUTE1;
392 p_ii_relationship_rec_tab.ATTRIBUTE2(i) := p_ii_relationship_tbl(i).ATTRIBUTE2;
396 p_ii_relationship_rec_tab.ATTRIBUTE6(i) := p_ii_relationship_tbl(i).ATTRIBUTE6;
393 p_ii_relationship_rec_tab.ATTRIBUTE3(i) := p_ii_relationship_tbl(i).ATTRIBUTE3;
394 p_ii_relationship_rec_tab.ATTRIBUTE4(i) := p_ii_relationship_tbl(i).ATTRIBUTE4;
395 p_ii_relationship_rec_tab.ATTRIBUTE5(i) := p_ii_relationship_tbl(i).ATTRIBUTE5;
397 p_ii_relationship_rec_tab.ATTRIBUTE7(i) := p_ii_relationship_tbl(i).ATTRIBUTE7;
398 p_ii_relationship_rec_tab.ATTRIBUTE8(i) := p_ii_relationship_tbl(i).ATTRIBUTE8;
399 p_ii_relationship_rec_tab.ATTRIBUTE9(i) := p_ii_relationship_tbl(i).ATTRIBUTE9;
400 p_ii_relationship_rec_tab.ATTRIBUTE10(i) := p_ii_relationship_tbl(i).ATTRIBUTE10;
401 p_ii_relationship_rec_tab.ATTRIBUTE11(i) := p_ii_relationship_tbl(i).ATTRIBUTE11;
402 p_ii_relationship_rec_tab.ATTRIBUTE12(i) := p_ii_relationship_tbl(i).ATTRIBUTE12;
403 p_ii_relationship_rec_tab.ATTRIBUTE13(i) := p_ii_relationship_tbl(i).ATTRIBUTE13;
404 p_ii_relationship_rec_tab.ATTRIBUTE14(i) := p_ii_relationship_tbl(i).ATTRIBUTE14;
405 p_ii_relationship_rec_tab.ATTRIBUTE15(i) := p_ii_relationship_tbl(i).ATTRIBUTE15;
406 p_ii_relationship_rec_tab.OBJECT_VERSION_NUMBER(i) := p_ii_relationship_tbl(i).OBJECT_VERSION_NUMBER;
407 END LOOP;
408 END Build_Rel_Rec_of_Table;
409 --
410 PROCEDURE Build_Ver_Label_Rec_of_Table
411 (
412 p_version_label_tbl IN csi_datastructures_pub.version_label_tbl
413 ,p_version_label_rec_tab IN OUT NOCOPY csi_diagnostics_pkg.version_label_rec_tab
414 ,p_ver_label_hist_tbl IN OUT NOCOPY csi_diagnostics_pkg.T_NUM
415 ) IS
416 BEGIN
417 FOR i in p_version_label_tbl.FIRST .. p_version_label_tbl.LAST LOOP
418 select CSI_I_VERSION_LABELS_H_S.nextval
419 into p_ver_label_hist_tbl(i) from dual;
420 --
421 p_version_label_rec_tab.version_label_id(i) := p_version_label_tbl(i).version_label_id;
422 p_version_label_rec_tab.instance_id(i) := p_version_label_tbl(i).instance_id;
423 p_version_label_rec_tab.version_label(i) := p_version_label_tbl(i).version_label;
424 p_version_label_rec_tab.description(i) := p_version_label_tbl(i).description;
425 p_version_label_rec_tab.date_time_stamp(i) := p_version_label_tbl(i).date_time_stamp;
426 p_version_label_rec_tab.active_start_date(i) := p_version_label_tbl(i).active_start_date;
427 p_version_label_rec_tab.active_end_date(i) := p_version_label_tbl(i).active_end_date;
428 p_version_label_rec_tab.context(i) := p_version_label_tbl(i).context;
429 p_version_label_rec_tab.attribute1(i) := p_version_label_tbl(i).attribute1;
430 p_version_label_rec_tab.attribute2(i) := p_version_label_tbl(i).attribute2;
431 p_version_label_rec_tab.attribute3(i) := p_version_label_tbl(i).attribute3;
432 p_version_label_rec_tab.attribute4(i) := p_version_label_tbl(i).attribute4;
433 p_version_label_rec_tab.attribute5(i) := p_version_label_tbl(i).attribute5;
434 p_version_label_rec_tab.attribute6(i) := p_version_label_tbl(i).attribute6;
435 p_version_label_rec_tab.attribute7(i) := p_version_label_tbl(i).attribute7;
436 p_version_label_rec_tab.attribute8(i) := p_version_label_tbl(i).attribute8;
437 p_version_label_rec_tab.attribute9(i) := p_version_label_tbl(i).attribute9;
438 p_version_label_rec_tab.attribute10(i) := p_version_label_tbl(i).attribute10;
439 p_version_label_rec_tab.attribute11(i) := p_version_label_tbl(i).attribute11;
440 p_version_label_rec_tab.attribute12(i) := p_version_label_tbl(i).attribute12;
441 p_version_label_rec_tab.attribute13(i) := p_version_label_tbl(i).attribute13;
442 p_version_label_rec_tab.attribute14(i) := p_version_label_tbl(i).attribute14;
443 p_version_label_rec_tab.attribute15(i) := p_version_label_tbl(i).attribute15;
444 p_version_label_rec_tab.object_version_number(i) := p_version_label_tbl(i).object_version_number;
445 END LOOP;
446 END Build_Ver_Label_Rec_of_Table;
447 --
448 PROCEDURE Build_Party_Rec_of_Table
449 ( p_party_tbl IN csi_datastructures_pub.party_tbl
450 ,p_party_rec_tab IN OUT NOCOPY csi_diagnostics_pkg.party_rec_tab
451 ,p_party_hist_tbl IN OUT NOCOPY csi_diagnostics_pkg.T_NUM
452 ) IS
453 BEGIN
454 FOR i in p_party_tbl.FIRST .. p_party_tbl.LAST LOOP
455 select CSI_I_PARTIES_H_S.nextval
456 into p_party_hist_tbl(i) from dual;
457 --
458 p_party_rec_tab.instance_party_id(i) := p_party_tbl(i).instance_party_id;
459 p_party_rec_tab.instance_id(i) := p_party_tbl(i).instance_id;
460 p_party_rec_tab.party_source_table(i) := p_party_tbl(i).party_source_table;
461 p_party_rec_tab.party_id(i) := p_party_tbl(i).party_id;
462 p_party_rec_tab.relationship_type_code(i) := p_party_tbl(i).relationship_type_code;
463 p_party_rec_tab.contact_flag(i) := p_party_tbl(i).contact_flag;
464 p_party_rec_tab.contact_ip_id(i) := p_party_tbl(i).contact_ip_id;
465 p_party_rec_tab.active_start_date(i) := p_party_tbl(i).active_start_date;
466 p_party_rec_tab.active_end_date(i) := p_party_tbl(i).active_end_date;
467 p_party_rec_tab.context(i) := p_party_tbl(i).context;
468 p_party_rec_tab.attribute1(i) := p_party_tbl(i).attribute1;
469 p_party_rec_tab.attribute2(i) := p_party_tbl(i).attribute2;
470 p_party_rec_tab.attribute3(i) := p_party_tbl(i).attribute3;
471 p_party_rec_tab.attribute4(i) := p_party_tbl(i).attribute4;
472 p_party_rec_tab.attribute5(i) := p_party_tbl(i).attribute5;
473 p_party_rec_tab.attribute6(i) := p_party_tbl(i).attribute6;
474 p_party_rec_tab.attribute7(i) := p_party_tbl(i).attribute7;
475 p_party_rec_tab.attribute8(i) := p_party_tbl(i).attribute8;
479 p_party_rec_tab.attribute12(i) := p_party_tbl(i).attribute12;
476 p_party_rec_tab.attribute9(i) := p_party_tbl(i).attribute9;
477 p_party_rec_tab.attribute10(i) := p_party_tbl(i).attribute10;
478 p_party_rec_tab.attribute11(i) := p_party_tbl(i).attribute11;
480 p_party_rec_tab.attribute13(i) := p_party_tbl(i).attribute13;
481 p_party_rec_tab.attribute14(i) := p_party_tbl(i).attribute14;
482 p_party_rec_tab.attribute15(i) := p_party_tbl(i).attribute15;
483 p_party_rec_tab.object_version_number(i) := p_party_tbl(i).object_version_number;
484 p_party_rec_tab.primary_flag(i) := p_party_tbl(i).primary_flag;
485 p_party_rec_tab.preferred_flag(i) := p_party_tbl(i).preferred_flag;
486 END LOOP;
487 END Build_Party_Rec_of_Table;
488 --
489 PROCEDURE Build_Acct_Rec_of_Table
490 (
491 p_account_tbl IN csi_datastructures_pub.party_account_tbl
492 ,p_account_rec_tab IN OUT NOCOPY csi_diagnostics_pkg.account_rec_tab
493 ,p_account_hist_tbl IN OUT NOCOPY csi_diagnostics_pkg.T_NUM
494 ) IS
495 BEGIN
496 FOR i in p_account_tbl.FIRST .. p_account_tbl.LAST LOOP
497 select CSI_IP_ACCOUNTS_H_S.nextval
498 into p_account_hist_tbl(i) from dual;
499 --
500 p_account_rec_tab.ip_account_id(i) := p_account_tbl(i).ip_account_id;
501 p_account_rec_tab.parent_tbl_index(i) := p_account_tbl(i).parent_tbl_index;
502 p_account_rec_tab.instance_party_id(i) := p_account_tbl(i).instance_party_id;
503 p_account_rec_tab.party_account_id(i) := p_account_tbl(i).party_account_id;
504 p_account_rec_tab.relationship_type_code(i) := p_account_tbl(i).relationship_type_code;
505 p_account_rec_tab.bill_to_address(i) := p_account_tbl(i).bill_to_address;
506 p_account_rec_tab.ship_to_address(i) := p_account_tbl(i).ship_to_address;
507 p_account_rec_tab.active_start_date(i) := p_account_tbl(i).active_start_date;
508 p_account_rec_tab.active_end_date(i) := p_account_tbl(i).active_end_date;
509 p_account_rec_tab.context(i) := p_account_tbl(i).context;
510 p_account_rec_tab.attribute1(i) := p_account_tbl(i).attribute1;
511 p_account_rec_tab.attribute2(i) := p_account_tbl(i).attribute2;
512 p_account_rec_tab.attribute3(i) := p_account_tbl(i).attribute3;
513 p_account_rec_tab.attribute4(i) := p_account_tbl(i).attribute4;
514 p_account_rec_tab.attribute5(i) := p_account_tbl(i).attribute5;
515 p_account_rec_tab.attribute6(i) := p_account_tbl(i).attribute6;
516 p_account_rec_tab.attribute7(i) := p_account_tbl(i).attribute7;
517 p_account_rec_tab.attribute8(i) := p_account_tbl(i).attribute8;
518 p_account_rec_tab.attribute9(i) := p_account_tbl(i).attribute9;
519 p_account_rec_tab.attribute10(i) := p_account_tbl(i).attribute10;
520 p_account_rec_tab.attribute11(i) := p_account_tbl(i).attribute11;
521 p_account_rec_tab.attribute12(i) := p_account_tbl(i).attribute12;
522 p_account_rec_tab.attribute13(i) := p_account_tbl(i).attribute13;
523 p_account_rec_tab.attribute14(i) := p_account_tbl(i).attribute14;
524 p_account_rec_tab.attribute15(i) := p_account_tbl(i).attribute15;
525 p_account_rec_tab.object_version_number(i) := p_account_tbl(i).object_version_number;
526 p_account_rec_tab.call_contracts(i) := p_account_tbl(i).call_contracts;
527 p_account_rec_tab.vld_organization_id(i) := p_account_tbl(i).vld_organization_id;
528 p_account_rec_tab.expire_flag(i) := p_account_tbl(i).expire_flag;
529 END LOOP;
530 END Build_Acct_Rec_of_Table;
531 --
532 PROCEDURE Build_Org_Rec_of_Table
533 (
534 p_org_tbl IN csi_datastructures_pub.organization_units_tbl
535 ,p_org_units_rec_tab IN OUT NOCOPY csi_diagnostics_pkg.org_units_rec_tab
536 ,p_org_hist_tbl IN OUT NOCOPY csi_diagnostics_pkg.T_NUM
537 ) IS
538 BEGIN
539 FOR i in p_org_tbl.FIRST .. p_org_tbl.LAST LOOP
540 select CSI_I_ORG_ASSIGNMENTS_H_S.nextval
541 into p_org_hist_tbl(i) from dual;
542 --
543 p_org_units_rec_tab.instance_ou_id(i) := p_org_tbl(i).instance_ou_id;
544 p_org_units_rec_tab.instance_id(i) := p_org_tbl(i).instance_id;
545 p_org_units_rec_tab.operating_unit_id(i) := p_org_tbl(i).operating_unit_id;
546 p_org_units_rec_tab.relationship_type_code(i) := p_org_tbl(i).relationship_type_code;
547 p_org_units_rec_tab.active_start_date(i) := p_org_tbl(i).active_start_date;
548 p_org_units_rec_tab.active_end_date(i) := p_org_tbl(i).active_end_date;
549 p_org_units_rec_tab.context(i) := p_org_tbl(i).context;
550 p_org_units_rec_tab.attribute1(i) := p_org_tbl(i).attribute1;
551 p_org_units_rec_tab.attribute2(i) := p_org_tbl(i).attribute2;
552 p_org_units_rec_tab.attribute3(i) := p_org_tbl(i).attribute3;
553 p_org_units_rec_tab.attribute4(i) := p_org_tbl(i).attribute4;
554 p_org_units_rec_tab.attribute5(i) := p_org_tbl(i).attribute5;
555 p_org_units_rec_tab.attribute6(i) := p_org_tbl(i).attribute6;
556 p_org_units_rec_tab.attribute7(i) := p_org_tbl(i).attribute7;
557 p_org_units_rec_tab.attribute8(i) := p_org_tbl(i).attribute8;
558 p_org_units_rec_tab.attribute9(i) := p_org_tbl(i).attribute9;
559 p_org_units_rec_tab.attribute10(i) := p_org_tbl(i).attribute10;
560 p_org_units_rec_tab.attribute11(i) := p_org_tbl(i).attribute11;
561 p_org_units_rec_tab.attribute12(i) := p_org_tbl(i).attribute12;
565 p_org_units_rec_tab.object_version_number(i) := p_org_tbl(i).object_version_number;
562 p_org_units_rec_tab.attribute13(i) := p_org_tbl(i).attribute13;
563 p_org_units_rec_tab.attribute14(i) := p_org_tbl(i).attribute14;
564 p_org_units_rec_tab.attribute15(i) := p_org_tbl(i).attribute15;
566 END LOOP;
567 END Build_Org_Rec_of_Table;
568 --
569 PROCEDURE Build_pricing_Rec_of_Table
570 (
571 p_pricing_tbl IN csi_datastructures_pub.pricing_attribs_tbl
572 ,p_pricing_rec_tab IN OUT NOCOPY csi_diagnostics_pkg.pricing_attribs_rec_tab
573 ,p_pricing_hist_tbl IN OUT NOCOPY csi_diagnostics_pkg.T_NUM
574 ) IS
575 BEGIN
576 FOR i in p_pricing_tbl.FIRST .. p_pricing_tbl.LAST LOOP
577 select CSI_I_PRICING_ATTRIBS_H_S.nextval
578 into p_pricing_hist_tbl(i) from dual;
579 --
580 p_pricing_rec_tab.pricing_attribute_id(i) := p_pricing_tbl(i).pricing_attribute_id;
581 p_pricing_rec_tab.instance_id(i) := p_pricing_tbl(i).instance_id;
582 p_pricing_rec_tab.active_start_date(i) := p_pricing_tbl(i).active_start_date;
583 p_pricing_rec_tab.active_end_date(i) := p_pricing_tbl(i).active_end_date;
584 p_pricing_rec_tab.pricing_context(i) := p_pricing_tbl(i).pricing_context;
585 p_pricing_rec_tab.pricing_attribute1(i) := p_pricing_tbl(i).pricing_attribute1;
586 p_pricing_rec_tab.pricing_attribute2(i) := p_pricing_tbl(i).pricing_attribute2;
587 p_pricing_rec_tab.pricing_attribute3(i) := p_pricing_tbl(i).pricing_attribute3;
588 p_pricing_rec_tab.pricing_attribute4(i) := p_pricing_tbl(i).pricing_attribute4;
589 p_pricing_rec_tab.pricing_attribute5(i) := p_pricing_tbl(i).pricing_attribute5;
590 p_pricing_rec_tab.pricing_attribute6(i) := p_pricing_tbl(i).pricing_attribute6;
591 p_pricing_rec_tab.pricing_attribute7(i) := p_pricing_tbl(i).pricing_attribute7;
592 p_pricing_rec_tab.pricing_attribute8(i) := p_pricing_tbl(i).pricing_attribute8;
593 p_pricing_rec_tab.pricing_attribute9(i) := p_pricing_tbl(i).pricing_attribute9;
594 p_pricing_rec_tab.pricing_attribute10(i) := p_pricing_tbl(i).pricing_attribute10;
595 p_pricing_rec_tab.pricing_attribute11(i) := p_pricing_tbl(i).pricing_attribute11;
596 p_pricing_rec_tab.pricing_attribute12(i) := p_pricing_tbl(i).pricing_attribute12;
597 p_pricing_rec_tab.pricing_attribute13(i) := p_pricing_tbl(i).pricing_attribute13;
598 p_pricing_rec_tab.pricing_attribute14(i) := p_pricing_tbl(i).pricing_attribute14;
599 p_pricing_rec_tab.pricing_attribute15(i) := p_pricing_tbl(i).pricing_attribute15;
600 p_pricing_rec_tab.pricing_attribute16(i) := p_pricing_tbl(i).pricing_attribute16;
601 p_pricing_rec_tab.pricing_attribute17(i) := p_pricing_tbl(i).pricing_attribute17;
602 p_pricing_rec_tab.pricing_attribute18(i) := p_pricing_tbl(i).pricing_attribute18;
603 p_pricing_rec_tab.pricing_attribute19(i) := p_pricing_tbl(i).pricing_attribute19;
604 p_pricing_rec_tab.pricing_attribute20(i) := p_pricing_tbl(i).pricing_attribute20;
605 p_pricing_rec_tab.pricing_attribute21(i) := p_pricing_tbl(i).pricing_attribute21;
606 p_pricing_rec_tab.pricing_attribute22(i) := p_pricing_tbl(i).pricing_attribute22;
607 p_pricing_rec_tab.pricing_attribute23(i) := p_pricing_tbl(i).pricing_attribute23;
608 p_pricing_rec_tab.pricing_attribute24(i) := p_pricing_tbl(i).pricing_attribute24;
609 p_pricing_rec_tab.pricing_attribute25(i) := p_pricing_tbl(i).pricing_attribute25;
610 p_pricing_rec_tab.pricing_attribute26(i) := p_pricing_tbl(i).pricing_attribute26;
611 p_pricing_rec_tab.pricing_attribute27(i) := p_pricing_tbl(i).pricing_attribute27;
612 p_pricing_rec_tab.pricing_attribute28(i) := p_pricing_tbl(i).pricing_attribute28;
613 p_pricing_rec_tab.pricing_attribute29(i) := p_pricing_tbl(i).pricing_attribute29;
614 p_pricing_rec_tab.pricing_attribute30(i) := p_pricing_tbl(i).pricing_attribute30;
615 p_pricing_rec_tab.pricing_attribute31(i) := p_pricing_tbl(i).pricing_attribute31;
616 p_pricing_rec_tab.pricing_attribute32(i) := p_pricing_tbl(i).pricing_attribute32;
617 p_pricing_rec_tab.pricing_attribute33(i) := p_pricing_tbl(i).pricing_attribute33;
618 p_pricing_rec_tab.pricing_attribute34(i) := p_pricing_tbl(i).pricing_attribute34;
619 p_pricing_rec_tab.pricing_attribute35(i) := p_pricing_tbl(i).pricing_attribute35;
620 p_pricing_rec_tab.pricing_attribute36(i) := p_pricing_tbl(i).pricing_attribute36;
621 p_pricing_rec_tab.pricing_attribute37(i) := p_pricing_tbl(i).pricing_attribute37;
622 p_pricing_rec_tab.pricing_attribute38(i) := p_pricing_tbl(i).pricing_attribute38;
623 p_pricing_rec_tab.pricing_attribute39(i) := p_pricing_tbl(i).pricing_attribute39;
624 p_pricing_rec_tab.pricing_attribute40(i) := p_pricing_tbl(i).pricing_attribute40;
625 p_pricing_rec_tab.pricing_attribute41(i) := p_pricing_tbl(i).pricing_attribute41;
626 p_pricing_rec_tab.pricing_attribute42(i) := p_pricing_tbl(i).pricing_attribute42;
627 p_pricing_rec_tab.pricing_attribute43(i) := p_pricing_tbl(i).pricing_attribute43;
628 p_pricing_rec_tab.pricing_attribute44(i) := p_pricing_tbl(i).pricing_attribute44;
629 p_pricing_rec_tab.pricing_attribute45(i) := p_pricing_tbl(i).pricing_attribute45;
630 p_pricing_rec_tab.pricing_attribute46(i) := p_pricing_tbl(i).pricing_attribute46;
631 p_pricing_rec_tab.pricing_attribute47(i) := p_pricing_tbl(i).pricing_attribute47;
632 p_pricing_rec_tab.pricing_attribute48(i) := p_pricing_tbl(i).pricing_attribute48;
633 p_pricing_rec_tab.pricing_attribute49(i) := p_pricing_tbl(i).pricing_attribute49;
634 p_pricing_rec_tab.pricing_attribute50(i) := p_pricing_tbl(i).pricing_attribute50;
635 p_pricing_rec_tab.pricing_attribute51(i) := p_pricing_tbl(i).pricing_attribute51;
639 p_pricing_rec_tab.pricing_attribute55(i) := p_pricing_tbl(i).pricing_attribute55;
636 p_pricing_rec_tab.pricing_attribute52(i) := p_pricing_tbl(i).pricing_attribute52;
637 p_pricing_rec_tab.pricing_attribute53(i) := p_pricing_tbl(i).pricing_attribute53;
638 p_pricing_rec_tab.pricing_attribute54(i) := p_pricing_tbl(i).pricing_attribute54;
640 p_pricing_rec_tab.pricing_attribute56(i) := p_pricing_tbl(i).pricing_attribute56;
641 p_pricing_rec_tab.pricing_attribute57(i) := p_pricing_tbl(i).pricing_attribute57;
642 p_pricing_rec_tab.pricing_attribute58(i) := p_pricing_tbl(i).pricing_attribute58;
643 p_pricing_rec_tab.pricing_attribute59(i) := p_pricing_tbl(i).pricing_attribute59;
644 p_pricing_rec_tab.pricing_attribute60(i) := p_pricing_tbl(i).pricing_attribute60;
645 p_pricing_rec_tab.pricing_attribute61(i) := p_pricing_tbl(i).pricing_attribute61;
646 p_pricing_rec_tab.pricing_attribute62(i) := p_pricing_tbl(i).pricing_attribute62;
647 p_pricing_rec_tab.pricing_attribute63(i) := p_pricing_tbl(i).pricing_attribute63;
648 p_pricing_rec_tab.pricing_attribute64(i) := p_pricing_tbl(i).pricing_attribute64;
649 p_pricing_rec_tab.pricing_attribute65(i) := p_pricing_tbl(i).pricing_attribute65;
650 p_pricing_rec_tab.pricing_attribute66(i) := p_pricing_tbl(i).pricing_attribute66;
651 p_pricing_rec_tab.pricing_attribute67(i) := p_pricing_tbl(i).pricing_attribute67;
652 p_pricing_rec_tab.pricing_attribute68(i) := p_pricing_tbl(i).pricing_attribute68;
653 p_pricing_rec_tab.pricing_attribute69(i) := p_pricing_tbl(i).pricing_attribute69;
654 p_pricing_rec_tab.pricing_attribute70(i) := p_pricing_tbl(i).pricing_attribute70;
655 p_pricing_rec_tab.pricing_attribute71(i) := p_pricing_tbl(i).pricing_attribute71;
656 p_pricing_rec_tab.pricing_attribute72(i) := p_pricing_tbl(i).pricing_attribute72;
657 p_pricing_rec_tab.pricing_attribute73(i) := p_pricing_tbl(i).pricing_attribute73;
658 p_pricing_rec_tab.pricing_attribute74(i) := p_pricing_tbl(i).pricing_attribute74;
659 p_pricing_rec_tab.pricing_attribute75(i) := p_pricing_tbl(i).pricing_attribute75;
660 p_pricing_rec_tab.pricing_attribute76(i) := p_pricing_tbl(i).pricing_attribute76;
661 p_pricing_rec_tab.pricing_attribute77(i) := p_pricing_tbl(i).pricing_attribute77;
662 p_pricing_rec_tab.pricing_attribute78(i) := p_pricing_tbl(i).pricing_attribute78;
663 p_pricing_rec_tab.pricing_attribute79(i) := p_pricing_tbl(i).pricing_attribute79;
664 p_pricing_rec_tab.pricing_attribute80(i) := p_pricing_tbl(i).pricing_attribute80;
665 p_pricing_rec_tab.pricing_attribute81(i) := p_pricing_tbl(i).pricing_attribute81;
666 p_pricing_rec_tab.pricing_attribute82(i) := p_pricing_tbl(i).pricing_attribute82;
667 p_pricing_rec_tab.pricing_attribute83(i) := p_pricing_tbl(i).pricing_attribute83;
668 p_pricing_rec_tab.pricing_attribute84(i) := p_pricing_tbl(i).pricing_attribute84;
669 p_pricing_rec_tab.pricing_attribute85(i) := p_pricing_tbl(i).pricing_attribute85;
670 p_pricing_rec_tab.pricing_attribute86(i) := p_pricing_tbl(i).pricing_attribute86;
671 p_pricing_rec_tab.pricing_attribute87(i) := p_pricing_tbl(i).pricing_attribute87;
672 p_pricing_rec_tab.pricing_attribute88(i) := p_pricing_tbl(i).pricing_attribute88;
673 p_pricing_rec_tab.pricing_attribute89(i) := p_pricing_tbl(i).pricing_attribute89;
674 p_pricing_rec_tab.pricing_attribute90(i) := p_pricing_tbl(i).pricing_attribute90;
675 p_pricing_rec_tab.pricing_attribute91(i) := p_pricing_tbl(i).pricing_attribute91;
676 p_pricing_rec_tab.pricing_attribute92(i) := p_pricing_tbl(i).pricing_attribute92;
677 p_pricing_rec_tab.pricing_attribute93(i) := p_pricing_tbl(i).pricing_attribute93;
678 p_pricing_rec_tab.pricing_attribute94(i) := p_pricing_tbl(i).pricing_attribute94;
679 p_pricing_rec_tab.pricing_attribute95(i) := p_pricing_tbl(i).pricing_attribute95;
680 p_pricing_rec_tab.pricing_attribute96(i) := p_pricing_tbl(i).pricing_attribute96;
681 p_pricing_rec_tab.pricing_attribute97(i) := p_pricing_tbl(i).pricing_attribute97;
682 p_pricing_rec_tab.pricing_attribute98(i) := p_pricing_tbl(i).pricing_attribute98;
683 p_pricing_rec_tab.pricing_attribute99(i) := p_pricing_tbl(i).pricing_attribute99;
684 p_pricing_rec_tab.pricing_attribute100(i) := p_pricing_tbl(i).pricing_attribute100;
685 p_pricing_rec_tab.context(i) := p_pricing_tbl(i).context;
686 p_pricing_rec_tab.attribute1(i) := p_pricing_tbl(i).attribute1;
687 p_pricing_rec_tab.attribute2(i) := p_pricing_tbl(i).attribute2;
688 p_pricing_rec_tab.attribute3(i) := p_pricing_tbl(i).attribute3;
689 p_pricing_rec_tab.attribute4(i) := p_pricing_tbl(i).attribute4;
690 p_pricing_rec_tab.attribute5(i) := p_pricing_tbl(i).attribute5;
691 p_pricing_rec_tab.attribute6(i) := p_pricing_tbl(i).attribute6;
692 p_pricing_rec_tab.attribute7(i) := p_pricing_tbl(i).attribute7;
693 p_pricing_rec_tab.attribute8(i) := p_pricing_tbl(i).attribute8;
694 p_pricing_rec_tab.attribute9(i) := p_pricing_tbl(i).attribute9;
695 p_pricing_rec_tab.attribute10(i) := p_pricing_tbl(i).attribute10;
696 p_pricing_rec_tab.attribute11(i) := p_pricing_tbl(i).attribute11;
697 p_pricing_rec_tab.attribute12(i) := p_pricing_tbl(i).attribute12;
698 p_pricing_rec_tab.attribute13(i) := p_pricing_tbl(i).attribute13;
699 p_pricing_rec_tab.attribute14(i) := p_pricing_tbl(i).attribute14;
700 p_pricing_rec_tab.attribute15(i) := p_pricing_tbl(i).attribute15;
701 p_pricing_rec_tab.object_version_number(i) := p_pricing_tbl(i).object_version_number;
702 END LOOP;
703 END Build_pricing_Rec_of_Table;
704 --
705 PROCEDURE Build_Ext_Attr_Rec_Table
706 (
710 ) IS
707 p_ext_attr_tbl IN csi_datastructures_pub.extend_attrib_values_tbl
708 ,p_ext_attr_rec_tab IN OUT NOCOPY csi_diagnostics_pkg.extend_attrib_values_rec_tab
709 ,p_ext_hist_tbl IN OUT NOCOPY csi_diagnostics_pkg.T_NUM
711
712 BEGIN
713 FOR i in p_ext_attr_tbl.FIRST .. p_ext_attr_tbl.LAST LOOP
714 select CSI_IEA_VALUES_H_S.nextval
715 into p_ext_hist_tbl(i) from dual;
716 --
717 p_ext_attr_rec_tab.attribute_value_id(i) := p_ext_attr_tbl(i).attribute_value_id;
718 p_ext_attr_rec_tab.instance_id(i) := p_ext_attr_tbl(i).instance_id;
719 p_ext_attr_rec_tab.attribute_id(i) := p_ext_attr_tbl(i).attribute_id;
720 p_ext_attr_rec_tab.attribute_code(i) := p_ext_attr_tbl(i).attribute_code;
721 p_ext_attr_rec_tab.attribute_value(i) := p_ext_attr_tbl(i).attribute_value;
722 p_ext_attr_rec_tab.active_start_date(i) := p_ext_attr_tbl(i).active_start_date;
723 p_ext_attr_rec_tab.active_end_date(i) := p_ext_attr_tbl(i).active_end_date;
724 p_ext_attr_rec_tab.context(i) := p_ext_attr_tbl(i).context;
725 p_ext_attr_rec_tab.attribute1(i) := p_ext_attr_tbl(i).attribute1;
726 p_ext_attr_rec_tab.attribute2 (i) := p_ext_attr_tbl(i).attribute2;
727 p_ext_attr_rec_tab.attribute3(i) := p_ext_attr_tbl(i).attribute3;
728 p_ext_attr_rec_tab.attribute4(i) := p_ext_attr_tbl(i).attribute4;
729 p_ext_attr_rec_tab.attribute5(i) := p_ext_attr_tbl(i).attribute5;
730 p_ext_attr_rec_tab.attribute6(i) := p_ext_attr_tbl(i).attribute6;
731 p_ext_attr_rec_tab.attribute7(i) := p_ext_attr_tbl(i).attribute7;
732 p_ext_attr_rec_tab.attribute8(i) := p_ext_attr_tbl(i).attribute8;
733 p_ext_attr_rec_tab.attribute9(i) := p_ext_attr_tbl(i).attribute9;
734 p_ext_attr_rec_tab.attribute10(i) := p_ext_attr_tbl(i).attribute10;
735 p_ext_attr_rec_tab.attribute11(i) := p_ext_attr_tbl(i).attribute11;
736 p_ext_attr_rec_tab.attribute12(i) := p_ext_attr_tbl(i).attribute12;
737 p_ext_attr_rec_tab.attribute13(i) := p_ext_attr_tbl(i).attribute13;
738 p_ext_attr_rec_tab.attribute14(i) := p_ext_attr_tbl(i).attribute14;
739 p_ext_attr_rec_tab.attribute15(i) := p_ext_attr_tbl(i).attribute15;
740 p_ext_attr_rec_tab.object_version_number(i) := p_ext_attr_tbl(i).object_version_number;
741 END LOOP;
742 END Build_Ext_Attr_Rec_Table;
743 --
744 PROCEDURE Build_Asset_Rec_Table
745 (
746 p_asset_tbl IN csi_datastructures_pub.instance_asset_tbl
747 ,p_asset_rec_tab IN OUT NOCOPY csi_diagnostics_pkg.instance_asset_rec_tab
748 ,p_asset_hist_tbl IN OUT NOCOPY csi_diagnostics_pkg.T_NUM
749 ) IS
750
751 BEGIN
752 FOR i in p_asset_tbl.FIRST .. p_asset_tbl.LAST LOOP
753 select CSI_I_ASSETS_H_S.nextval
754 into p_asset_hist_tbl(i) from dual;
755 --
756 p_asset_rec_tab.instance_asset_id(i) := p_asset_tbl(i).instance_asset_id;
757 p_asset_rec_tab.instance_id(i) := p_asset_tbl(i).instance_id;
758 p_asset_rec_tab.fa_asset_id(i) := p_asset_tbl(i).fa_asset_id;
759 p_asset_rec_tab.fa_book_type_code(i) := p_asset_tbl(i).fa_book_type_code;
760 p_asset_rec_tab.fa_location_id(i) := p_asset_tbl(i).fa_location_id;
761 p_asset_rec_tab.asset_quantity(i) := p_asset_tbl(i).asset_quantity;
762 p_asset_rec_tab.update_status(i) := p_asset_tbl(i).update_status;
763 p_asset_rec_tab.active_start_date(i) := p_asset_tbl(i).active_start_date;
764 p_asset_rec_tab.active_end_date(i) := p_asset_tbl(i).active_end_date;
765 p_asset_rec_tab.object_version_number(i) := p_asset_tbl(i).object_version_number;
766 p_asset_rec_tab.check_for_instance_expiry(i) := p_asset_tbl(i).check_for_instance_expiry;
767
768 END LOOP;
769 --
770 END Build_Asset_Rec_Table;
771 --
772
773 PROCEDURE make_non_header(
774 p_inst_h_rec IN csi_datastructures_pub.instance_header_rec,
775 p_pty_h_tbl IN csi_datastructures_pub.party_header_tbl,
776 p_pa_h_tbl IN csi_datastructures_pub.party_account_header_tbl,
777 p_ou_h_tbl IN csi_datastructures_pub.org_units_header_tbl,
778 p_asset_h_tbl IN csi_datastructures_pub.instance_asset_header_tbl,
779 x_inst_rec OUT nocopy csi_datastructures_pub.instance_rec,
780 x_pty_tbl OUT nocopy csi_datastructures_pub.party_tbl,
781 x_pa_tbl OUT nocopy csi_datastructures_pub.party_account_tbl,
782 x_ou_tbl OUT nocopy csi_datastructures_pub.organization_units_tbl,
783 x_asset_tbl OUT nocopy csi_datastructures_pub.instance_asset_tbl,
784 x_return_status OUT nocopy varchar2)
785 IS
786 BEGIN
787
788 x_return_status := fnd_api.g_ret_sts_success;
789
790 x_inst_rec.instance_id := p_inst_h_rec.instance_id;
791 x_inst_rec.instance_number := p_inst_h_rec.instance_number;
792 x_inst_rec.external_reference := p_inst_h_rec.external_reference;
793 x_inst_rec.inventory_item_id := p_inst_h_rec.inventory_item_id;
794 x_inst_rec.inventory_revision := p_inst_h_rec.inventory_revision;
795 x_inst_rec.inv_master_organization_id := p_inst_h_rec.inv_master_organization_id;
799 x_inst_rec.quantity := p_inst_h_rec.quantity;
796 x_inst_rec.serial_number := p_inst_h_rec.serial_number;
797 x_inst_rec.mfg_serial_number_flag := p_inst_h_rec.mfg_serial_number_flag;
798 x_inst_rec.lot_number := p_inst_h_rec.lot_number;
800 x_inst_rec.unit_of_measure := p_inst_h_rec.unit_of_measure;
801 x_inst_rec.accounting_class_code := p_inst_h_rec.accounting_class_code;
802 x_inst_rec.instance_condition_id := p_inst_h_rec.instance_condition_id;
803 x_inst_rec.instance_usage_code := p_inst_h_rec.instance_usage_code;
804 x_inst_rec.instance_status_id := p_inst_h_rec.instance_status_id;
805 x_inst_rec.customer_view_flag := p_inst_h_rec.customer_view_flag;
806 x_inst_rec.merchant_view_flag := p_inst_h_rec.merchant_view_flag;
807 x_inst_rec.sellable_flag := p_inst_h_rec.sellable_flag;
808 x_inst_rec.system_id := p_inst_h_rec.system_id;
809 x_inst_rec.instance_type_code := p_inst_h_rec.instance_type_code;
810 x_inst_rec.active_start_date := p_inst_h_rec.active_start_date;
811 x_inst_rec.active_end_date := p_inst_h_rec.active_end_date;
812 x_inst_rec.location_type_code := p_inst_h_rec.location_type_code;
813 x_inst_rec.location_id := p_inst_h_rec.location_id;
814 x_inst_rec.install_location_type_code := p_inst_h_rec.install_location_type_code;
815 x_inst_rec.install_location_id := p_inst_h_rec.install_location_id;
816 x_inst_rec.inv_organization_id := p_inst_h_rec.inv_organization_id;
817 x_inst_rec.inv_subinventory_name := p_inst_h_rec.inv_subinventory_name;
818 x_inst_rec.inv_locator_id := p_inst_h_rec.inv_locator_id;
819 x_inst_rec.pa_project_id := p_inst_h_rec.pa_project_id;
820 x_inst_rec.pa_project_task_id := p_inst_h_rec.pa_project_task_id;
821 x_inst_rec.in_transit_order_line_id := p_inst_h_rec.in_transit_order_line_id;
822 x_inst_rec.wip_job_id := p_inst_h_rec.wip_job_id;
823 x_inst_rec.po_order_line_id := p_inst_h_rec.po_order_line_id;
824 x_inst_rec.last_oe_order_line_id := p_inst_h_rec.last_oe_order_line_id;
825 x_inst_rec.last_oe_rma_line_id := p_inst_h_rec.last_oe_rma_line_id;
826 x_inst_rec.last_po_po_line_id := p_inst_h_rec.last_po_po_line_id;
827 x_inst_rec.last_oe_po_number := p_inst_h_rec.last_oe_po_number;
828 x_inst_rec.last_wip_job_id := p_inst_h_rec.last_wip_job_id;
829 x_inst_rec.last_pa_project_id := p_inst_h_rec.last_pa_project_id;
830 x_inst_rec.last_pa_task_id := p_inst_h_rec.last_pa_task_id;
831 x_inst_rec.last_oe_agreement_id := p_inst_h_rec.last_oe_agreement_id;
832 x_inst_rec.install_date := p_inst_h_rec.install_date;
833 x_inst_rec.manually_created_flag := p_inst_h_rec.manually_created_flag;
834 x_inst_rec.return_by_date := p_inst_h_rec.return_by_date;
835 x_inst_rec.actual_return_date := p_inst_h_rec.actual_return_date;
836 x_inst_rec.creation_complete_flag := p_inst_h_rec.creation_complete_flag;
837 x_inst_rec.completeness_flag := p_inst_h_rec.completeness_flag;
838 x_inst_rec.context := p_inst_h_rec.context;
839 x_inst_rec.attribute1 := p_inst_h_rec.attribute1;
840 x_inst_rec.attribute2 := p_inst_h_rec.attribute2;
841 x_inst_rec.attribute3 := p_inst_h_rec.attribute3;
842 x_inst_rec.attribute4 := p_inst_h_rec.attribute4;
843 x_inst_rec.attribute5 := p_inst_h_rec.attribute5;
844 x_inst_rec.attribute6 := p_inst_h_rec.attribute6;
845 x_inst_rec.attribute7 := p_inst_h_rec.attribute7;
846 x_inst_rec.attribute8 := p_inst_h_rec.attribute8;
847 x_inst_rec.attribute9 := p_inst_h_rec.attribute9;
848 x_inst_rec.attribute10 := p_inst_h_rec.attribute10;
849 x_inst_rec.attribute11 := p_inst_h_rec.attribute11;
850 x_inst_rec.attribute12 := p_inst_h_rec.attribute12;
851 x_inst_rec.attribute13 := p_inst_h_rec.attribute13;
852 x_inst_rec.attribute14 := p_inst_h_rec.attribute14;
853 x_inst_rec.attribute15 := p_inst_h_rec.attribute15;
854 x_inst_rec.object_version_number := p_inst_h_rec.object_version_number;
855 x_inst_rec.config_inst_hdr_id := p_inst_h_rec.config_inst_hdr_id;
856 x_inst_rec.config_inst_rev_num := p_inst_h_rec.config_inst_rev_num;
857 x_inst_rec.config_inst_item_id := p_inst_h_rec.config_inst_item_id;
858 x_inst_rec.config_valid_status := p_inst_h_rec.config_valid_status;
859 x_inst_rec.instance_description := p_inst_h_rec.instance_description;
860
861
862 IF p_pty_h_tbl.COUNT > 0 THEN
863 FOR l_ind IN p_pty_h_tbl.FIRST .. p_pty_h_tbl.LAST
864 LOOP
865 x_pty_tbl(l_ind).instance_party_id := p_pty_h_tbl(l_ind).instance_party_id;
866 x_pty_tbl(l_ind).instance_id := p_pty_h_tbl(l_ind).instance_id;
867 x_pty_tbl(l_ind).party_source_table := p_pty_h_tbl(l_ind).party_source_table;
868 x_pty_tbl(l_ind).party_id := p_pty_h_tbl(l_ind).party_id;
869 x_pty_tbl(l_ind).relationship_type_code := p_pty_h_tbl(l_ind).relationship_type_code;
870 x_pty_tbl(l_ind).contact_flag := p_pty_h_tbl(l_ind).contact_flag;
871 x_pty_tbl(l_ind).contact_ip_id := p_pty_h_tbl(l_ind).contact_ip_id;
875 x_pty_tbl(l_ind).attribute1 := p_pty_h_tbl(l_ind).attribute1;
872 x_pty_tbl(l_ind).active_start_date := p_pty_h_tbl(l_ind).active_start_date;
873 x_pty_tbl(l_ind).active_end_date := p_pty_h_tbl(l_ind).active_end_date;
874 x_pty_tbl(l_ind).context := p_pty_h_tbl(l_ind).context;
876 x_pty_tbl(l_ind).attribute2 := p_pty_h_tbl(l_ind).attribute2;
877 x_pty_tbl(l_ind).attribute3 := p_pty_h_tbl(l_ind).attribute3;
878 x_pty_tbl(l_ind).attribute4 := p_pty_h_tbl(l_ind).attribute4;
879 x_pty_tbl(l_ind).attribute5 := p_pty_h_tbl(l_ind).attribute5;
880 x_pty_tbl(l_ind).attribute6 := p_pty_h_tbl(l_ind).attribute6;
881 x_pty_tbl(l_ind).attribute7 := p_pty_h_tbl(l_ind).attribute7;
882 x_pty_tbl(l_ind).attribute8 := p_pty_h_tbl(l_ind).attribute8;
883 x_pty_tbl(l_ind).attribute9 := p_pty_h_tbl(l_ind).attribute9;
884 x_pty_tbl(l_ind).attribute10 := p_pty_h_tbl(l_ind).attribute10;
885 x_pty_tbl(l_ind).attribute11 := p_pty_h_tbl(l_ind).attribute11;
886 x_pty_tbl(l_ind).attribute12 := p_pty_h_tbl(l_ind).attribute12;
887 x_pty_tbl(l_ind).attribute13 := p_pty_h_tbl(l_ind).attribute13;
888 x_pty_tbl(l_ind).attribute14 := p_pty_h_tbl(l_ind).attribute14;
889 x_pty_tbl(l_ind).attribute15 := p_pty_h_tbl(l_ind).attribute15;
890 x_pty_tbl(l_ind).primary_flag := p_pty_h_tbl(l_ind).primary_flag;
891 x_pty_tbl(l_ind).preferred_flag := p_pty_h_tbl(l_ind).preferred_flag;
892 SELECT object_version_number
893 INTO x_pty_tbl(l_ind).object_version_number
894 FROM csi_i_parties
895 WHERE instance_party_id = p_pty_h_tbl(l_ind).instance_party_id;
896 END LOOP;
897 END IF;
898
899 IF p_pa_h_tbl.count > 0 THEN
900 FOR l_ind IN p_pa_h_tbl.FIRST .. p_pa_h_tbl.LAST
901 LOOP
902
903 x_pa_tbl(l_ind).ip_account_id := p_pa_h_tbl(l_ind).ip_account_id;
904 x_pa_tbl(l_ind).instance_party_id := p_pa_h_tbl(l_ind).instance_party_id;
905 x_pa_tbl(l_ind).party_account_id := p_pa_h_tbl(l_ind).party_account_id;
906 x_pa_tbl(l_ind).relationship_type_code := p_pa_h_tbl(l_ind).relationship_type_code;
907 x_pa_tbl(l_ind).bill_to_address := p_pa_h_tbl(l_ind).bill_to_address;
908 x_pa_tbl(l_ind).ship_to_address := p_pa_h_tbl(l_ind).ship_to_address;
909 x_pa_tbl(l_ind).active_start_date := p_pa_h_tbl(l_ind).active_start_date;
910 x_pa_tbl(l_ind).active_end_date := p_pa_h_tbl(l_ind).active_end_date;
911 x_pa_tbl(l_ind).context := p_pa_h_tbl(l_ind).context;
912 x_pa_tbl(l_ind).attribute1 := p_pa_h_tbl(l_ind).attribute1;
913 x_pa_tbl(l_ind).attribute2 := p_pa_h_tbl(l_ind).attribute2;
914 x_pa_tbl(l_ind).attribute3 := p_pa_h_tbl(l_ind).attribute3;
915 x_pa_tbl(l_ind).attribute4 := p_pa_h_tbl(l_ind).attribute4;
916 x_pa_tbl(l_ind).attribute5 := p_pa_h_tbl(l_ind).attribute5;
917 x_pa_tbl(l_ind).attribute6 := p_pa_h_tbl(l_ind).attribute6;
918 x_pa_tbl(l_ind).attribute7 := p_pa_h_tbl(l_ind).attribute7;
919 x_pa_tbl(l_ind).attribute8 := p_pa_h_tbl(l_ind).attribute8;
920 x_pa_tbl(l_ind).attribute9 := p_pa_h_tbl(l_ind).attribute9;
921 x_pa_tbl(l_ind).attribute10 := p_pa_h_tbl(l_ind).attribute10;
922 x_pa_tbl(l_ind).attribute11 := p_pa_h_tbl(l_ind).attribute11;
923 x_pa_tbl(l_ind).attribute12 := p_pa_h_tbl(l_ind).attribute12;
924 x_pa_tbl(l_ind).attribute13 := p_pa_h_tbl(l_ind).attribute13;
925 x_pa_tbl(l_ind).attribute14 := p_pa_h_tbl(l_ind).attribute14;
926 x_pa_tbl(l_ind).attribute15 := p_pa_h_tbl(l_ind).attribute15;
927 SELECT object_version_number
928 INTO x_pa_tbl(l_ind).object_version_number
929 FROM csi_ip_accounts
930 WHERE ip_account_id = p_pa_h_tbl(l_ind).ip_account_id;
931
932 END LOOP;
933 END IF;
934
935 IF p_ou_h_tbl.count > 0 THEN
936 FOR l_ind IN p_ou_h_tbl.FIRST .. p_ou_h_tbl.LAST
937 LOOP
938
939 x_ou_tbl(l_ind).instance_ou_id := p_ou_h_tbl(l_ind).instance_ou_id;
940 x_ou_tbl(l_ind).instance_id := p_ou_h_tbl(l_ind).instance_id;
941 x_ou_tbl(l_ind).operating_unit_id := p_ou_h_tbl(l_ind).operating_unit_id;
942 x_ou_tbl(l_ind).relationship_type_code := p_ou_h_tbl(l_ind).relationship_type_code;
943 x_ou_tbl(l_ind).active_start_date := p_ou_h_tbl(l_ind).active_start_date;
944 x_ou_tbl(l_ind).active_end_date := p_ou_h_tbl(l_ind).active_end_date;
945 x_ou_tbl(l_ind).context := p_ou_h_tbl(l_ind).context;
946 x_ou_tbl(l_ind).attribute1 := p_ou_h_tbl(l_ind).attribute1;
947 x_ou_tbl(l_ind).attribute2 := p_ou_h_tbl(l_ind).attribute2;
948 x_ou_tbl(l_ind).attribute3 := p_ou_h_tbl(l_ind).attribute3;
949 x_ou_tbl(l_ind).attribute4 := p_ou_h_tbl(l_ind).attribute4;
950 x_ou_tbl(l_ind).attribute5 := p_ou_h_tbl(l_ind).attribute5;
951 x_ou_tbl(l_ind).attribute6 := p_ou_h_tbl(l_ind).attribute6;
955 x_ou_tbl(l_ind).attribute10 := p_ou_h_tbl(l_ind).attribute10;
952 x_ou_tbl(l_ind).attribute7 := p_ou_h_tbl(l_ind).attribute7;
953 x_ou_tbl(l_ind).attribute8 := p_ou_h_tbl(l_ind).attribute8;
954 x_ou_tbl(l_ind).attribute9 := p_ou_h_tbl(l_ind).attribute9;
956 x_ou_tbl(l_ind).attribute11 := p_ou_h_tbl(l_ind).attribute11;
957 x_ou_tbl(l_ind).attribute12 := p_ou_h_tbl(l_ind).attribute12;
958 x_ou_tbl(l_ind).attribute13 := p_ou_h_tbl(l_ind).attribute13;
959 x_ou_tbl(l_ind).attribute14 := p_ou_h_tbl(l_ind).attribute14;
960 x_ou_tbl(l_ind).attribute15 := p_ou_h_tbl(l_ind).attribute15;
961 SELECT object_version_number
962 INTO x_ou_tbl(l_ind).object_version_number
963 FROM csi_i_org_assignments
964 WHERE instance_ou_id = p_ou_h_tbl(l_ind).instance_ou_id;
965
966 END LOOP;
967 END IF;
968
969 IF p_asset_h_tbl.count > 0 THEN
970 FOR l_ind IN p_asset_h_tbl.FIRST .. p_asset_h_tbl.LAST
971 LOOP
972
973 x_asset_tbl(l_ind).instance_asset_id := p_asset_h_tbl(l_ind).instance_asset_id;
974 x_asset_tbl(l_ind).instance_id := p_asset_h_tbl(l_ind).instance_id;
975 x_asset_tbl(l_ind).fa_asset_id := p_asset_h_tbl(l_ind).fa_asset_id;
976 x_asset_tbl(l_ind).fa_book_type_code := p_asset_h_tbl(l_ind).fa_book_type_code;
977 x_asset_tbl(l_ind).fa_location_id := p_asset_h_tbl(l_ind).fa_location_id;
978 x_asset_tbl(l_ind).asset_quantity := p_asset_h_tbl(l_ind).asset_quantity;
979 x_asset_tbl(l_ind).update_status := p_asset_h_tbl(l_ind).update_status;
980 x_asset_tbl(l_ind).active_start_date := p_asset_h_tbl(l_ind).active_start_date;
981 x_asset_tbl(l_ind).active_end_date := p_asset_h_tbl(l_ind).active_end_date;
982 SELECT object_version_number
983 INTO x_asset_tbl(l_ind).object_version_number
984 FROM csi_i_assets
985 WHERE instance_asset_id = p_asset_h_tbl(l_ind).instance_asset_id;
986
987 END LOOP;
988 END IF;
989
990 END make_non_header;
991 --
992 PROCEDURE forward_sync IS
993
994 CURSOR fs_cur IS
995 SELECT instance_id,
996 date_time_stamp,
997 inventory_item_id,
998 serial_number,
999 lot_control_code,
1000 mtl_txn_id,
1001 mtl_txn_creation_date
1002 FROM csi_ii_forward_sync_temp
1003 WHERE process_flag <> 'P';
1004
1005 l_txn_type_id number;
1006 l_error_exists varchar2(1) := 'N';
1007 l_csi_txn_rec csi_datastructures_pub.transaction_rec;
1008
1009 -- get instance details variables
1010 g_inst_rec csi_datastructures_pub.instance_header_rec;
1011 g_pty_tbl csi_datastructures_pub.party_header_tbl;
1012 g_pa_tbl csi_datastructures_pub.party_account_header_tbl;
1013 g_ou_tbl csi_datastructures_pub.org_units_header_tbl;
1014 g_prc_tbl csi_datastructures_pub.pricing_attribs_tbl;
1015 g_eav_tbl csi_datastructures_pub.extend_attrib_values_tbl;
1016 g_ea_tbl csi_datastructures_pub.extend_attrib_tbl;
1017 g_asset_tbl csi_datastructures_pub.instance_asset_header_tbl;
1018
1019
1020 -- get version label variables
1021 g_vl_qry_rec csi_datastructures_pub.version_label_query_rec;
1022 g_vl_tbl csi_datastructures_pub.version_label_tbl;
1023
1024 -- get relationship variables
1025 l_iir_qry_rec csi_datastructures_pub.relationship_query_rec;
1026 g_iir_qry_rec csi_datastructures_pub.relationship_query_rec;
1027 l_iir_tbl csi_datastructures_pub.ii_relationship_tbl;
1028 g_iir_tbl csi_datastructures_pub.ii_relationship_tbl;
1029 iir_ind binary_integer := 0;
1030
1031
1032 -- update item instance variables
1033 l_inst_rec csi_datastructures_pub.instance_rec;
1034 l_pty_tbl csi_datastructures_pub.party_tbl;
1035 l_pa_tbl csi_datastructures_pub.party_account_tbl;
1036 l_ou_tbl csi_datastructures_pub.organization_units_tbl;
1037 l_eav_tbl csi_datastructures_pub.extend_attrib_values_tbl;
1038 l_prc_tbl csi_datastructures_pub.pricing_attribs_tbl;
1039 l_asset_tbl csi_datastructures_pub.instance_asset_tbl;
1040 l_inst_ids_tbl csi_datastructures_pub.id_tbl;
1041 l_txn_rec csi_datastructures_pub.transaction_rec;
1042 l_vl_tbl csi_datastructures_pub.version_label_tbl;
1043
1044 l_return_status varchar2(1);
1045 l_msg_data varchar2(2000);
1046 l_msg_count number;
1047
1048 PROCEDURE init_struct(
1049 px_inst_rec IN OUT nocopy csi_datastructures_pub.instance_header_rec,
1050 px_pty_tbl IN OUT nocopy csi_datastructures_pub.party_header_tbl,
1051 px_pa_tbl IN OUT nocopy csi_datastructures_pub.party_account_header_tbl,
1052 px_ou_tbl IN OUT nocopy csi_datastructures_pub.org_units_header_tbl,
1053 px_prc_tbl IN OUT nocopy csi_datastructures_pub.pricing_attribs_tbl,
1054 px_eav_tbl IN OUT nocopy csi_datastructures_pub.extend_attrib_values_tbl,
1055 px_ea_tbl IN OUT nocopy csi_datastructures_pub.extend_attrib_tbl,
1056 px_asset_tbl IN OUT nocopy csi_datastructures_pub.instance_asset_header_tbl,
1060 px_iir_tbl IN OUT nocopy csi_datastructures_pub.ii_relationship_tbl)
1057 px_vl_qry_rec IN OUT nocopy csi_datastructures_pub.version_label_query_rec,
1058 px_vl_tbl IN OUT nocopy csi_datastructures_pub.version_label_tbl,
1059 px_iir_qry_rec IN OUT nocopy csi_datastructures_pub.relationship_query_rec,
1061 IS
1062 l_inst_rec csi_datastructures_pub.instance_header_rec;
1063 l_vl_qry_rec csi_datastructures_pub.version_label_query_rec;
1064 l_iir_qry_rec csi_datastructures_pub.relationship_query_rec;
1065 BEGIN
1066 px_inst_rec := l_inst_rec;
1067 px_vl_qry_rec := l_vl_qry_rec;
1068 px_iir_qry_rec := l_iir_qry_rec;
1069 px_pty_tbl.delete;
1070 px_pa_tbl.delete;
1071 px_ou_tbl.delete;
1072 px_prc_tbl.delete;
1073 px_eav_tbl.delete;
1074 px_ea_tbl.delete;
1075 px_asset_tbl.delete;
1076 px_vl_tbl.delete;
1077 px_iir_tbl.delete;
1078 END init_struct;
1079 BEGIN
1080
1081 l_csi_txn_rec.transaction_type_id := correction_txn_type_id;
1082 l_csi_txn_rec.transaction_date := sysdate;
1083 l_csi_txn_rec.source_transaction_date := sysdate;
1084 l_csi_txn_rec.source_header_ref := 'Forward Synch';
1085
1086 SELECT csi_ii_forward_sync_temp_s.nextval
1087 INTO l_csi_txn_rec.source_line_ref_id
1088 FROM sys.dual;
1089
1090 FOR fs_rec IN fs_cur
1091 LOOP
1092
1093 iir_ind := 0;
1094
1095 -- check for pending errors
1096 FOR all_txn in all_txn_cur(fs_rec.serial_number,fs_rec.inventory_item_id)
1097 LOOP
1098
1099 IF all_txn.mtl_creation_date < fs_rec.mtl_txn_creation_date THEN
1100 BEGIN
1101 SELECT 'Y'
1102 INTO l_error_exists
1103 FROM csi_txn_errors
1104 WHERE processed_flag in ('E','R')
1105 AND inv_material_transaction_id = all_txn.mtl_txn_id
1106 AND rownum < 2;
1107 EXIT;
1108 EXCEPTION
1109 WHEN no_data_found then
1110 l_error_exists := 'N';
1111 END;
1112 END IF;
1113 END LOOP;
1114
1115 IF l_error_exists = 'N' THEN
1116
1117 init_struct(
1118 px_inst_rec => g_inst_rec,
1119 px_pty_tbl => g_pty_tbl,
1120 px_pa_tbl => g_pa_tbl,
1121 px_ou_tbl => g_ou_tbl,
1122 px_prc_tbl => g_prc_tbl,
1123 px_eav_tbl => g_eav_tbl,
1124 px_ea_tbl => g_ea_tbl,
1125 px_asset_tbl => g_asset_tbl,
1126 px_vl_qry_rec => g_vl_qry_rec,
1127 px_vl_tbl => g_vl_tbl,
1128 px_iir_qry_rec => g_iir_qry_rec,
1129 px_iir_tbl => g_iir_tbl);
1130
1131 BEGIN
1132
1133 savepoint forward_sync;
1134
1135 g_inst_rec.instance_id := fs_rec.instance_id;
1136
1137 log('time stamp for old fetch : '||to_char(fs_rec.date_time_stamp, 'dd-mon-yyyy hh24:mi:ss'));
1138
1139 csi_item_instance_pub.get_item_instance_details (
1140 p_api_version => 1.0,
1141 p_commit => fnd_api.g_false,
1142 p_init_msg_list => fnd_api.g_true,
1143 p_validation_level => fnd_api.g_valid_level_full,
1144 p_instance_rec => g_inst_rec,
1145 p_get_parties => fnd_api.g_true,
1146 p_party_header_tbl => g_pty_tbl,
1147 p_get_accounts => fnd_api.g_true,
1148 p_account_header_tbl => g_pa_tbl,
1149 p_get_org_assignments => fnd_api.g_true,
1150 p_org_header_tbl => g_ou_tbl,
1151 p_get_pricing_attribs => fnd_api.g_true,
1152 p_pricing_attrib_tbl => g_prc_tbl,
1153 p_get_ext_attribs => fnd_api.g_true,
1154 p_ext_attrib_tbl => g_eav_tbl,
1155 p_ext_attrib_def_tbl => g_ea_tbl,
1156 p_get_asset_assignments => fnd_api.g_true,
1157 p_asset_header_tbl => g_asset_tbl,
1158 p_resolve_id_columns => fnd_api.g_false,
1159 p_time_stamp => fs_rec.date_time_stamp,
1160 x_return_status => l_return_status,
1161 x_msg_count => l_msg_count,
1162 x_msg_data => l_msg_data);
1163
1164 IF l_return_status <> fnd_api.g_ret_sts_success THEN
1165 RAISE fnd_api.g_exc_error;
1166 END IF;
1167
1168 -- some missed out or wrong data columns - re-query and populate
1169 SELECT customer_view_flag,
1170 merchant_view_flag,
1171 quantity,
1172 object_version_number
1173 INTO g_inst_rec.customer_view_flag,
1174 g_inst_rec.merchant_view_flag,
1175 g_inst_rec.quantity,
1176 g_inst_rec.object_version_number
1177 FROM csi_item_instances
1178 WHERE instance_id = g_inst_rec.instance_id;
1179
1180 g_vl_qry_rec.instance_id := g_inst_rec.instance_id;
1181
1182 -- get the version label on that day
1183 csi_item_instance_pub.get_version_labels(
1184 p_api_version => 1.0,
1188 p_version_label_query_rec => g_vl_qry_rec,
1185 p_commit => fnd_api.g_false,
1186 p_init_msg_list => fnd_api.g_true,
1187 p_validation_level => fnd_api.g_valid_level_full,
1189 p_time_stamp => fs_rec.date_time_stamp,
1190 x_version_label_tbl => g_vl_tbl,
1191 x_return_status => l_return_status,
1192 x_msg_count => l_msg_count,
1193 x_msg_data => l_msg_data);
1194
1195 IF l_return_status <> fnd_api.g_ret_sts_success THEN
1196 RAISE fnd_api.g_exc_error;
1197 END IF;
1198
1199 make_non_header(
1200 p_inst_h_rec => g_inst_rec,
1201 p_pty_h_tbl => g_pty_tbl,
1202 p_pa_h_tbl => g_pa_tbl,
1203 p_ou_h_tbl => g_ou_tbl,
1204 p_asset_h_tbl => g_asset_tbl,
1205 x_inst_rec => l_inst_rec,
1206 x_pty_tbl => l_pty_tbl,
1207 x_pa_tbl => l_pa_tbl,
1208 x_ou_tbl => l_ou_tbl,
1209 x_asset_tbl => l_asset_tbl,
1210 x_return_status => l_return_status);
1211
1212 l_csi_txn_rec.inv_material_transaction_id := fs_rec.mtl_txn_id;
1213
1214 csi_item_instance_pub.update_item_instance(
1215 p_api_version => 1.0,
1216 p_commit => fnd_api.g_false,
1217 p_init_msg_list => fnd_api.g_true,
1218 p_validation_level => fnd_api.g_valid_level_full,
1219 p_instance_rec => l_inst_rec,
1220 p_party_tbl => l_pty_tbl,
1221 p_account_tbl => l_pa_tbl,
1222 p_org_assignments_tbl => l_ou_tbl,
1223 p_ext_attrib_values_tbl => l_eav_tbl,
1224 p_pricing_attrib_tbl => l_prc_tbl,
1225 p_asset_assignment_tbl => l_asset_tbl,
1226 p_txn_rec => l_csi_txn_rec,
1227 x_instance_id_lst => l_inst_ids_tbl,
1228 x_return_status => l_return_status,
1229 x_msg_count => l_msg_count,
1230 x_msg_data => l_msg_data);
1231
1232 IF l_return_status not in (fnd_api.g_ret_sts_success, 'W') THEN
1233 RAISE fnd_api.g_exc_error;
1234 END IF;
1235
1236 l_vl_tbl := g_vl_tbl;
1237
1238 IF l_vl_tbl.count > 0 THEN
1239
1240 FOR l_ind IN l_vl_tbl.FIRST .. l_vl_tbl.LAST
1241 LOOP
1242 SELECT object_version_number
1243 INTO l_vl_tbl(l_ind).object_version_number
1244 FROM csi_i_version_labels
1245 WHERE version_label_id = l_vl_tbl(l_ind).version_label_id;
1246 END LOOP;
1247
1248 csi_item_instance_pub.update_version_label(
1249 p_api_version => 1.0,
1250 p_commit => fnd_api.g_false,
1251 p_init_msg_list => fnd_api.g_true,
1252 p_validation_level => fnd_api.g_valid_level_full,
1253 p_version_label_tbl => l_vl_tbl,
1254 p_txn_rec => l_csi_txn_rec,
1255 x_return_status => l_return_status,
1256 x_msg_count => l_msg_count,
1257 x_msg_data => l_msg_data);
1258
1259 IF l_return_status <> fnd_api.g_ret_sts_success THEN
1260 RAISE fnd_api.g_exc_error;
1261 END IF;
1262
1263 END IF;
1264
1265 g_iir_qry_rec.object_id := g_inst_rec.instance_id;
1266 g_iir_qry_rec.relationship_type_code := 'COMPONENT-OF';
1267
1268 csi_ii_relationships_pub.get_relationships(
1269 p_api_version => 1.0,
1270 p_commit => fnd_api.g_false,
1271 p_init_msg_list => fnd_api.g_true,
1272 p_validation_level => fnd_api.g_valid_level_full,
1273 p_relationship_query_rec => g_iir_qry_rec,
1274 p_depth => null,
1275 p_time_stamp => fs_rec.date_time_stamp,
1276 p_active_relationship_only => fnd_api.g_false,
1277 x_relationship_tbl => g_iir_tbl,
1278 x_return_status => l_return_status,
1279 x_msg_count => l_msg_count,
1280 x_msg_data => l_msg_data);
1281
1282 IF l_return_status <> fnd_api.g_ret_sts_success THEN
1283 RAISE fnd_api.g_exc_error;
1284 END IF;
1285
1286 IF g_iir_tbl.count > 0 THEN
1287 FOR l_ind IN g_iir_tbl.FIRST .. g_iir_tbl.LAST
1288 LOOP
1289 iir_ind := iir_ind + 1;
1290 l_iir_tbl(iir_ind) := g_iir_tbl(l_ind);
1291
1292 SELECT object_version_number
1293 INTO l_iir_tbl(iir_ind).object_version_number
1294 FROM csi_ii_relationships
1295 WHERE relationship_id = l_iir_tbl(iir_ind).relationship_id;
1296 END LOOP;
1297 END IF;
1298
1299 g_iir_qry_rec := l_iir_qry_rec;
1300 g_iir_tbl.delete;
1304
1301
1302 g_iir_qry_rec.subject_id := g_inst_rec.instance_id;
1303 g_iir_qry_rec.relationship_type_code := 'COMPONENT-OF';
1305 csi_ii_relationships_pub.get_relationships(
1306 p_api_version => 1.0,
1307 p_commit => fnd_api.g_false,
1308 p_init_msg_list => fnd_api.g_true,
1309 p_validation_level => fnd_api.g_valid_level_full,
1310 p_relationship_query_rec => g_iir_qry_rec,
1311 p_depth => NULL,
1312 p_time_stamp => fs_rec.date_time_stamp,
1313 p_active_relationship_only => fnd_api.g_false,
1314 x_relationship_tbl => g_iir_tbl,
1315 x_return_status => l_return_status,
1316 x_msg_count => l_msg_count,
1317 x_msg_data => l_msg_data);
1318
1319 IF l_return_status <> fnd_api.g_ret_sts_success THEN
1320 RAISE fnd_api.g_exc_error;
1321 END IF;
1322
1323 IF g_iir_tbl.count > 0 THEN
1324 FOR l_ind IN g_iir_tbl.FIRST .. g_iir_tbl.LAST
1325 LOOP
1326 iir_ind := iir_ind + 1;
1327 l_iir_tbl(iir_ind) := g_iir_tbl(l_ind);
1328 SELECT object_version_number
1329 INTO l_iir_tbl(iir_ind).object_version_number
1330 FROM csi_ii_relationships
1331 WHERE relationship_id = l_iir_tbl(iir_ind).relationship_id;
1332
1333 END LOOP;
1334 END IF;
1335
1336 IF l_iir_tbl.COUNT > 0 THEN
1337 csi_ii_relationships_pub.update_relationship (
1338 p_api_version => 1.0,
1339 p_commit => fnd_api.g_false,
1340 p_init_msg_list => fnd_api.g_true,
1341 p_validation_level => fnd_api.g_valid_level_full,
1342 p_relationship_tbl => l_iir_tbl,
1343 p_txn_rec => l_csi_txn_rec,
1344 x_return_status => l_return_status,
1345 x_msg_count => l_msg_count,
1346 x_msg_data => l_msg_data);
1347
1348 IF l_return_status not in (fnd_api.g_ret_sts_success, 'W') THEN
1349 RAISE fnd_api.g_exc_error;
1350 END IF;
1351 END IF;
1352
1353 UPDATE csi_ii_forward_sync_temp
1354 SET process_flag = 'P'
1355 WHERE instance_id = fs_rec.instance_id;
1356
1357 EXCEPTION
1358 WHEN fnd_api.g_exc_error THEN
1359 rollback to forward_sync;
1360 l_msg_data := csi_t_gen_utility_pvt.dump_error_stack;
1361 log('Error in forward_sync : '||fs_rec.instance_id||' : '||l_msg_data);
1362 END;
1363 END IF;
1364
1365 END LOOP;
1366
1367 EXCEPTION
1368 when others then
1369 log('OTHERS exception from forward sync : '||sqlerrm);
1370 END forward_sync;
1371 --
1372 PROCEDURE insert_full_dump(p_instance_id IN NUMBER) IS
1373 p_instance_rec CSI_DATASTRUCTURES_PUB.INSTANCE_HEADER_REC;
1374 p_temp_instance_rec CSI_DATASTRUCTURES_PUB.INSTANCE_HEADER_REC;
1375 p_party_header_tbl CSI_DATASTRUCTURES_PUB.PARTY_HEADER_TBL;
1376 p_account_header_tbl CSI_DATASTRUCTURES_PUB.PARTY_ACCOUNT_HEADER_TBL;
1377 p_org_header_tbl CSI_DATASTRUCTURES_PUB.ORG_UNITS_HEADER_TBL;
1378 p_pricing_attrib_tbl CSI_DATASTRUCTURES_PUB.PRICING_ATTRIBS_TBL;
1379 p_ext_attrib_tbl CSI_DATASTRUCTURES_PUB.EXTEND_ATTRIB_VALUES_TBL;
1380 p_ext_attrib_def_tbl CSI_DATASTRUCTURES_PUB.EXTEND_ATTRIB_TBL;
1381 p_asset_header_tbl CSI_DATASTRUCTURES_PUB.INSTANCE_ASSET_HEADER_TBL;
1382 p_ver_label_query_rec CSI_DATASTRUCTURES_PUB.VERSION_LABEL_QUERY_REC;
1383 p_rel_query_rec CSI_DATASTRUCTURES_PUB.RELATIONSHIP_QUERY_REC;
1384 p_temp_rel_query_rec CSI_DATASTRUCTURES_PUB.RELATIONSHIP_QUERY_REC;
1385 x_version_label_tbl csi_datastructures_pub.version_label_tbl;
1386 x_relationship_tbl csi_datastructures_pub.ii_relationship_tbl;
1387 l_init_msg_list VARCHAR2(2000);
1388 x_return_status VARCHAR2(2000);
1389 x_msg_count NUMBER;
1390 x_msg_data VARCHAR2(2000);
1391 l_msg_index NUMBER;
1392 l_msg_count NUMBER;
1393 --
1394 l_instance_tbl csi_datastructures_pub.instance_tbl;
1395 l_party_tbl csi_datastructures_pub.party_tbl;
1396 l_party_account_tbl csi_datastructures_pub.party_account_tbl;
1397 l_org_units_tbl csi_datastructures_pub.organization_units_tbl;
1398 l_pricing_attribs_tbl csi_datastructures_pub.pricing_attribs_tbl;
1399 l_ext_attrib_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
1400 l_instance_asset_tbl csi_datastructures_pub.instance_asset_tbl;
1401 l_version_label_tbl csi_datastructures_pub.version_label_tbl;
1402 l_ii_relationship_tbl csi_datastructures_pub.ii_relationship_tbl;
1403 --
1404 l_inst_rec_tab csi_diagnostics_pkg.instance_rec_tab;
1405 l_version_label_rec_tab csi_diagnostics_pkg.version_label_rec_tab;
1406 l_party_rec_tab csi_diagnostics_pkg.party_rec_tab;
1407 l_account_rec_tab csi_diagnostics_pkg.account_rec_tab;
1411 l_pricing_rec_tab csi_diagnostics_pkg.pricing_attribs_rec_tab;
1408 l_ext_attr_rec_tab csi_diagnostics_pkg.extend_attrib_values_rec_tab;
1409 l_asset_rec_tab csi_diagnostics_pkg.instance_asset_rec_tab;
1410 l_org_units_rec_tab csi_diagnostics_pkg.org_units_rec_tab;
1412 l_ii_relationship_rec_tab csi_diagnostics_pkg.ii_relationship_rec_tab;
1413 --
1414 l_inst_hist_tbl csi_diagnostics_pkg.T_NUM;
1415 l_party_hist_tbl csi_diagnostics_pkg.T_NUM;
1416 l_account_hist_tbl csi_diagnostics_pkg.T_NUM;
1417 l_org_hist_tbl csi_diagnostics_pkg.T_NUM;
1418 l_ext_hist_tbl csi_diagnostics_pkg.T_NUM;
1419 l_asset_hist_tbl csi_diagnostics_pkg.T_NUM;
1420 l_pricing_hist_tbl csi_diagnostics_pkg.T_NUM;
1421 l_rel_hist_tbl csi_diagnostics_pkg.T_NUM;
1422 l_ver_label_hist_tbl csi_diagnostics_pkg.T_NUM;
1423 --
1424 l_owner_src_table VARCHAR2(30);
1425 l_owner_party NUMBER;
1426 l_owner_account NUMBER;
1427 l_user_id NUMBER := fnd_global.user_id;
1428 l_txn_id NUMBER;
1429 v_txn_type_id NUMBER;
1430 l_char_ins_id VARCHAR2(50);
1431 --
1432 l_ctr NUMBER;
1433 l_exists VARCHAR2(1);
1434 --
1435 Process_next EXCEPTION;
1436 Comp_error EXCEPTION;
1437 --
1438 BEGIN
1439 savepoint Insert_Full_Dump;
1440 IF p_instance_id IS NULL OR p_instance_id = FND_API.G_MISS_NUM THEN
1441 Raise comp_error;
1442 END IF;
1443 -- Get the Transaction Type ID for Txn Type MIGRATED
1444 v_txn_type_id := correction_txn_type_id;
1445
1446 SELECT csi_transactions_s.nextval
1447 INTO l_txn_id
1448 FROM sys.dual;
1449
1450 --
1451 BEGIN
1452 p_instance_rec := p_temp_instance_rec;
1453 p_party_header_tbl.DELETE;
1454 p_account_header_tbl.DELETE;
1455 p_org_header_tbl.DELETE;
1456 p_pricing_attrib_tbl.DELETE;
1457 p_ext_attrib_tbl.DELETE;
1458 p_ext_attrib_def_tbl.DELETE;
1459 p_asset_header_tbl.DELETE;
1460 x_version_label_tbl.DELETE;
1461 x_relationship_tbl.DELETE;
1462 --
1463 l_exists := 'N';
1464 p_instance_rec.instance_id := p_instance_id;
1465 l_char_ins_id := to_char(p_instance_id);
1466
1467 -- Call Get API with the time stamp
1468 csi_item_instance_pub.get_item_instance_details (
1469 p_api_version => 1.0,
1470 p_commit => fnd_api.g_false,
1471 p_init_msg_list => fnd_api.g_true,
1472 p_validation_level => fnd_api.g_valid_level_full,
1473 p_instance_rec => p_instance_rec,
1474 p_get_parties => fnd_api.g_true,
1475 p_party_header_tbl => p_party_header_tbl,
1476 p_get_accounts => fnd_api.g_true,
1477 p_account_header_tbl => p_account_header_tbl,
1478 p_get_org_assignments => fnd_api.g_true,
1479 p_org_header_tbl => p_org_header_tbl,
1480 p_get_pricing_attribs => fnd_api.g_true,
1481 p_pricing_attrib_tbl => p_pricing_attrib_tbl,
1482 p_get_ext_attribs => fnd_api.g_true,
1483 p_ext_attrib_tbl => p_ext_attrib_tbl,
1484 p_ext_attrib_def_tbl => p_ext_attrib_def_tbl,
1485 p_get_asset_assignments => fnd_api.g_true,
1486 p_asset_header_tbl => p_asset_header_tbl,
1487 p_resolve_id_columns => fnd_api.g_false,
1488 p_time_stamp => sysdate,
1489 x_return_status => x_return_status,
1490 x_msg_count => x_msg_count,
1491 x_msg_data => x_msg_data);
1492 --
1493 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1494 l_msg_index := 1;
1495 l_msg_count := x_msg_count;
1496 WHILE l_msg_count > 0 LOOP
1497 x_msg_data := FND_MSG_PUB.GET ( l_msg_index, FND_API.G_FALSE );
1498 l_msg_index := l_msg_index + 1;
1499 l_msg_count := l_msg_count - 1;
1500 END LOOP;
1501 log('Error in Get_Item_Instance Details for Instance : '||l_char_ins_id||' '||x_msg_data);
1502 Raise Process_next;
1503 END IF;
1504 -- Build the Regular tables using the respective header tables
1505 -- Get the Customer and Merchant view flags
1506
1507 SELECT customer_view_flag,
1508 merchant_view_flag,
1509 quantity
1510 INTO p_instance_rec.customer_view_flag,
1511 p_instance_rec.merchant_view_flag,
1512 p_instance_rec.quantity
1513 FROM csi_item_instances
1514 WHERE instance_id = p_instance_rec.instance_id;
1515 --
1516 l_ctr := l_instance_tbl.count;
1517 l_ctr := l_ctr + 1;
1518 --
1519 l_instance_tbl(l_ctr).INSTANCE_ID := p_instance_rec.INSTANCE_ID;
1520 l_instance_tbl(l_ctr).INSTANCE_NUMBER := p_instance_rec.INSTANCE_NUMBER;
1521 l_instance_tbl(l_ctr).EXTERNAL_REFERENCE := p_instance_rec.EXTERNAL_REFERENCE;
1522 l_instance_tbl(l_ctr).INVENTORY_ITEM_ID := p_instance_rec.INVENTORY_ITEM_ID;
1523 l_instance_tbl(l_ctr).VLD_ORGANIZATION_ID := p_instance_rec.VLD_ORGANIZATION_ID;
1527 l_instance_tbl(l_ctr).MFG_SERIAL_NUMBER_FLAG := p_instance_rec.MFG_SERIAL_NUMBER_FLAG;
1524 l_instance_tbl(l_ctr).INVENTORY_REVISION := p_instance_rec.INVENTORY_REVISION;
1525 l_instance_tbl(l_ctr).INV_MASTER_ORGANIZATION_ID := p_instance_rec.INV_MASTER_ORGANIZATION_ID;
1526 l_instance_tbl(l_ctr).SERIAL_NUMBER := p_instance_rec.SERIAL_NUMBER;
1528 l_instance_tbl(l_ctr).LOT_NUMBER := p_instance_rec.LOT_NUMBER;
1529 l_instance_tbl(l_ctr).QUANTITY := p_instance_rec.QUANTITY;
1530 l_instance_tbl(l_ctr).UNIT_OF_MEASURE := p_instance_rec.UNIT_OF_MEASURE;
1531 l_instance_tbl(l_ctr).ACCOUNTING_CLASS_CODE := p_instance_rec.ACCOUNTING_CLASS_CODE;
1532 l_instance_tbl(l_ctr).INSTANCE_CONDITION_ID := p_instance_rec.INSTANCE_CONDITION_ID;
1533 l_instance_tbl(l_ctr).INSTANCE_STATUS_ID := p_instance_rec.INSTANCE_STATUS_ID;
1534 l_instance_tbl(l_ctr).CUSTOMER_VIEW_FLAG := p_instance_rec.CUSTOMER_VIEW_FLAG;
1535 l_instance_tbl(l_ctr).MERCHANT_VIEW_FLAG := p_instance_rec.MERCHANT_VIEW_FLAG;
1536 l_instance_tbl(l_ctr).SELLABLE_FLAG := p_instance_rec.SELLABLE_FLAG;
1537 l_instance_tbl(l_ctr).SYSTEM_ID := p_instance_rec.SYSTEM_ID;
1538 l_instance_tbl(l_ctr).INSTANCE_TYPE_CODE := p_instance_rec.INSTANCE_TYPE_CODE;
1539 l_instance_tbl(l_ctr).ACTIVE_START_DATE := p_instance_rec.ACTIVE_START_DATE;
1540 l_instance_tbl(l_ctr).ACTIVE_END_DATE := p_instance_rec.ACTIVE_END_DATE;
1541 l_instance_tbl(l_ctr).LOCATION_TYPE_CODE := p_instance_rec.LOCATION_TYPE_CODE;
1542 l_instance_tbl(l_ctr).LOCATION_ID := p_instance_rec.LOCATION_ID;
1543 l_instance_tbl(l_ctr).INV_ORGANIZATION_ID := p_instance_rec.INV_ORGANIZATION_ID;
1544 l_instance_tbl(l_ctr).INV_SUBINVENTORY_NAME := p_instance_rec.INV_SUBINVENTORY_NAME;
1545 l_instance_tbl(l_ctr).INV_LOCATOR_ID := p_instance_rec.INV_LOCATOR_ID;
1546 l_instance_tbl(l_ctr).PA_PROJECT_ID := p_instance_rec.PA_PROJECT_ID;
1547 l_instance_tbl(l_ctr).PA_PROJECT_TASK_ID := p_instance_rec.PA_PROJECT_TASK_ID;
1548 l_instance_tbl(l_ctr).IN_TRANSIT_ORDER_LINE_ID := p_instance_rec.IN_TRANSIT_ORDER_LINE_ID;
1549 l_instance_tbl(l_ctr).WIP_JOB_ID := p_instance_rec.WIP_JOB_ID;
1550 l_instance_tbl(l_ctr).PO_ORDER_LINE_ID := p_instance_rec.PO_ORDER_LINE_ID;
1551 l_instance_tbl(l_ctr).LAST_OE_ORDER_LINE_ID := p_instance_rec.LAST_OE_ORDER_LINE_ID;
1552 l_instance_tbl(l_ctr).LAST_OE_RMA_LINE_ID := p_instance_rec.LAST_OE_RMA_LINE_ID;
1553 l_instance_tbl(l_ctr).LAST_PO_PO_LINE_ID := p_instance_rec.LAST_PO_PO_LINE_ID;
1554 l_instance_tbl(l_ctr).LAST_OE_PO_NUMBER := p_instance_rec.LAST_OE_PO_NUMBER;
1555 l_instance_tbl(l_ctr).LAST_WIP_JOB_ID := p_instance_rec.LAST_WIP_JOB_ID;
1556 l_instance_tbl(l_ctr).LAST_PA_PROJECT_ID := p_instance_rec.LAST_PA_PROJECT_ID;
1557 l_instance_tbl(l_ctr).LAST_PA_TASK_ID := p_instance_rec.LAST_PA_TASK_ID;
1558 l_instance_tbl(l_ctr).LAST_OE_AGREEMENT_ID := p_instance_rec.LAST_OE_AGREEMENT_ID;
1559 l_instance_tbl(l_ctr).INSTALL_DATE := p_instance_rec.INSTALL_DATE;
1560 l_instance_tbl(l_ctr).MANUALLY_CREATED_FLAG := p_instance_rec.MANUALLY_CREATED_FLAG;
1561 l_instance_tbl(l_ctr).RETURN_BY_DATE := p_instance_rec.RETURN_BY_DATE;
1562 l_instance_tbl(l_ctr).ACTUAL_RETURN_DATE := p_instance_rec.ACTUAL_RETURN_DATE;
1563 l_instance_tbl(l_ctr).CREATION_COMPLETE_FLAG := p_instance_rec.CREATION_COMPLETE_FLAG;
1564 l_instance_tbl(l_ctr).COMPLETENESS_FLAG := p_instance_rec.COMPLETENESS_FLAG;
1565 l_instance_tbl(l_ctr).CONTEXT := p_instance_rec.CONTEXT;
1566 l_instance_tbl(l_ctr).ATTRIBUTE1 := p_instance_rec.ATTRIBUTE1;
1567 l_instance_tbl(l_ctr).ATTRIBUTE2 := p_instance_rec.ATTRIBUTE2;
1568 l_instance_tbl(l_ctr).ATTRIBUTE3 := p_instance_rec.ATTRIBUTE3;
1569 l_instance_tbl(l_ctr).ATTRIBUTE4 := p_instance_rec.ATTRIBUTE4;
1570 l_instance_tbl(l_ctr).ATTRIBUTE5 := p_instance_rec.ATTRIBUTE5;
1571 l_instance_tbl(l_ctr).ATTRIBUTE6 := p_instance_rec.ATTRIBUTE6;
1572 l_instance_tbl(l_ctr).ATTRIBUTE7 := p_instance_rec.ATTRIBUTE7;
1573 l_instance_tbl(l_ctr).ATTRIBUTE8 := p_instance_rec.ATTRIBUTE8;
1574 l_instance_tbl(l_ctr).ATTRIBUTE9 := p_instance_rec.ATTRIBUTE9;
1575 l_instance_tbl(l_ctr).ATTRIBUTE10 := p_instance_rec.ATTRIBUTE10;
1576 l_instance_tbl(l_ctr).ATTRIBUTE11 := p_instance_rec.ATTRIBUTE11;
1577 l_instance_tbl(l_ctr).ATTRIBUTE12 := p_instance_rec.ATTRIBUTE12;
1578 l_instance_tbl(l_ctr).ATTRIBUTE13 := p_instance_rec.ATTRIBUTE13;
1579 l_instance_tbl(l_ctr).ATTRIBUTE14 := p_instance_rec.ATTRIBUTE14;
1580 l_instance_tbl(l_ctr).ATTRIBUTE15 := p_instance_rec.ATTRIBUTE15;
1581 l_instance_tbl(l_ctr).OBJECT_VERSION_NUMBER := p_instance_rec.OBJECT_VERSION_NUMBER;
1582 l_instance_tbl(l_ctr).LAST_TXN_LINE_DETAIL_ID := p_instance_rec.LAST_TXN_LINE_DETAIL_ID;
1583 l_instance_tbl(l_ctr).INSTALL_LOCATION_TYPE_CODE := p_instance_rec.INSTALL_LOCATION_TYPE_CODE;
1584 l_instance_tbl(l_ctr).INSTALL_LOCATION_ID := p_instance_rec.INSTALL_LOCATION_ID;
1585 l_instance_tbl(l_ctr).INSTANCE_USAGE_CODE := p_instance_rec.INSTANCE_USAGE_CODE;
1586 l_instance_tbl(l_ctr).CONFIG_INST_HDR_ID := p_instance_rec.CONFIG_INST_HDR_ID;
1587 l_instance_tbl(l_ctr).CONFIG_INST_REV_NUM := p_instance_rec.CONFIG_INST_REV_NUM;
1588 l_instance_tbl(l_ctr).CONFIG_INST_ITEM_ID := p_instance_rec.CONFIG_INST_ITEM_ID;
1589 l_instance_tbl(l_ctr).CONFIG_VALID_STATUS := p_instance_rec.CONFIG_VALID_STATUS;
1590 l_instance_tbl(l_ctr).INSTANCE_DESCRIPTION := p_instance_rec.INSTANCE_DESCRIPTION;
1591 -- Build Party Table
1592 IF p_party_header_tbl.count > 0 THEN
1593 l_ctr := l_party_tbl.count;
1594 FOR i in p_party_header_tbl.FIRST .. p_party_header_tbl.LAST LOOP
1598 l_party_tbl(l_ctr).instance_id := p_party_header_tbl(i).instance_id;
1595 l_ctr := l_ctr + 1;
1596 --
1597 l_party_tbl(l_ctr).instance_party_id := p_party_header_tbl(i).instance_party_id;
1599 l_party_tbl(l_ctr).party_source_table := p_party_header_tbl(i).party_source_table;
1600 l_party_tbl(l_ctr).party_id := p_party_header_tbl(i).party_id;
1601 l_party_tbl(l_ctr).relationship_type_code := p_party_header_tbl(i).relationship_type_code;
1602 l_party_tbl(l_ctr).contact_flag := p_party_header_tbl(i).contact_flag;
1603 l_party_tbl(l_ctr).contact_ip_id := p_party_header_tbl(i).contact_ip_id;
1604 l_party_tbl(l_ctr).active_start_date := p_party_header_tbl(i).active_start_date;
1605 l_party_tbl(l_ctr).active_end_date := p_party_header_tbl(i).active_end_date;
1606 l_party_tbl(l_ctr).context := p_party_header_tbl(i).context;
1607 l_party_tbl(l_ctr).attribute1 := p_party_header_tbl(i).attribute1;
1608 l_party_tbl(l_ctr).attribute2 := p_party_header_tbl(i).attribute2;
1609 l_party_tbl(l_ctr).attribute3 := p_party_header_tbl(i).attribute3;
1610 l_party_tbl(l_ctr).attribute4 := p_party_header_tbl(i).attribute4;
1611 l_party_tbl(l_ctr).attribute5 := p_party_header_tbl(i).attribute5;
1612 l_party_tbl(l_ctr).attribute6 := p_party_header_tbl(i).attribute6;
1613 l_party_tbl(l_ctr).attribute7 := p_party_header_tbl(i).attribute7;
1614 l_party_tbl(l_ctr).attribute8 := p_party_header_tbl(i).attribute8;
1615 l_party_tbl(l_ctr).attribute9 := p_party_header_tbl(i).attribute9;
1616 l_party_tbl(l_ctr).attribute10 := p_party_header_tbl(i).attribute10;
1617 l_party_tbl(l_ctr).attribute11 := p_party_header_tbl(i).attribute11;
1618 l_party_tbl(l_ctr).attribute12 := p_party_header_tbl(i).attribute12;
1619 l_party_tbl(l_ctr).attribute13 := p_party_header_tbl(i).attribute13;
1620 l_party_tbl(l_ctr).attribute14 := p_party_header_tbl(i).attribute14;
1621 l_party_tbl(l_ctr).attribute15 := p_party_header_tbl(i).attribute15;
1622 l_party_tbl(l_ctr).object_version_number := p_party_header_tbl(i).object_version_number;
1623 l_party_tbl(l_ctr).primary_flag := p_party_header_tbl(i).primary_flag;
1624 l_party_tbl(l_ctr).preferred_flag := p_party_header_tbl(i).preferred_flag;
1625 END LOOP;
1626 END IF;
1627 --
1628 -- Build Account Table from Account Header Table
1629 IF p_account_header_tbl.count > 0 THEN
1630 l_ctr := l_party_account_tbl.count;
1631 FOR i in p_account_header_tbl.FIRST .. p_account_header_tbl.LAST LOOP
1632 l_ctr := l_ctr + 1;
1633 --
1634 l_party_account_tbl(l_ctr).ip_account_id := p_account_header_tbl(i).ip_account_id;
1635 l_party_account_tbl(l_ctr).instance_party_id := p_account_header_tbl(i).instance_party_id;
1636 l_party_account_tbl(l_ctr).party_account_id := p_account_header_tbl(i).party_account_id;
1637 l_party_account_tbl(l_ctr).relationship_type_code := p_account_header_tbl(i).relationship_type_code;
1638 l_party_account_tbl(l_ctr).bill_to_address := p_account_header_tbl(i).bill_to_address;
1639 l_party_account_tbl(l_ctr).ship_to_address := p_account_header_tbl(i).ship_to_address;
1640 l_party_account_tbl(l_ctr).active_start_date := p_account_header_tbl(i).active_start_date;
1641 l_party_account_tbl(l_ctr).active_end_date := p_account_header_tbl(i).active_end_date;
1642 l_party_account_tbl(l_ctr).context := p_account_header_tbl(i).context;
1643 l_party_account_tbl(l_ctr).attribute1 := p_account_header_tbl(i).attribute1;
1644 l_party_account_tbl(l_ctr).attribute2 := p_account_header_tbl(i).attribute2;
1645 l_party_account_tbl(l_ctr).attribute3 := p_account_header_tbl(i).attribute3;
1646 l_party_account_tbl(l_ctr).attribute4 := p_account_header_tbl(i).attribute4;
1647 l_party_account_tbl(l_ctr).attribute5 := p_account_header_tbl(i).attribute5;
1648 l_party_account_tbl(l_ctr).attribute6 := p_account_header_tbl(i).attribute6;
1649 l_party_account_tbl(l_ctr).attribute7 := p_account_header_tbl(i).attribute7;
1650 l_party_account_tbl(l_ctr).attribute8 := p_account_header_tbl(i).attribute8;
1651 l_party_account_tbl(l_ctr).attribute9 := p_account_header_tbl(i).attribute9;
1652 l_party_account_tbl(l_ctr).attribute10 := p_account_header_tbl(i).attribute10;
1653 l_party_account_tbl(l_ctr).attribute11 := p_account_header_tbl(i).attribute11;
1654 l_party_account_tbl(l_ctr).attribute12 := p_account_header_tbl(i).attribute12;
1655 l_party_account_tbl(l_ctr).attribute13 := p_account_header_tbl(i).attribute13;
1656 l_party_account_tbl(l_ctr).attribute14 := p_account_header_tbl(i).attribute14;
1657 l_party_account_tbl(l_ctr).attribute15 := p_account_header_tbl(i).attribute15;
1658 l_party_account_tbl(l_ctr).object_version_number := p_account_header_tbl(i).object_version_number;
1659 END LOOP;
1660 END IF;
1661 -- Build org Assignments table
1662 IF p_org_header_tbl.count > 0 THEN
1663 l_ctr := l_org_units_tbl.count;
1664 FOR i in p_org_header_tbl.FIRST .. p_org_header_tbl.LAST LOOP
1665 l_ctr := l_ctr + 1;
1666 --
1667 l_org_units_tbl(l_ctr).instance_ou_id := p_org_header_tbl(i).instance_ou_id;
1668 l_org_units_tbl(l_ctr).instance_id := p_org_header_tbl(i).instance_id;
1672 l_org_units_tbl(l_ctr).active_end_date := p_org_header_tbl(i).active_end_date;
1669 l_org_units_tbl(l_ctr).operating_unit_id := p_org_header_tbl(i).operating_unit_id;
1670 l_org_units_tbl(l_ctr).relationship_type_code := p_org_header_tbl(i).relationship_type_code;
1671 l_org_units_tbl(l_ctr).active_start_date := p_org_header_tbl(i).active_start_date;
1673 l_org_units_tbl(l_ctr).context := p_org_header_tbl(i).context;
1674 l_org_units_tbl(l_ctr).attribute1 := p_org_header_tbl(i).attribute1;
1675 l_org_units_tbl(l_ctr).attribute2 := p_org_header_tbl(i).attribute2;
1676 l_org_units_tbl(l_ctr).attribute3 := p_org_header_tbl(i).attribute3;
1677 l_org_units_tbl(l_ctr).attribute4 := p_org_header_tbl(i).attribute4;
1678 l_org_units_tbl(l_ctr).attribute5 := p_org_header_tbl(i).attribute5;
1679 l_org_units_tbl(l_ctr).attribute6 := p_org_header_tbl(i).attribute6;
1680 l_org_units_tbl(l_ctr).attribute7 := p_org_header_tbl(i).attribute7;
1681 l_org_units_tbl(l_ctr).attribute8 := p_org_header_tbl(i).attribute8;
1682 l_org_units_tbl(l_ctr).attribute9 := p_org_header_tbl(i).attribute9;
1683 l_org_units_tbl(l_ctr).attribute10 := p_org_header_tbl(i).attribute10;
1684 l_org_units_tbl(l_ctr).attribute11 := p_org_header_tbl(i).attribute11;
1685 l_org_units_tbl(l_ctr).attribute12 := p_org_header_tbl(i).attribute12;
1686 l_org_units_tbl(l_ctr).attribute13 := p_org_header_tbl(i).attribute13;
1687 l_org_units_tbl(l_ctr).attribute14 := p_org_header_tbl(i).attribute14;
1688 l_org_units_tbl(l_ctr).attribute15 := p_org_header_tbl(i).attribute15;
1689 l_org_units_tbl(l_ctr).object_version_number := p_org_header_tbl(i).object_version_number;
1690 END LOOP;
1691 END IF;
1692 -- Build Pricing Attrib Table
1693 IF p_pricing_attrib_tbl.count > 0 THEN
1694 l_ctr := l_pricing_attribs_tbl.count;
1695 FOR i in p_pricing_attrib_tbl.FIRST .. p_pricing_attrib_tbl.LAST LOOP
1696 l_ctr := l_ctr + 1;
1697 l_pricing_attribs_tbl(l_ctr) := p_pricing_attrib_tbl(i);
1698 END LOOP;
1699 END IF;
1700
1701 -- Build Extended Attributes Table
1702 IF p_ext_attrib_tbl.count > 0 THEN
1703 l_ctr := l_ext_attrib_values_tbl.count;
1704 FOR i in p_ext_attrib_tbl.FIRST .. p_ext_attrib_tbl.LAST LOOP
1705 l_ctr := l_ctr + 1;
1706 l_ext_attrib_values_tbl(l_ctr) := p_ext_attrib_tbl(i);
1707 END LOOP;
1708 END IF;
1709
1710 -- Build Instance Asset Table
1711 IF p_asset_header_tbl.count > 0 THEN
1712 l_ctr := l_instance_asset_tbl.count;
1713 FOR i in p_asset_header_tbl.FIRST .. p_asset_header_tbl.LAST LOOP
1714 l_ctr := l_ctr + 1;
1715 --
1716 l_instance_asset_tbl(l_ctr).instance_asset_id := p_asset_header_tbl(i).instance_asset_id;
1717 l_instance_asset_tbl(l_ctr).instance_id := p_asset_header_tbl(i).instance_id;
1718 l_instance_asset_tbl(l_ctr).fa_asset_id := p_asset_header_tbl(i).fa_asset_id;
1719 l_instance_asset_tbl(l_ctr).fa_book_type_code := p_asset_header_tbl(i).fa_book_type_code;
1720 l_instance_asset_tbl(l_ctr).fa_location_id := p_asset_header_tbl(i).fa_location_id;
1721 l_instance_asset_tbl(l_ctr).asset_quantity := p_asset_header_tbl(i).asset_quantity;
1722 l_instance_asset_tbl(l_ctr).update_status := p_asset_header_tbl(i).update_status;
1723 l_instance_asset_tbl(l_ctr).active_start_date := p_asset_header_tbl(i).active_start_date;
1724 l_instance_asset_tbl(l_ctr).active_end_date := p_asset_header_tbl(i).active_end_date;
1725 l_instance_asset_tbl(l_ctr).object_version_number := p_asset_header_tbl(i).object_version_number;
1726 END LOOP;
1727 END IF;
1728
1729 -- Add version Label. Use Get_Version_Label API
1730 p_ver_label_query_rec.instance_id := p_instance_id;
1731 csi_item_instance_pub.get_version_labels (
1732 p_api_version => 1.0,
1733 p_commit => fnd_api.g_false,
1734 p_init_msg_list => l_init_msg_list,
1735 p_validation_level => fnd_api.g_valid_level_full,
1736 p_version_label_query_rec => p_ver_label_query_rec,
1737 p_time_stamp => fnd_api.g_miss_date,
1738 x_version_label_tbl => x_version_label_tbl,
1739 x_return_status => x_return_status,
1740 x_msg_count => x_msg_count,
1741 x_msg_data => x_msg_data);
1742
1743 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1744 IF x_version_label_tbl.count > 0 THEN
1745 l_ctr := l_version_label_tbl.count;
1746 FOR i in x_version_label_tbl.FIRST .. x_version_label_tbl.LAST LOOP
1747 l_ctr := l_ctr + 1;
1748 l_version_label_tbl(l_ctr) := x_version_label_tbl(i);
1749 END LOOP;
1750 END IF;
1751 END IF;
1752
1753 --
1754 -- Add Get Relationships API
1755 p_rel_query_rec := p_temp_rel_query_rec;
1756 p_rel_query_rec.object_id := p_instance_id;
1757 p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
1758 csi_ii_relationships_pub.get_relationships(
1759 p_api_version => 1.0,
1760 p_commit => fnd_api.g_false,
1761 p_init_msg_list => l_init_msg_list,
1762 p_validation_level => fnd_api.g_valid_level_full,
1763 p_relationship_query_rec => p_rel_query_rec,
1767 x_relationship_tbl => x_relationship_tbl,
1764 p_depth => NULL,
1765 p_time_stamp => fnd_api.g_miss_date,
1766 p_active_relationship_only => fnd_api.g_true, -- BUG#5897084
1768 x_return_status => x_return_status,
1769 x_msg_count => x_msg_count,
1770 x_msg_data => x_msg_data);
1771 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1772 IF x_relationship_tbl.count > 0 THEN
1773 FOR i in x_relationship_tbl.FIRST .. x_relationship_tbl.LAST LOOP
1774 l_exists := 'N';
1775 IF l_ii_relationship_tbl.count > 0 THEN
1776 FOR k in l_ii_relationship_tbl.FIRST .. l_ii_relationship_tbl.LAST LOOP
1777 IF l_ii_relationship_tbl(k).relationship_id = x_relationship_tbl(i).relationship_id THEN
1778 l_exists := 'Y';
1779 exit;
1780 END IF;
1781 END LOOP;
1782 END IF;
1783 IF l_exists <> 'Y' THEN
1784 l_ctr := l_ii_relationship_tbl.count;
1785 l_ctr := l_ctr + 1;
1786 l_ii_relationship_tbl(l_ctr) := x_relationship_tbl(i);
1787 END IF;
1788 END LOOP;
1789 END IF;
1790 END IF;
1791 --
1792 p_rel_query_rec := p_temp_rel_query_rec;
1793 p_rel_query_rec.subject_id := p_instance_id;
1794 p_rel_query_rec.relationship_type_code := 'COMPONENT-OF';
1795 csi_ii_relationships_pub.get_relationships(
1796 p_api_version => 1.0,
1797 p_commit => fnd_api.g_false,
1798 p_init_msg_list => l_init_msg_list,
1799 p_validation_level => fnd_api.g_valid_level_full,
1800 p_relationship_query_rec => p_rel_query_rec,
1801 p_depth => NULL,
1802 p_time_stamp => fnd_api.g_miss_date,
1803 p_active_relationship_only => fnd_api.g_true, -- BUG#5897084
1804 x_relationship_tbl => x_relationship_tbl,
1805 x_return_status => x_return_status,
1806 x_msg_count => x_msg_count,
1807 x_msg_data => x_msg_data);
1808 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1809 IF x_relationship_tbl.count > 0 THEN
1810 FOR i in x_relationship_tbl.FIRST .. x_relationship_tbl.LAST LOOP
1811 l_exists := 'N';
1812 IF l_ii_relationship_tbl.count > 0 THEN
1813 FOR k in l_ii_relationship_tbl.FIRST .. l_ii_relationship_tbl.LAST LOOP
1814 IF l_ii_relationship_tbl(k).relationship_id = x_relationship_tbl(i).relationship_id THEN
1815 l_exists := 'Y';
1816 exit;
1817 END IF;
1818 END LOOP;
1819 END IF;
1820 IF l_exists <> 'Y' THEN
1821 l_ctr := l_ii_relationship_tbl.count;
1822 l_ctr := l_ctr + 1;
1823 l_ii_relationship_tbl(l_ctr) := x_relationship_tbl(i);
1824 END IF;
1825 END LOOP;
1826 END IF;
1827 END IF;
1828 --
1829 EXCEPTION
1830 when Process_next then
1831 null;
1832 End;
1833
1834 --
1835 IF l_instance_tbl.count > 0 THEN
1836 log('Before Build_Inst_Rec_of_Table');
1837 build_inst_rec_of_table (
1838 p_inst_tbl => l_instance_tbl ,
1839 p_inst_rec_tab => l_inst_rec_tab ,
1840 p_inst_hist_tbl => l_inst_hist_tbl);
1841 --
1842 l_ctr := l_inst_rec_tab.instance_id.count;
1843 -- Insert into History
1844 log('Before Inserting into Instances history..');
1845 FORALL i in 1 .. l_inst_rec_tab.instance_id.count
1846 INSERT INTO CSI_ITEM_INSTANCES_H(
1847 INSTANCE_HISTORY_ID,
1848 INSTANCE_ID,
1849 TRANSACTION_ID,
1850 NEW_INSTANCE_NUMBER,
1851 NEW_EXTERNAL_REFERENCE,
1852 NEW_INVENTORY_ITEM_ID,
1853 NEW_INVENTORY_REVISION,
1854 NEW_INV_MASTER_ORGANIZATION_ID,
1855 NEW_SERIAL_NUMBER ,
1856 NEW_MFG_SERIAL_NUMBER_FLAG,
1857 NEW_LOT_NUMBER,
1858 NEW_QUANTITY,
1859 NEW_UNIT_OF_MEASURE,
1860 NEW_ACCOUNTING_CLASS_CODE,
1861 NEW_INSTANCE_CONDITION_ID,
1862 NEW_INSTANCE_STATUS_ID,
1863 NEW_CUSTOMER_VIEW_FLAG,
1864 NEW_MERCHANT_VIEW_FLAG,
1865 NEW_SELLABLE_FLAG,
1866 NEW_SYSTEM_ID,
1867 NEW_INSTANCE_TYPE_CODE,
1868 NEW_ACTIVE_START_DATE,
1869 NEW_ACTIVE_END_DATE,
1870 NEW_LOCATION_TYPE_CODE,
1871 NEW_LOCATION_ID,
1872 NEW_INV_ORGANIZATION_ID,
1873 NEW_INV_SUBINVENTORY_NAME,
1874 NEW_INV_LOCATOR_ID,
1875 NEW_PA_PROJECT_ID,
1876 NEW_PA_PROJECT_TASK_ID,
1877 NEW_IN_TRANSIT_ORDER_LINE_ID,
1878 NEW_WIP_JOB_ID,
1879 NEW_PO_ORDER_LINE_ID,
1880 NEW_COMPLETENESS_FLAG,
1881 FULL_DUMP_FLAG,
1882 NEW_CONTEXT,
1883 NEW_ATTRIBUTE1,
1884 NEW_ATTRIBUTE2,
1885 NEW_ATTRIBUTE3,
1889 NEW_ATTRIBUTE7,
1886 NEW_ATTRIBUTE4,
1887 NEW_ATTRIBUTE5,
1888 NEW_ATTRIBUTE6,
1890 NEW_ATTRIBUTE8,
1891 NEW_ATTRIBUTE9,
1892 NEW_ATTRIBUTE10,
1893 NEW_ATTRIBUTE11,
1894 NEW_ATTRIBUTE12,
1895 NEW_ATTRIBUTE13,
1896 NEW_ATTRIBUTE14,
1897 NEW_ATTRIBUTE15,
1898 CREATED_BY,
1899 CREATION_DATE,
1900 LAST_UPDATED_BY,
1901 LAST_UPDATE_DATE,
1902 LAST_UPDATE_LOGIN,
1903 OBJECT_VERSION_NUMBER,
1904 NEW_INST_LOC_TYPE_CODE,
1905 NEW_INST_LOC_ID,
1906 NEW_INST_USAGE_CODE,
1907 NEW_last_vld_organization_id,
1908 NEW_CONFIG_INST_REV_NUM,
1909 NEW_CONFIG_VALID_STATUS,
1910 NEW_INSTANCE_DESCRIPTION)
1911 VALUES(
1912 l_inst_hist_tbl(i),
1913 l_inst_rec_tab.INSTANCE_ID(i),
1914 l_txn_id,
1915 l_inst_rec_tab.INSTANCE_NUMBER(i),
1916 l_inst_rec_tab.EXTERNAL_REFERENCE(i),
1917 l_inst_rec_tab.INVENTORY_ITEM_ID(i),
1918 l_inst_rec_tab.INVENTORY_REVISION(i),
1919 l_inst_rec_tab.INV_MASTER_ORGANIZATION_ID(i),
1920 l_inst_rec_tab.SERIAL_NUMBER (i),
1921 l_inst_rec_tab.MFG_SERIAL_NUMBER_FLAG(i),
1922 l_inst_rec_tab.LOT_NUMBER(i),
1923 l_inst_rec_tab.QUANTITY(i),
1924 l_inst_rec_tab.UNIT_OF_MEASURE(i),
1925 l_inst_rec_tab.ACCOUNTING_CLASS_CODE(i),
1926 l_inst_rec_tab.INSTANCE_CONDITION_ID(i),
1927 l_inst_rec_tab.INSTANCE_STATUS_ID(i),
1928 l_inst_rec_tab.CUSTOMER_VIEW_FLAG(i),
1929 l_inst_rec_tab.MERCHANT_VIEW_FLAG(i),
1930 l_inst_rec_tab.SELLABLE_FLAG(i),
1931 l_inst_rec_tab.SYSTEM_ID(i),
1932 l_inst_rec_tab.INSTANCE_TYPE_CODE(i),
1933 l_inst_rec_tab.ACTIVE_START_DATE(i),
1934 l_inst_rec_tab.ACTIVE_END_DATE(i),
1935 l_inst_rec_tab.LOCATION_TYPE_CODE(i),
1936 l_inst_rec_tab.LOCATION_ID(i),
1937 l_inst_rec_tab.INV_ORGANIZATION_ID(i),
1938 l_inst_rec_tab.INV_SUBINVENTORY_NAME(i),
1939 l_inst_rec_tab.INV_LOCATOR_ID(i),
1940 l_inst_rec_tab.PA_PROJECT_ID(i),
1941 l_inst_rec_tab.PA_PROJECT_TASK_ID(i),
1942 l_inst_rec_tab.IN_TRANSIT_ORDER_LINE_ID(i),
1943 l_inst_rec_tab.WIP_JOB_ID(i),
1944 l_inst_rec_tab.PO_ORDER_LINE_ID(i),
1945 l_inst_rec_tab.COMPLETENESS_FLAG(i),
1946 'Y',
1947 l_inst_rec_tab.CONTEXT(i),
1948 l_inst_rec_tab.ATTRIBUTE1(i),
1949 l_inst_rec_tab.ATTRIBUTE2(i),
1950 l_inst_rec_tab.ATTRIBUTE3(i),
1951 l_inst_rec_tab.ATTRIBUTE4(i),
1952 l_inst_rec_tab.ATTRIBUTE5(i),
1953 l_inst_rec_tab.ATTRIBUTE6(i),
1954 l_inst_rec_tab.ATTRIBUTE7(i),
1955 l_inst_rec_tab.ATTRIBUTE8(i),
1956 l_inst_rec_tab.ATTRIBUTE9(i),
1957 l_inst_rec_tab.ATTRIBUTE10(i),
1958 l_inst_rec_tab.ATTRIBUTE11(i),
1959 l_inst_rec_tab.ATTRIBUTE12(i),
1960 l_inst_rec_tab.ATTRIBUTE13(i),
1961 l_inst_rec_tab.ATTRIBUTE14(i),
1962 l_inst_rec_tab.ATTRIBUTE15(i),
1963 l_user_id,
1964 sysdate,
1965 l_user_id,
1966 sysdate,
1967 -1,
1968 1,
1969 l_inst_rec_tab.INSTALL_LOCATION_TYPE_CODE(i), --fix for bug4881769
1970 l_inst_rec_tab.INSTALL_LOCATION_ID(i),
1971 l_inst_rec_tab.INSTANCE_USAGE_CODE(i),
1972 l_inst_rec_tab.vld_organization_id(i),
1973 l_inst_rec_tab.CONFIG_INST_REV_NUM(i),
1974 l_inst_rec_tab.CONFIG_VALID_STATUS(i),
1975 l_inst_rec_tab.INSTANCE_DESCRIPTION(i));
1976 END IF;
1977 --
1978 IF l_version_label_tbl.count > 0 THEN
1979 log('Before Build_Ver_Label_Rec_of_Table');
1980 Build_Ver_Label_Rec_of_Table (
1981 p_version_label_tbl => l_version_label_tbl,
1982 p_version_label_rec_tab => l_version_label_rec_tab,
1983 p_ver_label_hist_tbl => l_ver_label_hist_tbl);
1984 --
1985 l_ctr := l_version_label_rec_tab.version_label_id.count;
1986 -- Insert into History
1987 log('Before Inserting into Version Labels history ..');
1988 FORALL i in 1 .. l_version_label_rec_tab.version_label_id.count
1989 INSERT INTO CSI_I_VERSION_LABELS_H(
1990 VERSION_LABEL_HISTORY_ID,
1991 VERSION_LABEL_ID,
1992 TRANSACTION_ID,
1993 NEW_VERSION_LABEL,
1994 NEW_DESCRIPTION,
1995 NEW_DATE_TIME_STAMP,
1996 NEW_ACTIVE_START_DATE,
1997 NEW_ACTIVE_END_DATE,
1998 NEW_CONTEXT,
1999 NEW_ATTRIBUTE1,
2000 NEW_ATTRIBUTE2,
2001 NEW_ATTRIBUTE3,
2002 NEW_ATTRIBUTE4,
2003 NEW_ATTRIBUTE5,
2004 NEW_ATTRIBUTE6,
2005 NEW_ATTRIBUTE7,
2006 NEW_ATTRIBUTE8,
2007 NEW_ATTRIBUTE9,
2008 NEW_ATTRIBUTE10,
2009 NEW_ATTRIBUTE11,
2010 NEW_ATTRIBUTE12,
2011 NEW_ATTRIBUTE13,
2012 NEW_ATTRIBUTE14,
2013 NEW_ATTRIBUTE15,
2014 FULL_DUMP_FLAG,
2015 CREATED_BY,
2016 CREATION_DATE,
2017 LAST_UPDATED_BY,
2021 VALUES(
2018 LAST_UPDATE_DATE,
2019 LAST_UPDATE_LOGIN,
2020 OBJECT_VERSION_NUMBER)
2022 l_ver_label_hist_tbl(i),
2023 l_version_label_rec_tab.VERSION_LABEL_ID(i),
2024 l_txn_id,
2025 l_version_label_rec_tab.VERSION_LABEL(i),
2026 l_version_label_rec_tab.DESCRIPTION(i),
2027 l_version_label_rec_tab.DATE_TIME_STAMP(i),
2028 l_version_label_rec_tab.ACTIVE_START_DATE(i),
2029 l_version_label_rec_tab.ACTIVE_END_DATE(i),
2030 l_version_label_rec_tab.CONTEXT(i),
2031 l_version_label_rec_tab.ATTRIBUTE1(i),
2032 l_version_label_rec_tab.ATTRIBUTE2(i),
2033 l_version_label_rec_tab.ATTRIBUTE3(i),
2034 l_version_label_rec_tab.ATTRIBUTE4(i),
2035 l_version_label_rec_tab.ATTRIBUTE5(i),
2036 l_version_label_rec_tab.ATTRIBUTE6(i),
2037 l_version_label_rec_tab.ATTRIBUTE7(i),
2038 l_version_label_rec_tab.ATTRIBUTE8(i),
2039 l_version_label_rec_tab.ATTRIBUTE9(i),
2040 l_version_label_rec_tab.ATTRIBUTE10(i),
2041 l_version_label_rec_tab.ATTRIBUTE11(i),
2042 l_version_label_rec_tab.ATTRIBUTE12(i),
2043 l_version_label_rec_tab.ATTRIBUTE13(i),
2044 l_version_label_rec_tab.ATTRIBUTE14(i),
2045 l_version_label_rec_tab.ATTRIBUTE15(i),
2046 'Y',
2047 l_user_id,
2048 sysdate,
2049 l_user_id,
2050 sysdate,
2051 -1,
2052 1);
2053 END IF;
2054 --
2055 IF l_party_tbl.count > 0 THEN
2056 log('Before Build_Party_Rec_of_Table');
2057 build_party_rec_of_table(
2058 p_party_tbl => l_party_tbl,
2059 p_party_rec_tab => l_party_rec_tab,
2060 p_party_hist_tbl => l_party_hist_tbl);
2061 --
2062 l_ctr := l_party_rec_tab.instance_party_id.count;
2063 --
2064 -- Insert into History
2065 log('Before inserting into Parties history..');
2066 FORALL i in 1 .. l_party_rec_tab.instance_party_id.count
2067 INSERT INTO CSI_I_PARTIES_H(
2068 INSTANCE_PARTY_HISTORY_ID,
2069 INSTANCE_PARTY_ID,
2070 TRANSACTION_ID,
2071 NEW_PARTY_SOURCE_TABLE,
2072 NEW_PARTY_ID,
2073 NEW_RELATIONSHIP_TYPE_CODE,
2074 NEW_CONTACT_FLAG,
2075 NEW_CONTACT_IP_ID,
2076 NEW_ACTIVE_START_DATE,
2077 NEW_ACTIVE_END_DATE,
2078 NEW_CONTEXT,
2079 NEW_ATTRIBUTE1,
2080 NEW_ATTRIBUTE2,
2081 NEW_ATTRIBUTE3,
2082 NEW_ATTRIBUTE4,
2083 NEW_ATTRIBUTE5,
2084 NEW_ATTRIBUTE6,
2085 NEW_ATTRIBUTE7,
2086 NEW_ATTRIBUTE8,
2087 NEW_ATTRIBUTE9,
2088 NEW_ATTRIBUTE10,
2089 NEW_ATTRIBUTE11,
2090 NEW_ATTRIBUTE12,
2091 NEW_ATTRIBUTE13,
2092 NEW_ATTRIBUTE14,
2093 NEW_ATTRIBUTE15,
2094 NEW_PRIMARY_FLAG,
2095 NEW_PREFERRED_FLAG,
2096 FULL_DUMP_FLAG,
2097 CREATED_BY,
2098 CREATION_DATE,
2099 LAST_UPDATED_BY,
2100 LAST_UPDATE_DATE,
2101 LAST_UPDATE_LOGIN,
2102 OBJECT_VERSION_NUMBER)
2103 VALUES(
2104 l_party_hist_tbl(i),
2105 l_party_rec_tab.INSTANCE_PARTY_ID(i),
2106 l_txn_id,
2107 l_party_rec_tab.PARTY_SOURCE_TABLE(i),
2108 l_party_rec_tab.PARTY_ID(i),
2109 l_party_rec_tab.RELATIONSHIP_TYPE_CODE(i),
2110 l_party_rec_tab.CONTACT_FLAG(i),
2111 l_party_rec_tab.CONTACT_IP_ID(i),
2112 l_party_rec_tab.ACTIVE_START_DATE(i),
2113 l_party_rec_tab.ACTIVE_END_DATE(i),
2114 l_party_rec_tab.CONTEXT(i),
2115 l_party_rec_tab.ATTRIBUTE1(i),
2116 l_party_rec_tab.ATTRIBUTE2(i),
2117 l_party_rec_tab.ATTRIBUTE3(i),
2118 l_party_rec_tab.ATTRIBUTE4(i),
2119 l_party_rec_tab.ATTRIBUTE5(i),
2120 l_party_rec_tab.ATTRIBUTE6(i),
2121 l_party_rec_tab.ATTRIBUTE7(i),
2122 l_party_rec_tab.ATTRIBUTE8(i),
2123 l_party_rec_tab.ATTRIBUTE9(i),
2124 l_party_rec_tab.ATTRIBUTE10(i),
2125 l_party_rec_tab.ATTRIBUTE11(i),
2126 l_party_rec_tab.ATTRIBUTE12(i),
2127 l_party_rec_tab.ATTRIBUTE13(i),
2128 l_party_rec_tab.ATTRIBUTE14(i),
2129 l_party_rec_tab.ATTRIBUTE15(i),
2130 l_party_rec_tab.PRIMARY_FLAG(i),
2131 l_party_rec_tab.PREFERRED_FLAG(i),
2132 'Y',
2133 l_user_id,
2134 sysdate,
2135 l_user_id,
2136 sysdate,
2137 -1,
2138 1);
2139 END IF;
2140 --
2141 IF l_party_account_tbl.count > 0 THEN
2142 log('Before Build_Acct_Rec_of_Table');
2143 Build_Acct_Rec_of_Table(
2144 p_account_tbl => l_party_account_tbl,
2145 p_account_rec_tab => l_account_rec_tab,
2146 p_account_hist_tbl => l_account_hist_tbl);
2147 --
2148 l_ctr := l_account_rec_tab.ip_account_id.count;
2149 --
2150 -- Insert into History
2151 log('Before Inserting into Party Accounts history');
2152 FORALL i in 1 .. l_account_rec_tab.ip_account_id.count
2153 INSERT INTO CSI_IP_ACCOUNTS_H(
2154 IP_ACCOUNT_HISTORY_ID,
2155 IP_ACCOUNT_ID,
2156 TRANSACTION_ID,
2157 NEW_PARTY_ACCOUNT_ID,
2161 NEW_CONTEXT,
2158 NEW_RELATIONSHIP_TYPE_CODE,
2159 NEW_ACTIVE_START_DATE,
2160 NEW_ACTIVE_END_DATE,
2162 NEW_ATTRIBUTE1,
2163 NEW_ATTRIBUTE2,
2164 NEW_ATTRIBUTE3,
2165 NEW_ATTRIBUTE4,
2166 NEW_ATTRIBUTE5,
2167 NEW_ATTRIBUTE6,
2168 NEW_ATTRIBUTE7,
2169 NEW_ATTRIBUTE8,
2170 NEW_ATTRIBUTE9,
2171 NEW_ATTRIBUTE10,
2172 NEW_ATTRIBUTE11,
2173 NEW_ATTRIBUTE12,
2174 NEW_ATTRIBUTE13,
2175 NEW_ATTRIBUTE14,
2176 NEW_ATTRIBUTE15,
2177 NEW_BILL_TO_ADDRESS,
2178 NEW_SHIP_TO_ADDRESS,
2179 FULL_DUMP_FLAG,
2180 CREATED_BY,
2181 CREATION_DATE,
2182 LAST_UPDATED_BY,
2183 LAST_UPDATE_DATE,
2184 LAST_UPDATE_LOGIN,
2185 OBJECT_VERSION_NUMBER)
2186 VALUES(
2187 l_account_hist_tbl(i),
2188 l_account_rec_tab.IP_ACCOUNT_ID(i),
2189 l_txn_id,
2190 l_account_rec_tab.PARTY_ACCOUNT_ID(i),
2191 l_account_rec_tab.RELATIONSHIP_TYPE_CODE(i),
2192 l_account_rec_tab.ACTIVE_START_DATE(i),
2193 l_account_rec_tab.ACTIVE_END_DATE(i),
2194 l_account_rec_tab.CONTEXT(i),
2195 l_account_rec_tab.ATTRIBUTE1(i),
2196 l_account_rec_tab.ATTRIBUTE2(i),
2197 l_account_rec_tab.ATTRIBUTE3(i),
2198 l_account_rec_tab.ATTRIBUTE4(i),
2199 l_account_rec_tab.ATTRIBUTE5(i),
2200 l_account_rec_tab.ATTRIBUTE6(i),
2201 l_account_rec_tab.ATTRIBUTE7(i),
2202 l_account_rec_tab.ATTRIBUTE8(i),
2203 l_account_rec_tab.ATTRIBUTE9(i),
2204 l_account_rec_tab.ATTRIBUTE10(i),
2205 l_account_rec_tab.ATTRIBUTE11(i),
2206 l_account_rec_tab.ATTRIBUTE12(i),
2207 l_account_rec_tab.ATTRIBUTE13(i),
2208 l_account_rec_tab.ATTRIBUTE14(i),
2209 l_account_rec_tab.ATTRIBUTE15(i),
2210 l_account_rec_tab.BILL_TO_ADDRESS(i),
2211 l_account_rec_tab.SHIP_TO_ADDRESS(i),
2212 'Y',
2213 l_user_id,
2214 sysdate,
2215 l_user_id,
2216 sysdate,
2217 -1,
2218 1);
2219 END IF;
2220 --
2221 IF l_org_units_tbl.count > 0 THEN
2222 log('Before Build_Org_Rec_of_Table');
2223 Build_Org_Rec_of_Table (
2224 p_org_tbl => l_org_units_tbl,
2225 p_org_units_rec_tab => l_org_units_rec_tab,
2226 p_org_hist_tbl => l_org_hist_tbl);
2227 --
2228 l_ctr := l_org_units_rec_tab.instance_ou_id.count;
2229 --
2230 -- Insert into History
2231 log('Before Inserting into Org Assignments history');
2232 FORALL i in 1 .. l_org_units_rec_tab.instance_ou_id.count
2233 INSERT INTO CSI_I_ORG_ASSIGNMENTS_H(
2234 INSTANCE_OU_HISTORY_ID,
2235 INSTANCE_OU_ID,
2236 TRANSACTION_ID,
2237 NEW_OPERATING_UNIT_ID,
2238 NEW_RELATIONSHIP_TYPE_CODE,
2239 NEW_ACTIVE_START_DATE,
2240 NEW_ACTIVE_END_DATE,
2241 NEW_CONTEXT,
2242 NEW_ATTRIBUTE1,
2243 NEW_ATTRIBUTE2,
2244 NEW_ATTRIBUTE3,
2245 NEW_ATTRIBUTE4,
2246 NEW_ATTRIBUTE5,
2247 NEW_ATTRIBUTE6,
2248 NEW_ATTRIBUTE7,
2249 NEW_ATTRIBUTE8,
2250 NEW_ATTRIBUTE9,
2251 NEW_ATTRIBUTE10,
2252 NEW_ATTRIBUTE11,
2253 NEW_ATTRIBUTE12,
2254 NEW_ATTRIBUTE13,
2255 NEW_ATTRIBUTE14,
2256 NEW_ATTRIBUTE15,
2257 FULL_DUMP_FLAG,
2258 CREATED_BY,
2259 CREATION_DATE,
2260 LAST_UPDATED_BY,
2261 LAST_UPDATE_DATE,
2262 LAST_UPDATE_LOGIN,
2263 OBJECT_VERSION_NUMBER)
2264 VALUES(
2265 l_org_hist_tbl(i),
2266 l_org_units_rec_tab.INSTANCE_OU_ID(i),
2267 l_txn_id,
2268 l_org_units_rec_tab.OPERATING_UNIT_ID(i),
2269 l_org_units_rec_tab.RELATIONSHIP_TYPE_CODE(i),
2270 l_org_units_rec_tab.ACTIVE_START_DATE(i),
2271 l_org_units_rec_tab.ACTIVE_END_DATE(i),
2272 l_org_units_rec_tab.CONTEXT(i),
2273 l_org_units_rec_tab.ATTRIBUTE1(i),
2274 l_org_units_rec_tab.ATTRIBUTE2(i),
2275 l_org_units_rec_tab.ATTRIBUTE3(i),
2276 l_org_units_rec_tab.ATTRIBUTE4(i),
2277 l_org_units_rec_tab.ATTRIBUTE5(i),
2278 l_org_units_rec_tab.ATTRIBUTE6(i),
2279 l_org_units_rec_tab.ATTRIBUTE7(i),
2280 l_org_units_rec_tab.ATTRIBUTE8(i),
2281 l_org_units_rec_tab.ATTRIBUTE9(i),
2282 l_org_units_rec_tab.ATTRIBUTE10(i),
2283 l_org_units_rec_tab.ATTRIBUTE11(i),
2284 l_org_units_rec_tab.ATTRIBUTE12(i),
2285 l_org_units_rec_tab.ATTRIBUTE13(i),
2286 l_org_units_rec_tab.ATTRIBUTE14(i),
2287 l_org_units_rec_tab.ATTRIBUTE15(i),
2288 'Y',
2289 l_user_id,
2290 sysdate,
2291 l_user_id,
2292 sysdate,
2293 -1,
2294 1);
2295 END IF;
2296 --
2297 IF l_pricing_attribs_tbl.count > 0 THEN
2298 log('Before Build_pricing_Rec_of_Table');
2302 p_pricing_hist_tbl => l_pricing_hist_tbl);
2299 build_pricing_rec_of_table (
2300 p_pricing_tbl => l_pricing_attribs_tbl,
2301 p_pricing_rec_tab => l_pricing_rec_tab,
2303 --
2304 l_ctr := l_pricing_rec_tab.pricing_attribute_id.count;
2305 --
2306 -- Insert into History
2307 log('Before Inserting into Pricing Attribs history');
2308 FORALL i in 1 .. l_pricing_rec_tab.pricing_attribute_id.count
2309 INSERT INTO CSI_I_PRICING_ATTRIBS_H(
2310 PRICE_ATTRIB_HISTORY_ID,
2311 PRICING_ATTRIBUTE_ID,
2312 TRANSACTION_ID,
2313 NEW_ACTIVE_START_DATE,
2314 NEW_ACTIVE_END_DATE,
2315 NEW_CONTEXT,
2316 NEW_ATTRIBUTE1,
2317 NEW_ATTRIBUTE2,
2318 NEW_ATTRIBUTE3,
2319 NEW_ATTRIBUTE4,
2320 NEW_ATTRIBUTE5,
2321 NEW_ATTRIBUTE6,
2322 NEW_ATTRIBUTE7,
2323 NEW_ATTRIBUTE8,
2324 NEW_ATTRIBUTE9,
2325 NEW_ATTRIBUTE10,
2326 NEW_ATTRIBUTE11,
2327 NEW_ATTRIBUTE12,
2328 NEW_ATTRIBUTE13,
2329 NEW_ATTRIBUTE14,
2330 NEW_ATTRIBUTE15,
2331 NEW_PRICING_CONTEXT,
2332 NEW_PRICING_ATTRIBUTE1,
2333 NEW_PRICING_ATTRIBUTE2,
2334 NEW_PRICING_ATTRIBUTE3,
2335 NEW_PRICING_ATTRIBUTE4,
2336 NEW_PRICING_ATTRIBUTE5,
2337 NEW_PRICING_ATTRIBUTE6,
2338 NEW_PRICING_ATTRIBUTE7,
2339 NEW_PRICING_ATTRIBUTE8,
2340 NEW_PRICING_ATTRIBUTE9,
2341 NEW_PRICING_ATTRIBUTE10,
2342 NEW_PRICING_ATTRIBUTE11,
2343 NEW_PRICING_ATTRIBUTE12,
2344 NEW_PRICING_ATTRIBUTE13,
2345 NEW_PRICING_ATTRIBUTE14,
2346 NEW_PRICING_ATTRIBUTE15,
2347 NEW_PRICING_ATTRIBUTE16,
2348 NEW_PRICING_ATTRIBUTE17,
2349 NEW_PRICING_ATTRIBUTE18,
2350 NEW_PRICING_ATTRIBUTE19,
2351 NEW_PRICING_ATTRIBUTE20,
2352 NEW_PRICING_ATTRIBUTE21,
2353 NEW_PRICING_ATTRIBUTE22,
2354 NEW_PRICING_ATTRIBUTE23,
2355 NEW_PRICING_ATTRIBUTE24,
2356 NEW_PRICING_ATTRIBUTE25,
2357 NEW_PRICING_ATTRIBUTE26,
2358 NEW_PRICING_ATTRIBUTE27,
2359 NEW_PRICING_ATTRIBUTE28,
2360 NEW_PRICING_ATTRIBUTE29,
2361 NEW_PRICING_ATTRIBUTE30,
2362 NEW_PRICING_ATTRIBUTE31,
2363 NEW_PRICING_ATTRIBUTE32,
2364 NEW_PRICING_ATTRIBUTE33,
2365 NEW_PRICING_ATTRIBUTE34,
2366 NEW_PRICING_ATTRIBUTE35,
2367 NEW_PRICING_ATTRIBUTE36,
2368 NEW_PRICING_ATTRIBUTE37,
2369 NEW_PRICING_ATTRIBUTE38,
2370 NEW_PRICING_ATTRIBUTE39,
2371 NEW_PRICING_ATTRIBUTE40,
2372 NEW_PRICING_ATTRIBUTE41,
2373 NEW_PRICING_ATTRIBUTE42,
2374 NEW_PRICING_ATTRIBUTE43,
2375 NEW_PRICING_ATTRIBUTE44,
2376 NEW_PRICING_ATTRIBUTE45,
2377 NEW_PRICING_ATTRIBUTE46,
2378 NEW_PRICING_ATTRIBUTE47,
2379 NEW_PRICING_ATTRIBUTE48,
2380 NEW_PRICING_ATTRIBUTE49,
2381 NEW_PRICING_ATTRIBUTE50,
2382 NEW_PRICING_ATTRIBUTE51,
2383 NEW_PRICING_ATTRIBUTE52,
2384 NEW_PRICING_ATTRIBUTE53,
2385 NEW_PRICING_ATTRIBUTE54,
2386 NEW_PRICING_ATTRIBUTE55,
2387 NEW_PRICING_ATTRIBUTE56,
2388 NEW_PRICING_ATTRIBUTE57,
2389 NEW_PRICING_ATTRIBUTE58,
2390 NEW_PRICING_ATTRIBUTE59,
2391 NEW_PRICING_ATTRIBUTE60,
2392 NEW_PRICING_ATTRIBUTE61,
2393 NEW_PRICING_ATTRIBUTE62,
2394 NEW_PRICING_ATTRIBUTE63,
2395 NEW_PRICING_ATTRIBUTE64,
2396 NEW_PRICING_ATTRIBUTE65,
2397 NEW_PRICING_ATTRIBUTE66,
2398 NEW_PRICING_ATTRIBUTE67,
2399 NEW_PRICING_ATTRIBUTE68,
2400 NEW_PRICING_ATTRIBUTE69,
2401 NEW_PRICING_ATTRIBUTE70,
2402 NEW_PRICING_ATTRIBUTE71,
2403 NEW_PRICING_ATTRIBUTE72,
2404 NEW_PRICING_ATTRIBUTE73,
2405 NEW_PRICING_ATTRIBUTE74,
2406 NEW_PRICING_ATTRIBUTE75,
2407 NEW_PRICING_ATTRIBUTE76,
2408 NEW_PRICING_ATTRIBUTE77,
2409 NEW_PRICING_ATTRIBUTE78,
2410 NEW_PRICING_ATTRIBUTE79,
2411 NEW_PRICING_ATTRIBUTE80,
2412 NEW_PRICING_ATTRIBUTE81,
2413 NEW_PRICING_ATTRIBUTE82,
2414 NEW_PRICING_ATTRIBUTE83,
2415 NEW_PRICING_ATTRIBUTE84,
2416 NEW_PRICING_ATTRIBUTE85,
2417 NEW_PRICING_ATTRIBUTE86,
2418 NEW_PRICING_ATTRIBUTE87,
2419 NEW_PRICING_ATTRIBUTE88,
2420 NEW_PRICING_ATTRIBUTE89,
2421 NEW_PRICING_ATTRIBUTE90,
2422 NEW_PRICING_ATTRIBUTE91,
2423 NEW_PRICING_ATTRIBUTE92,
2424 NEW_PRICING_ATTRIBUTE93,
2425 NEW_PRICING_ATTRIBUTE94,
2426 NEW_PRICING_ATTRIBUTE95,
2427 NEW_PRICING_ATTRIBUTE96,
2428 NEW_PRICING_ATTRIBUTE97,
2429 NEW_PRICING_ATTRIBUTE98,
2430 NEW_PRICING_ATTRIBUTE99,
2431 NEW_PRICING_ATTRIBUTE100,
2432 FULL_DUMP_FLAG,
2433 CREATED_BY,
2434 CREATION_DATE,
2435 LAST_UPDATED_BY,
2436 LAST_UPDATE_DATE,
2440 l_pricing_hist_tbl(i),
2437 LAST_UPDATE_LOGIN,
2438 OBJECT_VERSION_NUMBER)
2439 VALUES(
2441 l_pricing_rec_tab.PRICING_ATTRIBUTE_ID(i),
2442 l_txn_id,
2443 l_pricing_rec_tab.ACTIVE_START_DATE(i),
2444 l_pricing_rec_tab.ACTIVE_END_DATE(i),
2445 l_pricing_rec_tab.CONTEXT(i),
2446 l_pricing_rec_tab.ATTRIBUTE1(i),
2447 l_pricing_rec_tab.ATTRIBUTE2(i),
2448 l_pricing_rec_tab.ATTRIBUTE3(i),
2449 l_pricing_rec_tab.ATTRIBUTE4(i),
2450 l_pricing_rec_tab.ATTRIBUTE5(i),
2451 l_pricing_rec_tab.ATTRIBUTE6(i),
2452 l_pricing_rec_tab.ATTRIBUTE7(i),
2453 l_pricing_rec_tab.ATTRIBUTE8(i),
2454 l_pricing_rec_tab.ATTRIBUTE9(i),
2455 l_pricing_rec_tab.ATTRIBUTE10(i),
2456 l_pricing_rec_tab.ATTRIBUTE11(i),
2457 l_pricing_rec_tab.ATTRIBUTE12(i),
2458 l_pricing_rec_tab.ATTRIBUTE13(i),
2459 l_pricing_rec_tab.ATTRIBUTE14(i),
2460 l_pricing_rec_tab.ATTRIBUTE15(i),
2461 l_pricing_rec_tab.PRICING_CONTEXT(i),
2462 l_pricing_rec_tab.PRICING_ATTRIBUTE1(i),
2463 l_pricing_rec_tab.PRICING_ATTRIBUTE2(i),
2464 l_pricing_rec_tab.PRICING_ATTRIBUTE3(i),
2465 l_pricing_rec_tab.PRICING_ATTRIBUTE4(i),
2466 l_pricing_rec_tab.PRICING_ATTRIBUTE5(i),
2467 l_pricing_rec_tab.PRICING_ATTRIBUTE6(i),
2468 l_pricing_rec_tab.PRICING_ATTRIBUTE7(i),
2469 l_pricing_rec_tab.PRICING_ATTRIBUTE8(i),
2470 l_pricing_rec_tab.PRICING_ATTRIBUTE9(i),
2471 l_pricing_rec_tab.PRICING_ATTRIBUTE10(i),
2472 l_pricing_rec_tab.PRICING_ATTRIBUTE11(i),
2473 l_pricing_rec_tab.PRICING_ATTRIBUTE12(i),
2474 l_pricing_rec_tab.PRICING_ATTRIBUTE13(i),
2475 l_pricing_rec_tab.PRICING_ATTRIBUTE14(i),
2476 l_pricing_rec_tab.PRICING_ATTRIBUTE15(i),
2477 l_pricing_rec_tab.PRICING_ATTRIBUTE16(i),
2478 l_pricing_rec_tab.PRICING_ATTRIBUTE17(i),
2479 l_pricing_rec_tab.PRICING_ATTRIBUTE18(i),
2480 l_pricing_rec_tab.PRICING_ATTRIBUTE19(i),
2481 l_pricing_rec_tab.PRICING_ATTRIBUTE20(i),
2482 l_pricing_rec_tab.PRICING_ATTRIBUTE21(i),
2483 l_pricing_rec_tab.PRICING_ATTRIBUTE22(i),
2484 l_pricing_rec_tab.PRICING_ATTRIBUTE23(i),
2485 l_pricing_rec_tab.PRICING_ATTRIBUTE24(i),
2486 l_pricing_rec_tab.PRICING_ATTRIBUTE25(i),
2487 l_pricing_rec_tab.PRICING_ATTRIBUTE26(i),
2488 l_pricing_rec_tab.PRICING_ATTRIBUTE27(i),
2489 l_pricing_rec_tab.PRICING_ATTRIBUTE28(i),
2490 l_pricing_rec_tab.PRICING_ATTRIBUTE29(i),
2491 l_pricing_rec_tab.PRICING_ATTRIBUTE30(i),
2492 l_pricing_rec_tab.PRICING_ATTRIBUTE31(i),
2493 l_pricing_rec_tab.PRICING_ATTRIBUTE32(i),
2494 l_pricing_rec_tab.PRICING_ATTRIBUTE33(i),
2495 l_pricing_rec_tab.PRICING_ATTRIBUTE34(i),
2496 l_pricing_rec_tab.PRICING_ATTRIBUTE35(i),
2497 l_pricing_rec_tab.PRICING_ATTRIBUTE36(i),
2498 l_pricing_rec_tab.PRICING_ATTRIBUTE37(i),
2499 l_pricing_rec_tab.PRICING_ATTRIBUTE38(i),
2500 l_pricing_rec_tab.PRICING_ATTRIBUTE39(i),
2501 l_pricing_rec_tab.PRICING_ATTRIBUTE40(i),
2502 l_pricing_rec_tab.PRICING_ATTRIBUTE41(i),
2503 l_pricing_rec_tab.PRICING_ATTRIBUTE42(i),
2504 l_pricing_rec_tab.PRICING_ATTRIBUTE43(i),
2505 l_pricing_rec_tab.PRICING_ATTRIBUTE44(i),
2506 l_pricing_rec_tab.PRICING_ATTRIBUTE45(i),
2507 l_pricing_rec_tab.PRICING_ATTRIBUTE46(i),
2508 l_pricing_rec_tab.PRICING_ATTRIBUTE47(i),
2509 l_pricing_rec_tab.PRICING_ATTRIBUTE48(i),
2510 l_pricing_rec_tab.PRICING_ATTRIBUTE49(i),
2511 l_pricing_rec_tab.PRICING_ATTRIBUTE50(i),
2512 l_pricing_rec_tab.PRICING_ATTRIBUTE51(i),
2513 l_pricing_rec_tab.PRICING_ATTRIBUTE52(i),
2514 l_pricing_rec_tab.PRICING_ATTRIBUTE53(i),
2515 l_pricing_rec_tab.PRICING_ATTRIBUTE54(i),
2516 l_pricing_rec_tab.PRICING_ATTRIBUTE55(i),
2517 l_pricing_rec_tab.PRICING_ATTRIBUTE56(i),
2518 l_pricing_rec_tab.PRICING_ATTRIBUTE57(i),
2519 l_pricing_rec_tab.PRICING_ATTRIBUTE58(i),
2520 l_pricing_rec_tab.PRICING_ATTRIBUTE59(i),
2521 l_pricing_rec_tab.PRICING_ATTRIBUTE60(i),
2522 l_pricing_rec_tab.PRICING_ATTRIBUTE61(i),
2523 l_pricing_rec_tab.PRICING_ATTRIBUTE62(i),
2524 l_pricing_rec_tab.PRICING_ATTRIBUTE63(i),
2525 l_pricing_rec_tab.PRICING_ATTRIBUTE64(i),
2526 l_pricing_rec_tab.PRICING_ATTRIBUTE65(i),
2527 l_pricing_rec_tab.PRICING_ATTRIBUTE66(i),
2528 l_pricing_rec_tab.PRICING_ATTRIBUTE67(i),
2529 l_pricing_rec_tab.PRICING_ATTRIBUTE68(i),
2530 l_pricing_rec_tab.PRICING_ATTRIBUTE69(i),
2531 l_pricing_rec_tab.PRICING_ATTRIBUTE70(i),
2532 l_pricing_rec_tab.PRICING_ATTRIBUTE71(i),
2533 l_pricing_rec_tab.PRICING_ATTRIBUTE72(i),
2534 l_pricing_rec_tab.PRICING_ATTRIBUTE73(i),
2535 l_pricing_rec_tab.PRICING_ATTRIBUTE74(i),
2536 l_pricing_rec_tab.PRICING_ATTRIBUTE75(i),
2537 l_pricing_rec_tab.PRICING_ATTRIBUTE76(i),
2538 l_pricing_rec_tab.PRICING_ATTRIBUTE77(i),
2542 l_pricing_rec_tab.PRICING_ATTRIBUTE81(i),
2539 l_pricing_rec_tab.PRICING_ATTRIBUTE78(i),
2540 l_pricing_rec_tab.PRICING_ATTRIBUTE79(i),
2541 l_pricing_rec_tab.PRICING_ATTRIBUTE80(i),
2543 l_pricing_rec_tab.PRICING_ATTRIBUTE82(i),
2544 l_pricing_rec_tab.PRICING_ATTRIBUTE83(i),
2545 l_pricing_rec_tab.PRICING_ATTRIBUTE84(i),
2546 l_pricing_rec_tab.PRICING_ATTRIBUTE85(i),
2547 l_pricing_rec_tab.PRICING_ATTRIBUTE86(i),
2548 l_pricing_rec_tab.PRICING_ATTRIBUTE87(i),
2549 l_pricing_rec_tab.PRICING_ATTRIBUTE88(i),
2550 l_pricing_rec_tab.PRICING_ATTRIBUTE89(i),
2551 l_pricing_rec_tab.PRICING_ATTRIBUTE90(i),
2552 l_pricing_rec_tab.PRICING_ATTRIBUTE91(i),
2553 l_pricing_rec_tab.PRICING_ATTRIBUTE92(i),
2554 l_pricing_rec_tab.PRICING_ATTRIBUTE93(i),
2555 l_pricing_rec_tab.PRICING_ATTRIBUTE94(i),
2556 l_pricing_rec_tab.PRICING_ATTRIBUTE95(i),
2557 l_pricing_rec_tab.PRICING_ATTRIBUTE96(i),
2558 l_pricing_rec_tab.PRICING_ATTRIBUTE97(i),
2559 l_pricing_rec_tab.PRICING_ATTRIBUTE98(i),
2560 l_pricing_rec_tab.PRICING_ATTRIBUTE99(i),
2561 l_pricing_rec_tab.PRICING_ATTRIBUTE100(i),
2562 'Y',
2563 l_user_id,
2564 sysdate,
2565 l_user_id,
2566 sysdate,
2567 -1,
2568 1);
2569 END IF;
2570 --
2571 IF l_ext_attrib_values_tbl.count > 0 THEN
2572 log('Before Build_Ext_Attr_Rec_Table');
2573 Build_Ext_Attr_Rec_Table (
2574 p_ext_attr_tbl => l_ext_attrib_values_tbl,
2575 p_ext_attr_rec_tab => l_ext_attr_rec_tab,
2576 p_ext_hist_tbl => l_ext_hist_tbl);
2577 --
2578 l_ctr := l_ext_attr_rec_tab.attribute_value_id.count;
2579 --
2580 -- Insert into History
2581 log('Before Inserting into Ext Attribs history');
2582 FORALL i in 1 .. l_ext_attr_rec_tab.attribute_value_id.count
2583 INSERT INTO CSI_IEA_VALUES_H(
2584 ATTRIBUTE_VALUE_HISTORY_ID,
2585 ATTRIBUTE_VALUE_ID,
2586 TRANSACTION_ID,
2587 NEW_ATTRIBUTE_VALUE,
2588 NEW_ACTIVE_START_DATE,
2589 NEW_ACTIVE_END_DATE,
2590 NEW_CONTEXT,
2591 NEW_ATTRIBUTE1,
2592 NEW_ATTRIBUTE2,
2593 NEW_ATTRIBUTE3,
2594 NEW_ATTRIBUTE4,
2595 NEW_ATTRIBUTE5,
2596 NEW_ATTRIBUTE6,
2597 NEW_ATTRIBUTE7,
2598 NEW_ATTRIBUTE8,
2599 NEW_ATTRIBUTE9,
2600 NEW_ATTRIBUTE10,
2601 NEW_ATTRIBUTE11,
2602 NEW_ATTRIBUTE12,
2603 NEW_ATTRIBUTE13,
2604 NEW_ATTRIBUTE14,
2605 NEW_ATTRIBUTE15,
2606 FULL_DUMP_FLAG,
2607 CREATED_BY,
2608 CREATION_DATE,
2609 LAST_UPDATED_BY,
2610 LAST_UPDATE_DATE,
2611 LAST_UPDATE_LOGIN,
2612 OBJECT_VERSION_NUMBER)
2613 VALUES(
2614 l_ext_hist_tbl(i),
2615 l_ext_attr_rec_tab.ATTRIBUTE_VALUE_ID(i),
2616 l_txn_id,
2617 l_ext_attr_rec_tab.ATTRIBUTE_VALUE(i),
2618 l_ext_attr_rec_tab.ACTIVE_START_DATE(i),
2619 l_ext_attr_rec_tab.ACTIVE_END_DATE(i),
2620 l_ext_attr_rec_tab.CONTEXT(i),
2621 l_ext_attr_rec_tab.ATTRIBUTE1(i),
2622 l_ext_attr_rec_tab.ATTRIBUTE2(i),
2623 l_ext_attr_rec_tab.ATTRIBUTE3(i),
2624 l_ext_attr_rec_tab.ATTRIBUTE4(i),
2625 l_ext_attr_rec_tab.ATTRIBUTE5(i),
2626 l_ext_attr_rec_tab.ATTRIBUTE6(i),
2627 l_ext_attr_rec_tab.ATTRIBUTE7(i),
2628 l_ext_attr_rec_tab.ATTRIBUTE8(i),
2629 l_ext_attr_rec_tab.ATTRIBUTE9(i),
2630 l_ext_attr_rec_tab.ATTRIBUTE10(i),
2631 l_ext_attr_rec_tab.ATTRIBUTE11(i),
2632 l_ext_attr_rec_tab.ATTRIBUTE12(i),
2633 l_ext_attr_rec_tab.ATTRIBUTE13(i),
2634 l_ext_attr_rec_tab.ATTRIBUTE14(i),
2635 l_ext_attr_rec_tab.ATTRIBUTE15(i),
2636 'Y',
2637 l_user_id,
2638 sysdate,
2639 l_user_id,
2640 sysdate,
2641 -1,
2642 1);
2643 END IF;
2644 --
2645 IF l_instance_asset_tbl.count > 0 THEN
2646 log('Before Build_Asset_Rec_Table');
2647 Build_Asset_Rec_Table (
2648 p_asset_tbl => l_instance_asset_tbl,
2649 p_asset_rec_tab => l_asset_rec_tab,
2650 p_asset_hist_tbl => l_asset_hist_tbl);
2651 --
2652 l_ctr := l_asset_rec_tab.instance_asset_id.count;
2653 --
2654 -- Insert into History
2655 log('Before Inserting into Assets history');
2656 FORALL i in 1 .. l_asset_rec_tab.instance_asset_id.count
2657 INSERT INTO CSI_I_ASSETS_H(
2658 INSTANCE_ASSET_HISTORY_ID,
2659 INSTANCE_ASSET_ID,
2660 TRANSACTION_ID,
2661 NEW_INSTANCE_ID,
2662 NEW_FA_ASSET_ID,
2663 NEW_ASSET_QUANTITY,
2664 NEW_FA_BOOK_TYPE_CODE,
2665 NEW_FA_LOCATION_ID,
2666 NEW_UPDATE_STATUS,
2667 NEW_ACTIVE_START_DATE,
2668 NEW_ACTIVE_END_DATE,
2669 FULL_DUMP_FLAG,
2670 CREATED_BY,
2671 CREATION_DATE,
2675 OBJECT_VERSION_NUMBER)
2672 LAST_UPDATED_BY,
2673 LAST_UPDATE_DATE,
2674 LAST_UPDATE_LOGIN,
2676 VALUES(
2677 l_asset_hist_tbl(i),
2678 l_asset_rec_tab.INSTANCE_ASSET_ID(i),
2679 l_txn_id,
2680 l_asset_rec_tab.INSTANCE_ID(i),
2681 l_asset_rec_tab.FA_ASSET_ID(i),
2682 l_asset_rec_tab.ASSET_QUANTITY(i),
2683 l_asset_rec_tab.FA_BOOK_TYPE_CODE(i),
2684 l_asset_rec_tab.FA_LOCATION_ID(i),
2685 l_asset_rec_tab.UPDATE_STATUS(i),
2686 l_asset_rec_tab.ACTIVE_START_DATE(i),
2687 l_asset_rec_tab.ACTIVE_END_DATE(i),
2688 'Y',
2689 l_user_id,
2690 sysdate,
2691 l_user_id,
2692 sysdate,
2693 -1,
2694 1);
2695 END IF;
2696 --
2697 IF l_ii_relationship_tbl.count > 0 THEN
2698 log('Before Build_Rel_Rec_of_Table');
2699 Build_Rel_Rec_of_Table (
2700 p_ii_relationship_tbl => l_ii_relationship_tbl,
2701 p_ii_relationship_rec_tab => l_ii_relationship_rec_tab,
2702 p_rel_hist_tbl => l_rel_hist_tbl);
2703 --
2704 l_ctr := l_ii_relationship_rec_tab.relationship_id.count;
2705 --
2706 -- Insert into History
2707 log('Before inserting into Relationships history');
2708 FORALL i in 1 .. l_ii_relationship_rec_tab.relationship_id.count
2709 INSERT INTO CSI_II_RELATIONSHIPS_H(
2710 RELATIONSHIP_HISTORY_ID
2711 ,RELATIONSHIP_ID
2712 ,TRANSACTION_ID
2713 ,NEW_SUBJECT_ID
2714 ,NEW_POSITION_REFERENCE
2715 ,NEW_ACTIVE_START_DATE
2716 ,NEW_ACTIVE_END_DATE
2717 ,NEW_MANDATORY_FLAG
2718 ,NEW_CONTEXT
2719 ,NEW_ATTRIBUTE1
2720 ,NEW_ATTRIBUTE2
2721 ,NEW_ATTRIBUTE3
2722 ,NEW_ATTRIBUTE4
2723 ,NEW_ATTRIBUTE5
2724 ,NEW_ATTRIBUTE6
2725 ,NEW_ATTRIBUTE7
2726 ,NEW_ATTRIBUTE8
2727 ,NEW_ATTRIBUTE9
2728 ,NEW_ATTRIBUTE10
2729 ,NEW_ATTRIBUTE11
2730 ,NEW_ATTRIBUTE12
2731 ,NEW_ATTRIBUTE13
2732 ,NEW_ATTRIBUTE14
2733 ,NEW_ATTRIBUTE15
2734 ,FULL_DUMP_FLAG
2735 ,CREATED_BY
2736 ,CREATION_DATE
2737 ,LAST_UPDATED_BY
2738 ,LAST_UPDATE_DATE
2739 ,LAST_UPDATE_LOGIN
2740 ,OBJECT_VERSION_NUMBER)
2741 VALUES(
2742 l_rel_hist_tbl(i)
2743 ,l_ii_relationship_rec_tab.RELATIONSHIP_ID(i)
2744 ,l_txn_id
2745 ,l_ii_relationship_rec_tab.SUBJECT_ID(i)
2746 ,l_ii_relationship_rec_tab.POSITION_REFERENCE(i)
2747 ,l_ii_relationship_rec_tab.ACTIVE_START_DATE(i)
2748 ,l_ii_relationship_rec_tab.ACTIVE_END_DATE(i)
2749 ,l_ii_relationship_rec_tab.MANDATORY_FLAG(i)
2750 ,l_ii_relationship_rec_tab.CONTEXT(i)
2751 ,l_ii_relationship_rec_tab.ATTRIBUTE1(i)
2752 ,l_ii_relationship_rec_tab.ATTRIBUTE2(i)
2753 ,l_ii_relationship_rec_tab.ATTRIBUTE3(i)
2754 ,l_ii_relationship_rec_tab.ATTRIBUTE4(i)
2755 ,l_ii_relationship_rec_tab.ATTRIBUTE5(i)
2756 ,l_ii_relationship_rec_tab.ATTRIBUTE6(i)
2757 ,l_ii_relationship_rec_tab.ATTRIBUTE7(i)
2758 ,l_ii_relationship_rec_tab.ATTRIBUTE8(i)
2759 ,l_ii_relationship_rec_tab.ATTRIBUTE9(i)
2760 ,l_ii_relationship_rec_tab.ATTRIBUTE10(i)
2761 ,l_ii_relationship_rec_tab.ATTRIBUTE11(i)
2762 ,l_ii_relationship_rec_tab.ATTRIBUTE12(i)
2763 ,l_ii_relationship_rec_tab.ATTRIBUTE13(i)
2764 ,l_ii_relationship_rec_tab.ATTRIBUTE14(i)
2765 ,l_ii_relationship_rec_tab.ATTRIBUTE15(i)
2766 ,'Y'
2767 ,l_user_id
2768 ,sysdate
2769 ,l_user_id
2770 ,sysdate
2771 ,-1
2772 ,1);
2773 END IF;
2774 --
2775 IF l_instance_tbl.count > 0 THEN
2776 INSERT INTO CSI_TRANSACTIONS(
2777 TRANSACTION_ID
2778 ,TRANSACTION_DATE
2779 ,SOURCE_TRANSACTION_DATE
2780 ,SOURCE_HEADER_REF
2781 ,TRANSACTION_TYPE_ID
2782 ,CREATED_BY
2783 ,CREATION_DATE
2784 ,LAST_UPDATED_BY
2785 ,LAST_UPDATE_DATE
2786 ,LAST_UPDATE_LOGIN
2787 ,OBJECT_VERSION_NUMBER)
2788 VALUES(
2789 l_txn_id -- TRANSACTION_ID
2790 ,SYSDATE -- TRANSACTION_DATE
2791 ,SYSDATE -- SOURCE_TRANSACTION_DATE
2792 ,'Full Dump' -- SOURCE_HEADER_REF
2793 ,v_txn_type_id -- TRANSACTION_TYPE_ID
2794 ,l_user_id
2795 ,sysdate
2796 ,l_user_id
2797 ,sysdate
2798 ,-1
2799 ,1);
2800 --
2801 END IF;
2802 commit;
2803 log('Insert_Full_Dump Successfully completed...');
2804 EXCEPTION
2805 when comp_error then
2806 log('Comp error in Insert_Full_Dump..');
2807 ROLLBACK TO Insert_Full_Dump;
2808 when others then
2809 log(sqlerrm);
2810 ROLLBACK TO Insert_Full_Dump;
2811 END Insert_Full_Dump;
2812
2813 FUNCTION is_sfm_active RETURN boolean
2814 IS
2815
2816 l_applid number;
2820 l_activep number;
2817 l_managerid number;
2818
2819 l_targetp number;
2821 l_pmon_method varchar2(30);
2822 l_callstat number;
2823
2824 BEGIN
2825
2826 SELECT application_id, concurrent_queue_id
2827 INTO l_applid, l_managerid
2828 FROM fnd_concurrent_queues
2829 WHERE concurrent_queue_name = 'XDP_Q_EVENT_SVC';
2830
2831 fnd_concurrent.get_manager_status(
2832 applid => l_applid,
2833 managerid => l_managerid,
2834 targetp => l_targetp,
2835 activep => l_activep,
2836 pmon_method => l_pmon_method,
2837 callstat => l_callstat);
2838
2839 IF (l_targetp > 0) or (l_activep > 0) THEN
2840 RETURN (TRUE);
2841 ELSE
2842 RETURN (FALSE);
2843 END IF;
2844
2845 END is_sfm_active;
2846
2847 PROCEDURE get_schema_name(
2848 p_product_short_name IN varchar2,
2849 x_schema_name OUT nocopy varchar2,
2850 x_return_status OUT nocopy varchar2)
2851 IS
2852 l_status varchar2(1);
2853 l_industry varchar2(1);
2854 l_oracle_schema varchar2(30);
2855 l_return boolean;
2856 BEGIN
2857
2858 x_return_status := fnd_api.g_ret_sts_success;
2859
2860 l_return := fnd_installation.get_app_info(
2861 application_short_name => p_product_short_name,
2862 status => l_status,
2863 industry => l_industry,
2864 oracle_schema => l_oracle_schema);
2865
2866 IF NOT l_return THEN
2867 fnd_message.set_name('CSI', 'CSI_FND_INVALID_SCHEMA_ERROR');
2868 fnd_msg_pub.add;
2869 RAISE fnd_api.g_exc_error;
2870 END IF;
2871
2872 x_schema_name := l_oracle_schema;
2873
2874 EXCEPTION
2875 WHEN fnd_api.g_exc_error THEN
2876 x_return_status := fnd_api.g_ret_sts_error;
2877 END get_schema_name;
2878
2879 PROCEDURE truncate_table(
2880 p_table_name in varchar2)
2881 IS
2882 l_num_of_rows number;
2883 l_truncate_handle pls_integer := dbms_sql.open_cursor;
2884 l_statement varchar2(200);
2885 BEGIN
2886 l_statement := 'truncate table '||p_table_name;
2887 dbms_sql.parse(l_truncate_handle, l_statement, dbms_sql.native);
2888 l_num_of_rows := dbms_sql.execute(l_truncate_handle);
2889 dbms_sql.close_cursor(l_truncate_handle);
2890 EXCEPTION
2891 WHEN others THEN
2892 null;
2893 END truncate_table;
2894
2895 PROCEDURE get_source_type(
2896 p_mtl_txn_id IN number,
2897 p_mtl_type_id IN number,
2898 p_mtl_action_id IN number,
2899 p_mtl_source_type_id IN number,
2900 p_mtl_type_class IN number,
2901 p_mtl_txn_qty IN number,
2902 p_release IN varchar2,
2903 x_source_type OUT nocopy varchar2,
2904 x_csi_txn_type_id OUT nocopy number)
2905 IS
2906 BEGIN
2907
2908 -- Move order issue to project
2909 IF p_mtl_action_id = 1 AND p_mtl_source_type_id = 4 AND p_mtl_type_class = 1 THEN
2910 x_source_type := 'CSIISUPT';
2911 x_csi_txn_type_id := 113;
2912 return;
2913 END IF;
2914
2915 -- Miscellaneous issue to project
2916 IF p_mtl_action_id = 1 AND p_mtl_source_type_id in (3,6,13) AND p_mtl_type_class = 1 THEN
2917 x_source_type := 'CSIMSIPT';
2918 x_csi_txn_type_id := 121;
2919 return;
2920 END IF;
2921
2922 -- Miscellaneous Receipt from project
2923 IF p_mtl_action_id = 27 AND p_mtl_source_type_id in (3,6,13) AND p_mtl_type_class = 1 THEN
2924 x_source_type := 'CSIMSRPT';
2925 x_csi_txn_type_id := 120;
2926 return;
2927 END IF;
2928
2929 -- project contract issue
2930 IF p_mtl_action_id = 1 AND p_mtl_source_type_id = 16 THEN
2931 x_source_type := 'CSIOKSHP';
2932 x_csi_txn_type_id := 326;
2933 return;
2934 END IF;
2935
2936 -- Sales Order Shipment
2937 IF p_mtl_action_id = 1 AND p_mtl_source_type_id = 2 THEN
2938 x_source_type := 'CSISOSHP';
2939 x_csi_txn_type_id := 51;
2940 return;
2941 END IF;
2942
2943 -- RMA receipt
2944 IF p_mtl_action_id = 27 AND p_mtl_source_type_id = 12 THEN
2945 x_source_type := 'CSIRMARC';
2946 x_csi_txn_type_id := 53;
2947 return;
2948 END IF;
2949
2950 -- Subinventory Transfers
2951 IF(p_mtl_txn_qty > 0 AND p_mtl_action_id = 2)
2952 OR
2953 (p_mtl_action_id = 28 AND p_mtl_source_type_id = 2 AND p_mtl_txn_qty > 0)
2954 OR
2955 (p_mtl_action_id = 28 AND p_mtl_source_type_id = 8 AND p_mtl_txn_qty > 0)
2956 THEN
2957 x_source_type := 'CSISUBTR';
2958 x_csi_txn_type_id := 114;
2959 return;
2960 END IF;
2961
2962 --Interorg transit receipt
2963 IF p_mtl_action_id = 12 AND p_mtl_source_type_id = 13 THEN
2964 x_source_type := 'CSIORGTR';
2965 x_csi_txn_type_id := 144;
2966 return;
2967 END IF;
2968
2969 --Interorg transit shipment
2970 IF p_mtl_action_id = 21 AND p_mtl_source_type_id = 13 THEN
2971 x_source_type := 'CSIORGTS';
2972 x_csi_txn_type_id := 145;
2976 --Interorg Direct Shipment
2973 return;
2974 END IF;
2975
2977 IF p_mtl_action_id = 3 AND p_mtl_source_type_id = 13 AND p_mtl_txn_qty > 0 THEN
2978 x_source_type := 'CSIORGDS';
2979 x_csi_txn_type_id := 143;
2980 return;
2981 END IF;
2982
2983 -- ISO requisition receipt
2984 IF p_mtl_action_id = 12 AND p_mtl_source_type_id = 7 THEN
2985 x_source_type := 'CSIINTSR';
2986 x_csi_txn_type_id := 131;
2987 return;
2988 END IF;
2989
2990 -- ISO shipment
2991 IF p_mtl_action_id = 21 AND p_mtl_source_type_id = 8 THEN
2992 x_source_type := 'CSIINTSS';
2993 x_csi_txn_type_id := 130;
2994 return;
2995 END IF;
2996
2997 -- ISO direct shipment
2998 IF p_mtl_action_id = 3 AND p_mtl_source_type_id = 7 AND p_mtl_txn_qty > 0 THEN
2999 x_source_type := 'CSIINTDS';
3000 x_csi_txn_type_id := 142;
3001 return;
3002 END IF;
3003
3004 -- PO receipt
3005 IF p_mtl_action_id = 27 AND p_mtl_source_type_id = 1 THEN
3006 x_source_type := 'CSIPOINV';
3007 x_csi_txn_type_id := 112;
3008 return;
3009 END IF;
3010
3011 -- cycle count
3012 IF p_mtl_action_id = 4 THEN
3013 x_source_type := 'CSICYCNT';
3014 x_csi_txn_type_id := 119;
3015 return;
3016 END IF;
3017
3018 --physical inventory
3019 IF p_mtl_action_id = 8 THEN
3020 x_source_type := 'CSIPHYIN';
3021 x_csi_txn_type_id := 118;
3022 return;
3023 END IF;
3024
3025 -- miscellaneous receipt
3026 --
3027 IF(p_mtl_action_id = 27 AND p_mtl_type_id NOT IN (15,123,43,94) AND
3028 (p_mtl_type_class is null OR p_mtl_type_class <> 1))
3029 OR
3030 (p_mtl_action_id = 29 AND p_mtl_txn_qty > 0 AND p_mtl_source_type_id = 1)
3031 OR
3032 (p_mtl_action_id = 29 AND p_mtl_txn_qty > 0 AND p_mtl_source_type_id = 13)
3033 OR
3034 (p_mtl_action_id = 29 AND p_mtl_txn_qty > 0 AND p_mtl_source_type_id = 7)
3035 THEN
3036 x_source_type := 'CSIMSRCV';
3037 x_csi_txn_type_id := 117;
3038 return;
3039 END IF;
3040
3041 -- miscellaneous issue
3042 IF (p_mtl_action_id = 1 AND p_mtl_source_type_id in (4,13,6,3,8)
3043 AND
3044 p_mtl_type_id NOT IN (33,122,35,37,93)
3045 AND
3046 (p_mtl_type_class is null OR p_mtl_type_class <> 1))
3047 OR
3048 (p_mtl_action_id = 29 AND p_mtl_txn_qty < 0 AND p_mtl_source_type_id = 1)
3049 OR
3050 (p_mtl_action_id = 1 AND p_mtl_txn_qty < 0 AND p_mtl_source_type_id = 1)
3051 OR
3052 (p_mtl_action_id = 29 AND p_mtl_txn_qty < 0 AND p_mtl_source_type_id = 13)
3053 OR
3054 (p_mtl_action_id = 29 AND p_mtl_txn_qty < 0 AND p_mtl_source_type_id = 7)
3055 THEN
3056 x_source_type := 'CSIMSISU';
3057 x_csi_txn_type_id := 116;
3058 return;
3059 END IF;
3060
3061 --wip assy return
3062 IF p_mtl_action_id = 32 AND p_mtl_source_type_id = 5 THEN
3063 x_source_type := 'CSIWIPAR';
3064 x_csi_txn_type_id := 71;
3065 return;
3066 END IF;
3067
3068 -- wip component issue
3069 IF p_mtl_action_id = 1 AND p_mtl_source_type_id = 5 THEN
3070 x_source_type := 'CSIWIPCI';
3071 x_csi_txn_type_id := 71;
3072 return;
3073 END IF;
3074
3075 -- wip negative comp issue
3076 IF p_mtl_action_id = 33 AND p_mtl_source_type_id = 5 THEN
3077 x_source_type := 'CSIWIPNI';
3078 x_csi_txn_type_id := 72;
3079 return;
3080 END IF;
3081
3082 -- wip component return
3083 IF p_mtl_action_id = 27 AND p_mtl_source_type_id = 5 THEN
3084 x_source_type := 'CSIWIPCR';
3085 x_csi_txn_type_id := 72;
3086 return;
3087 END IF;
3088
3089 -- wip assembly completion
3090 IF p_mtl_action_id = 31 AND p_mtl_source_type_id = 5 THEN
3091 x_source_type := 'CSIWIPAC';
3092 x_csi_txn_type_id := 73;
3093 return;
3094 END IF;
3095
3096 -- wip negative comp return
3097 IF p_mtl_action_id = 34 AND p_mtl_source_type_id = 5 THEN
3098 x_source_type := 'CSIWIPNR';
3099 x_csi_txn_type_id := 71;
3100 return;
3101 END IF;
3102
3103 x_source_type := 'NONE';
3104 x_csi_txn_type_id := -1;
3105
3106 END get_source_type;
3107
3108 PROCEDURE pump_txn_error(
3109 p_mtl_txn_id IN number,
3110 p_mtl_type_id IN number,
3111 p_mtl_action_id IN number,
3112 p_mtl_source_type_id IN number,
3113 p_mtl_type_class IN number,
3114 p_mtl_txn_qty IN number,
3115 p_dequeue_flag IN varchar2 default 'N',
3116 p_release IN varchar2)
3117 IS
3118
3119 l_error_rec csi_datastructures_pub.transaction_error_rec;
3120 l_error_id number;
3121 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
3122 l_msg_count number;
3123 l_msg_data varchar2(2000);
3124 l_source_type varchar2(20);
3125 l_csi_txn_type_id number;
3126 l_message_string varchar2(2000);
3127
3131 savepoint pump_txn_error;
3128 l_error_message varchar2(2000);
3129 BEGIN
3130
3132
3133 IF p_dequeue_flag = 'Y' THEN
3134 l_error_rec.processed_flag := 'R';
3135 ELSE
3136 l_error_rec.processed_flag := 'E';
3137 END IF;
3138
3139 l_error_rec.error_text := 'Missing transaction in Install Base.';
3140 l_error_rec.error_stage := 'IB_UPDATE';
3141 l_error_rec.inv_material_transaction_id := p_mtl_txn_id;
3142 l_error_rec.source_id := p_mtl_txn_id;
3143 cse_util_pkg.build_error_string(l_message_string,'MTL_TRANSACTION_ID',p_mtl_txn_id);
3144 l_error_rec.message_string := l_message_string;
3145
3146 get_source_type(
3147 p_mtl_txn_id => p_mtl_txn_id,
3148 p_mtl_type_id => p_mtl_type_id,
3149 p_mtl_action_id => p_mtl_action_id,
3150 p_mtl_source_type_id => p_mtl_source_type_id,
3151 p_mtl_type_class => p_mtl_type_class,
3152 p_mtl_txn_qty => p_mtl_txn_qty,
3153 p_release => p_release,
3154 x_source_type => l_source_type,
3155 x_csi_txn_type_id => l_csi_txn_type_id);
3156
3157 l_error_rec.source_type := l_source_type;
3158 l_error_rec.transaction_type_id := l_csi_txn_type_id;
3159
3160 log(' '||l_error_rec.inv_material_transaction_id||' '||l_error_rec.source_type||' '||
3161 l_error_rec.transaction_type_id||' '||p_mtl_type_id||' '||p_mtl_action_id||' '||
3162 p_mtl_source_type_id);
3163
3164 csi_transactions_pvt.create_txn_error (
3165 p_api_version => 1.0,
3166 p_init_msg_list => fnd_api.g_true,
3167 p_commit => fnd_api.g_false,
3168 p_validation_level => fnd_api.g_valid_level_full,
3169 p_txn_error_rec => l_error_rec,
3170 x_transaction_error_id => l_error_id,
3171 x_return_status => l_return_status,
3172 x_msg_count => l_msg_count,
3173 x_msg_data => l_msg_data);
3174
3175 IF l_return_status <> fnd_api.g_ret_sts_success THEN
3176 RAISE fnd_api.g_exc_error;
3177 END IF;
3178
3179 commit;
3180
3181 EXCEPTION
3182 WHEN fnd_api.g_exc_error THEN
3183 rollback to pump_txn_error;
3184 l_error_message := csi_t_gen_utility_pvt.dump_error_stack;
3185 log(' Error: '||l_error_message);
3186 END pump_txn_error;
3187
3188 PROCEDURE decode_queue is
3189 CURSOR msg_cur(p_freeze_date IN date) IS
3190 SELECT msg_id,
3191 msg_code,
3192 msg_status,
3193 body_text,
3194 creation_date,
3195 description
3196 FROM xnp_msgs
3197 WHERE (msg_code like 'CSI%' OR msg_code like 'CSE%')
3198 AND recipient_name is null
3199 AND msg_status IN ('READY', 'FAILED', 'REJECTED')
3200 AND msg_creation_date > p_freeze_date;
3201
3202 l_amount integer;
3203 l_msg_text varchar2(32767);
3204 l_source_id varchar2(200);
3205 l_source_type varchar2(30);
3206
3207 l_schema_name varchar2(30);
3208 l_object_name varchar2(80);
3209 l_freeze_date date;
3210 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
3211
3212 BEGIN
3213
3214 log(date_time_stamp||' begin decode_queue');
3215
3216 get_schema_name(
3217 p_product_short_name => 'CSI',
3218 x_schema_name => l_schema_name,
3219 x_return_status => l_return_status);
3220
3221 IF l_return_status <> fnd_api.g_ret_sts_success THEN
3222 RAISE fnd_api.g_exc_error;
3223 END IF;
3224
3225 l_object_name := l_schema_name||'.csi_xnp_msgs_temp';
3226
3227 truncate_table(l_object_name);
3228
3229 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
3230 csi_gen_utility_pvt.populate_install_param_rec;
3231 END IF;
3232
3233 l_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
3234
3235 FOR msg_rec in msg_cur(l_freeze_date)
3236 LOOP
3237
3238 l_amount := null;
3239 l_amount := dbms_lob.getlength(msg_rec.body_text);
3240 l_msg_text := null;
3241
3242 dbms_lob.read(
3243 lob_loc => msg_rec.body_text,
3244 amount => l_amount,
3245 offset => 1,
3246 buffer => l_msg_text );
3247
3248 l_source_id := null;
3249
3250 IF msg_rec.msg_code in ('CSISOFUL', 'CSIRMAFL') THEN
3251 xnp_xml_utils.decode(l_msg_text, 'ORDER_LINE_ID', l_source_id);
3252 l_source_type := 'ORDER_LINE_ID';
3253 ELSE
3254 xnp_xml_utils.decode(l_msg_text, 'MTL_TRANSACTION_ID', l_source_id);
3255 l_source_type := 'MTL_TRANSACTION_ID';
3256 END IF;
3257
3258 INSERT INTO csi_xnp_msgs_temp(
3259 msg_id,
3260 msg_code,
3261 msg_text,
3262 msg_status,
3263 source_id,
3264 source_type,
3265 creation_date,
3266 description,
3267 process_flag)
3268 VALUES(
3269 msg_rec.msg_id,
3270 msg_rec.msg_code,
3271 l_msg_text,
3275 msg_rec.creation_date,
3272 msg_rec.msg_status,
3273 l_source_id,
3274 l_source_type,
3276 msg_rec.description,
3277 'Y');
3278 IF mod(msg_cur%rowcount, 100) = 0 THEN
3279 commit;
3280 END IF;
3281 END LOOP;
3282
3283 log(date_time_stamp||' end decode_queue');
3284 END decode_queue;
3285
3286 PROCEDURE dequeue_messages_as_errors
3287 IS
3288
3289 CURSOR q_cur IS
3290 SELECT msg_id,
3291 msg_code,
3292 msg_text,
3293 msg_status,
3294 source_id,
3295 source_type,
3296 creation_date,
3297 description,
3298 process_flag
3299 FROM csi_xnp_msgs_temp
3300 WHERE source_type = 'MTL_TRANSACTION_ID'
3301 AND source_id is not null;
3302
3303 l_release number;
3304 l_mtl_txn_id number;
3305 l_mtl_type_id number;
3306 l_mtl_action_id number;
3307 l_mtl_source_type_id number;
3308 l_mtl_type_class number;
3309 l_mtl_txn_qty number;
3310
3311 skip_message exception;
3312
3313 BEGIN
3314
3315 SELECT fnd_Profile.value('csi_upgrading_from_release')
3316 INTO l_release
3317 FROM sys.dual;
3318
3319 decode_queue;
3320
3321 FOR q_rec IN q_cur
3322 LOOP
3323
3324 BEGIN
3325
3326 BEGIN
3327
3328 SELECT mmt.transaction_id,
3329 mmt.transaction_type_id ,
3330 mmt.transaction_action_id,
3331 mmt.transaction_source_type_id,
3332 mtt.type_class,
3333 mmt.transaction_quantity
3334 INTO l_mtl_txn_id,
3335 l_mtl_type_id,
3336 l_mtl_action_id,
3337 l_mtl_source_type_id,
3338 l_mtl_type_class,
3339 l_mtl_txn_qty
3340 FROM mtl_material_transactions mmt,
3341 mtl_transaction_types mtt
3342 WHERE mmt.transaction_id = q_rec.source_id
3343 AND mtt.transaction_type_id = mmt.transaction_type_id;
3344
3345 EXCEPTION
3346 WHEN no_data_found THEN
3347 RAISE skip_message;
3348 WHEN too_many_rows THEN
3349 RAISE skip_message;
3350 END;
3351
3352 pump_txn_error(
3353 p_mtl_txn_id => l_mtl_txn_id,
3354 p_mtl_type_id => l_mtl_type_id,
3355 p_mtl_action_id => l_mtl_action_id,
3356 p_mtl_source_type_id => l_mtl_source_type_id,
3357 p_mtl_type_class => l_mtl_type_class,
3358 p_mtl_txn_qty => l_mtl_txn_qty,
3359 p_dequeue_flag => 'Y',
3360 p_release => l_release);
3361
3362 -- this code needs to be changed to appropriate call in xnp
3363 UPDATE xnp_msgs
3364 SET msg_status = 'PROCESSED'
3365 WHERE msg_id = q_rec.msg_id;
3366
3367 EXCEPTION
3368 WHEN skip_message THEN
3369 log(' bad mtl_txn_id for message in sfm queue message_id :'||q_rec.msg_id);
3370 END;
3371 END LOOP;
3372
3373 END dequeue_messages_as_errors;
3374
3375 PROCEDURE pump_prior_wip_missing_txns(
3376 p_mtl_creation_date IN date,
3377 p_mtl_txn_id IN number,
3378 p_wip_job_id IN number)
3379 IS
3380 CURSOR prior_cur(pc_mtl_creation_date IN date, pc_wip_job_id IN number, p_freeze_date in date) IS
3381 SELECT transaction_id mtl_txn_id,
3382 mmt.transaction_action_id mtl_action_id,
3383 mmt.transaction_source_type_id mtl_source_type_id,
3384 mmt.transaction_source_id mtl_source_id,
3385 mmt.transaction_type_id mtl_type_id,
3386 mtt.type_class mtl_type_class,
3387 mmt.transaction_quantity mtl_txn_qty
3388 FROM mtl_system_items msi,
3389 mtl_transaction_types mtt,
3390 mtl_material_transactions mmt
3391 WHERE mmt.transaction_source_type_id = 5
3392 AND mmt.transaction_action_id IN (1, 27, 31, 32, 33, 34)
3393 AND mmt.transaction_date > p_freeze_date
3394 AND mmt.transaction_source_id = pc_wip_job_id
3395 AND mmt.creation_date < pc_mtl_creation_date
3396 AND mtt.transaction_type_id = mmt.transaction_type_id
3397 AND msi.organization_id = mmt.organization_id
3398 AND msi.inventory_item_id = mmt.inventory_item_id
3399 AND nvl(msi.comms_nl_trackable_flag, 'N') = 'Y';
3400
3401 l_release varchar2(80);
3402 l_in_error boolean;
3403 l_txn_error_flag varchar2(1);
3404
3405 l_in_queue boolean;
3406 l_pending_msg_found varchar2(1);
3407
3408 l_processed boolean;
3409 l_processed_flag varchar2(1);
3410
3411 TYPE missing_txn_rec is RECORD(
3412 mtl_txn_id number,
3413 mtl_type_id number,
3414 mtl_action_id number,
3415 mtl_source_type_id number,
3419 TYPE missing_txn_tbl is TABLE OF missing_txn_rec INDEX BY BINARY_INTEGER;
3416 mtl_type_class number,
3417 mtl_txn_qty number);
3418
3420
3421 l_missing_tbl missing_txn_tbl;
3422 l_m_ind binary_integer := 0;
3423
3424 l_freeze_date date;
3425
3426 BEGIN
3427
3428 l_missing_tbl.delete;
3429
3430 SELECT fnd_Profile.value('CSI_UPGRADING_FROM_RELEASE')
3431 INTO l_release
3432 FROM sys.dual;
3433 --
3434 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
3435 csi_gen_utility_pvt.populate_install_param_rec;
3436 END IF;
3437 --
3438 l_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
3439 --
3440 FOR wip_txn_rec IN prior_cur(p_mtl_creation_date, p_wip_job_id, l_freeze_date)
3441 LOOP
3442
3443 -- check if processed
3444 BEGIN
3445 SELECT 'Y' INTO l_processed_flag
3446 FROM sys.dual
3447 WHERE exists(
3448 SELECT '1' FROM csi_transactions
3449 WHERE inv_material_transaction_id = wip_txn_rec.mtl_txn_id);
3450 l_processed := true;
3451 EXCEPTION
3452 WHEN no_data_found THEN
3453 l_processed := false;
3454 END;
3455
3456 IF NOT(l_processed) THEN
3457 -- check if errors
3458 l_in_error := false;
3459 BEGIN
3460 SELECT 'Y' INTO l_txn_error_flag
3461 FROM sys.dual
3462 WHERE EXISTS (
3463 SELECT '1' FROM csi_txn_errors
3464 WHERE inv_material_transaction_id = wip_txn_rec.mtl_txn_id
3465 AND processed_flag in ('E', 'R'));
3466 l_in_error := true;
3467 EXCEPTION
3468 WHEN no_data_found THEN
3469 l_in_error := false;
3470 END;
3471
3472 -- check if pending in queue
3473 IF NOT(l_in_error) THEN
3474 BEGIN
3475 SELECT 'Y' INTO l_pending_msg_found
3476 FROM sys.dual
3477 WHERE exists (
3478 SELECT '1'
3479 FROM csi_xnp_msgs_temp
3480 WHERE source_type = 'MTL_TRANSACTION_ID'
3481 AND source_id = wip_txn_rec.mtl_txn_id
3482 AND nvl(msg_status, 'READY') <> 'PROCESSED');
3483 l_in_queue := true;
3484 EXCEPTION
3485 WHEN no_data_found THEN
3486 l_in_queue := false;
3487 END;
3488 END IF;
3489
3490 IF NOT(l_in_error) and NOT(l_in_queue) THEN
3491
3492 l_m_ind := l_m_ind + 1;
3493
3494 l_missing_tbl(l_m_ind).mtl_txn_id := wip_txn_rec.mtl_txn_id;
3495 l_missing_tbl(l_m_ind).mtl_type_id := wip_txn_rec.mtl_type_id;
3496 l_missing_tbl(l_m_ind).mtl_action_id := wip_txn_rec.mtl_action_id;
3497 l_missing_tbl(l_m_ind).mtl_source_type_id := wip_txn_rec.mtl_source_type_id;
3498 l_missing_tbl(l_m_ind).mtl_type_class := wip_txn_rec.mtl_type_class;
3499 l_missing_tbl(l_m_ind).mtl_txn_qty := wip_txn_rec.mtl_txn_qty;
3500
3501 END IF;
3502
3503 END IF; -- not processed
3504 END LOOP;
3505
3506 IF l_missing_tbl.COUNT > 0 THEN
3507 FOR l_ind IN l_missing_tbl.FIRST .. l_missing_tbl.LAST
3508 LOOP
3509 pump_txn_error(
3510 p_mtl_txn_id => l_missing_tbl(l_ind).mtl_txn_id,
3511 p_mtl_type_id => l_missing_tbl(l_ind).mtl_type_id,
3512 p_mtl_action_id => l_missing_tbl(l_ind).mtl_action_id,
3513 p_mtl_source_type_id => l_missing_tbl(l_ind).mtl_source_type_id,
3514 p_mtl_type_class => l_missing_tbl(l_ind).mtl_type_class,
3515 p_mtl_txn_qty => l_missing_tbl(l_ind).mtl_txn_qty,
3516 p_dequeue_flag => 'N',
3517 p_release => l_release);
3518 END LOOP;
3519 END IF;
3520
3521 commit;
3522
3523 END pump_prior_wip_missing_txns;
3524
3525 PROCEDURE pump_srl_missing_txns(
3526 p_serial_number IN varchar2,
3527 p_item_id IN number,
3528 p_serial_code IN number,
3529 p_lot_code IN number,
3530 p_freeze_date IN date)
3531 IS
3532
3533 l_release varchar2(80);
3534
3535 l_serial_code number;
3536 l_lot_code number;
3537
3538 l_in_error boolean;
3539 l_txn_error_flag varchar2(1);
3540
3541 l_in_queue boolean;
3542 l_pending_msg_found varchar2(1);
3543
3544 l_processed boolean;
3545 l_processed_flag varchar2(1);
3546
3547 TYPE missing_txn_rec is RECORD(
3548 mtl_txn_id number,
3549 mtl_type_id number,
3550 mtl_action_id number,
3551 mtl_source_type_id number,
3552 mtl_type_class number,
3553 mtl_txn_qty number);
3554
3555 TYPE missing_txn_tbl is TABLE OF missing_txn_rec INDEX BY BINARY_INTEGER;
3556
3557 l_missing_tbl missing_txn_tbl;
3558 l_m_ind binary_integer := 0;
3559
3560 BEGIN
3561
3562
3566 INTO l_release
3563 l_missing_tbl.delete;
3564
3565 SELECT fnd_Profile.value('csi_upgrading_from_release')
3567 FROM sys.dual;
3568
3569 FOR all_txn_rec in all_txn_cur(
3570 p_serial_number => p_serial_number,
3571 p_item_id => p_item_id)
3572 LOOP
3573
3574 IF all_txn_rec.mtl_txn_date > p_freeze_date THEN
3575
3576 IF csi_inv_trxs_pkg.valid_ib_txn(all_txn_rec.mtl_txn_id) THEN
3577
3578 -- check if processed
3579 BEGIN
3580 IF all_txn_rec.mtl_action_id in (2,3,28) THEN
3581 SELECT 'Y' INTO l_processed_flag
3582 FROM sys.dual
3583 WHERE exists(
3584 SELECT '1' FROM csi_transactions
3585 WHERE (inv_material_transaction_id = all_txn_rec.mtl_txn_id
3586 OR
3587 inv_material_transaction_id = all_txn_rec.mtl_xfer_txn_id));
3588 ELSE
3589 SELECT 'Y' INTO l_processed_flag
3590 FROM sys.dual
3591 WHERE exists(
3592 SELECT '1' FROM csi_transactions
3593 WHERE inv_material_transaction_id = all_txn_rec.mtl_txn_id);
3594 END IF;
3595 l_processed := true;
3596 EXCEPTION
3597 WHEN no_data_found THEN
3598 l_processed := false;
3599 END;
3600
3601 IF l_processed THEN
3602 EXIT;
3603 END IF;
3604
3605 -- check if errors
3606 l_in_error := false;
3607 BEGIN
3608 IF all_txn_rec.mtl_action_id in (2,3,28) THEN
3609 SELECT 'Y' INTO l_txn_error_flag
3610 FROM sys.dual
3611 WHERE EXISTS (
3612 SELECT '1' FROM csi_txn_errors
3613 WHERE (inv_material_transaction_id = all_txn_rec.mtl_txn_id
3614 OR
3615 inv_material_transaction_id = all_txn_rec.mtl_xfer_txn_id)
3616 AND processed_flag in ('E', 'R'));
3617 ELSE
3618 SELECT 'Y' INTO l_txn_error_flag
3619 FROM sys.dual
3620 WHERE EXISTS (
3621 SELECT '1' FROM csi_txn_errors
3622 WHERE inv_material_transaction_id = all_txn_rec.mtl_txn_id
3623 AND processed_flag in ('E', 'R'));
3624 END IF;
3625 l_in_error := true;
3626 EXCEPTION
3627 WHEN no_data_found THEN
3628 l_in_error := false;
3629 END;
3630
3631 -- check if pending in queue
3632 IF NOT(l_in_error) THEN
3633 BEGIN
3634 SELECT 'Y' INTO l_pending_msg_found
3635 FROM sys.dual
3636 WHERE exists (
3637 SELECT '1'
3638 FROM csi_xnp_msgs_temp
3639 WHERE source_type = 'MTL_TRANSACTION_ID'
3640 AND source_id = all_txn_rec.mtl_txn_id
3641 AND nvl(msg_status, 'READY') <> 'PROCESSED');
3642 l_in_queue := true;
3643 EXCEPTION
3644 WHEN no_data_found THEN
3645 l_in_queue := false;
3646 END;
3647 END IF;
3648
3649 IF NOT(l_in_error) and NOT(l_in_queue) THEN
3650
3651 l_m_ind := l_m_ind + 1;
3652
3653 l_missing_tbl(l_m_ind).mtl_txn_id := all_txn_rec.mtl_txn_id;
3654 l_missing_tbl(l_m_ind).mtl_type_id := all_txn_rec.mtl_type_id;
3655 l_missing_tbl(l_m_ind).mtl_action_id := all_txn_rec.mtl_action_id;
3656 l_missing_tbl(l_m_ind).mtl_source_type_id := all_txn_rec.mtl_source_type_id;
3657 l_missing_tbl(l_m_ind).mtl_type_class := all_txn_rec.mtl_type_class;
3658 l_missing_tbl(l_m_ind).mtl_txn_qty := all_txn_rec.mtl_txn_qty;
3659
3660 END IF;
3661
3662 END IF; -- valid ib transaction
3663
3664 END IF;
3665 END LOOP;
3666
3667 IF l_missing_tbl.COUNT > 0 THEN
3668 FOR l_ind IN l_missing_tbl.FIRST .. l_missing_tbl.LAST
3669 LOOP
3670 pump_txn_error(
3671 p_mtl_txn_id => l_missing_tbl(l_ind).mtl_txn_id,
3672 p_mtl_type_id => l_missing_tbl(l_ind).mtl_type_id,
3673 p_mtl_action_id => l_missing_tbl(l_ind).mtl_action_id,
3674 p_mtl_source_type_id => l_missing_tbl(l_ind).mtl_source_type_id,
3675 p_mtl_type_class => l_missing_tbl(l_ind).mtl_type_class,
3676 p_mtl_txn_qty => l_missing_tbl(l_ind).mtl_txn_qty,
3677 p_dequeue_flag => 'N',
3678 p_release => l_release);
3679 END LOOP;
3680 END IF;
3681
3682 commit;
3683
3684 END pump_srl_missing_txns;
3685
3686 PROCEDURE pump_all_missing_txns
3687 IS
3688
3689 TYPE NumTabType is varray(10000) of number;
3690 TYPE VarTabType is varray(10000) of varchar2(80);
3691
3692 l_serial_number_tab VarTabType;
3693 l_item_id_tab NumTabType;
3694 l_organization_id_tab NumTabType;
3695
3696 MAX_BUFFER_SIZE number := 1000;
3697
3698 CURSOR all_srl_cur IS
3702 FROM mtl_serial_numbers msn
3699 SELECT msn.serial_number serial_number,
3700 msn.inventory_item_id item_id,
3701 msn.current_organization_id organization_id
3703 WHERE exists (
3704 SELECT '1'
3705 FROM mtl_system_items msi,
3706 mtl_parameters mp
3707 WHERE mp.organization_id = msn.current_organization_id
3708 AND msi.organization_id = mp.master_organization_id
3709 AND msi.inventory_item_id = msn.inventory_item_id
3710 AND nvl(msi.comms_nl_trackable_flag, 'N') = 'Y');
3711
3712 l_freeze_date date;
3713 l_serial_code number;
3714 l_lot_code number;
3715
3716 BEGIN
3717
3718 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
3719 csi_gen_utility_pvt.populate_install_param_rec;
3720 END IF;
3721 --
3722 l_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
3723 --
3724 OPEN all_srl_cur;
3725 LOOP
3726
3727 FETCH all_srl_cur BULK COLLECT
3728 INTO l_serial_number_tab,
3729 l_item_id_tab,
3730 l_organization_id_tab
3731 LIMIT MAX_BUFFER_SIZE;
3732
3733 FOR ind IN 1 .. l_serial_number_tab.COUNT
3734 LOOP
3735
3736 log(' Serial Number : '||l_serial_number_tab(ind));
3737
3738 SELECT serial_number_control_code,
3739 lot_control_code
3740 INTO l_serial_code,
3741 l_lot_code
3742 FROM mtl_system_items
3743 WHERE inventory_item_id = l_item_id_tab(ind)
3744 AND organization_id = l_organization_id_tab(ind);
3745
3746 pump_srl_missing_txns(
3747 p_serial_number => l_serial_number_tab(ind),
3748 p_item_id => l_item_id_tab(ind),
3749 p_serial_code => l_serial_code,
3750 p_lot_code => l_lot_code,
3751 p_freeze_date => l_freeze_date);
3752
3753 END LOOP;
3754
3755 EXIT when all_srl_cur%NOTFOUND;
3756
3757 END LOOP;
3758
3759 IF all_srl_cur%ISOPEN THEN
3760 CLOSE all_srl_cur;
3761 END IF;
3762
3763 END pump_all_missing_txns;
3764
3765 PROCEDURE pump_err_missing_txns
3766 IS
3767
3768 CURSOR tld_inst_cur(p_order_line_id in number) IS
3769 SELECT tld.instance_id,
3770 tld.serial_number,
3771 tld.inventory_item_id,
3772 tld.inv_organization_id
3773 FROM csi_t_txn_line_details tld,
3774 csi_t_transaction_lines tl
3775 WHERE tl.source_transaction_table = 'OE_ORDER_LINES_ALL'
3776 AND tl.source_transaction_id = p_order_line_id
3777 AND tld.transaction_line_id = tl.transaction_line_id
3778 AND tld.instance_id is not null;
3779
3780 l_mtl_source_type_id number;
3781 l_mtl_action_id number;
3782 l_wip_job_id number;
3783
3784 TYPE NumTabType is varray(10000) of number;
3785 l_mtl_txn_id_tab NumTabType;
3786 l_txn_error_id_tab NumTabType;
3787 max_buffer_size number := 1000;
3788
3789 l_freeze_date date;
3790 l_inv_item_id number;
3791 l_inv_org_id number;
3792 l_serial_code number;
3793 l_lot_code number;
3794
3795 skip_error exception;
3796
3797 l_err_txn_date date;
3798 l_order_line_id number;
3799 l_inst_serial_number varchar2(80);
3800 l_inst_item_id number;
3801 l_inst_vld_org_id number;
3802 l_mtl_creation_date date;
3803
3804 BEGIN
3805
3806 log(date_time_stamp||' begin pump_err_missing_txn');
3807
3808 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
3809 csi_gen_utility_pvt.populate_install_param_rec;
3810 END IF;
3811 --
3812 l_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
3813 --
3814 OPEN error_cur;
3815 LOOP
3816
3817 FETCH error_cur BULK COLLECT
3818 INTO l_mtl_txn_id_tab,
3819 l_txn_error_id_tab
3820 LIMIT max_buffer_size;
3821
3822 FOR ind IN 1 .. l_mtl_txn_id_tab.COUNT
3823 LOOP
3824
3825 BEGIN
3826 BEGIN
3827 SELECT inventory_item_id,
3828 organization_id,
3829 transaction_source_type_id,
3830 transaction_action_id,
3831 transaction_source_id,
3832 trx_source_line_id,
3833 transaction_date,
3834 creation_date
3835 INTO l_inv_item_id,
3836 l_inv_org_id,
3837 l_mtl_source_type_id,
3838 l_mtl_action_id,
3839 l_wip_job_id,
3840 l_order_line_id,
3841 l_err_txn_date,
3842 l_mtl_creation_date
3843 FROM mtl_material_transactions
3844 WHERE transaction_id = l_mtl_txn_id_tab(ind);
3845 EXCEPTION
3846 WHEN no_data_found THEN
3847 RAISE skip_error;
3851
3848 WHEN too_many_rows THEN
3849 RAISE skip_error;
3850 END;
3852 IF l_err_txn_date < l_freeze_date THEN
3853 RAISE skip_error;
3854 END IF;
3855
3856 SELECT serial_number_control_code,
3857 lot_control_code
3858 INTO l_serial_code,
3859 l_lot_code
3860 FROM mtl_system_items
3861 WHERE inventory_item_id = l_inv_item_id
3862 AND organization_id = l_inv_org_id;
3863
3864 FOR srl_rec in srl_cur(l_mtl_txn_id_tab(ind))
3865 LOOP
3866
3867 pump_srl_missing_txns(
3868 p_serial_number => srl_rec.serial_number,
3869 p_item_id => srl_rec.item_id,
3870 p_serial_code => l_serial_code,
3871 p_lot_code => l_lot_code,
3872 p_freeze_date => l_freeze_date);
3873
3874 END LOOP;
3875
3876 IF l_mtl_action_id = 31 AND l_mtl_source_type_id = 5 THEN
3877
3878 /* this routine pumps the prior wip transactions even if a txn is
3879 successfully processed later than the prior transaction
3880 forced pump for prior WIP transaction
3881 */
3882 pump_prior_wip_missing_txns(
3883 p_mtl_creation_date => l_mtl_creation_date,
3884 p_mtl_txn_id => l_mtl_txn_id_tab(ind),
3885 p_wip_job_id => l_wip_job_id);
3886
3887 END IF;
3888
3889 IF (l_mtl_action_id = 1 AND l_mtl_source_type_id = 2) OR -- sales order issue
3890 (l_mtl_action_id = 1 AND l_mtl_source_type_id = 8) OR -- int order issue
3891 (l_mtl_action_id = 27 AND l_mtl_source_type_id = 12) -- rma receipt
3892 THEN
3893
3894 FOR tld_inst_rec IN tld_inst_cur(l_order_line_id)
3895 LOOP
3896
3897 l_inst_serial_number := tld_inst_rec.serial_number;
3898 l_inst_item_id := tld_inst_rec.inventory_item_id;
3899 l_inst_vld_org_id := tld_inst_rec.inv_organization_id;
3900
3901 IF l_inst_serial_number is null THEN
3902 SELECT serial_number,
3903 inventory_item_id,
3904 last_vld_organization_id
3905 INTO l_inst_serial_number,
3906 l_inst_item_id,
3907 l_inst_vld_org_id
3908 FROM csi_item_instances
3909 WHERE instance_id = tld_inst_rec.instance_id;
3910 END IF;
3911
3912 IF l_inst_serial_number is not null THEN
3913
3914 SELECT serial_number_control_code,
3915 lot_control_code
3916 INTO l_serial_code,
3917 l_lot_code
3918 FROM mtl_system_items
3919 WHERE inventory_item_id = l_inst_item_id
3920 AND organization_id = l_inst_vld_org_id;
3921
3922 pump_srl_missing_txns(
3923 p_serial_number => l_inst_serial_number,
3924 p_item_id => l_inst_item_id,
3925 p_serial_code => l_serial_code,
3926 p_lot_code => l_lot_code,
3927 p_freeze_date => l_freeze_date);
3928
3929 END IF;
3930
3931 END LOOP;
3932 END IF;
3933
3934
3935 EXCEPTION
3936 WHEN skip_error THEN
3937 log(' bad csi_txn_errors.mtl_txn_id : '||l_mtl_txn_id_tab(ind));
3938 END;
3939 END LOOP;
3940
3941 EXIT when error_cur%NOTFOUND;
3942
3943 END LOOP;
3944
3945 IF error_cur%ISOPEN THEN
3946 CLOSE error_cur;
3947 END IF;
3948
3949 log(date_time_stamp||' end pump_err_missing_txn');
3950
3951 END pump_err_missing_txns;
3952
3953 /* main routine for populating the error stage of the serial transaction */
3954 PROCEDURE get_srldata(
3955 p_single_error_flag IN varchar2,
3956 p_mtl_txn_id IN number)
3957 IS
3958
3959 CURSOR single_error_cur(pc_mtl_txn_id IN number) is
3960 SELECT cte.inv_material_transaction_id mtl_txn_id,
3961 cte.transaction_error_id txn_error_id
3962 FROM csi_txn_errors cte
3963 WHERE cte.inv_material_transaction_id = pc_mtl_txn_id
3964 AND cte.processed_flag in ('E', 'R');
3965
3966 TYPE NumTabType is varray(10000) of number;
3967 l_mtl_txn_id_tab NumTabType;
3968 l_txn_error_id_tab NumTabType;
3969 max_buffer_size number := 1000;
3970
3971 l_release varchar2(80);
3972
3973 l_diag_seq_id number := 1000;
3974 l_freeze_date date;
3975 l_inv_item_id number;
3976 l_inv_org_id number;
3977
3978 l_unit_txn_found boolean;
3979 l_knock_err_txn boolean;
3980 l_err_txn_serial_code number;
3981 l_err_txn_lot_code number;
3982 l_err_txn_source_type_id number;
3983 l_err_txn_action_id number;
3984 l_err_txn_date date;
3985
3986 l_serial_code number;
3990 l_inst_id number;
3987 l_lot_code number;
3988 l_revision_code number;
3989
3991 l_inst_vld_org_id number;
3992 l_inst_location varchar2(80);
3993 l_inst_usage_code varchar2(30);
3994 l_owner_ip_id number;
3995 l_owner_ipa_id number;
3996 l_inst_owner_pty_id number;
3997 l_inst_owner_acct_id number;
3998 l_inst_end_date date;
3999 l_inst_org_id number;
4000 l_inst_subinv_name varchar2(30);
4001 l_inst_rev_num varchar2(10);
4002
4003 l_csi_txn_id number;
4004 l_csi_txn_type_id number;
4005 l_order_line_id number;
4006 l_rma_line_id number;
4007 l_wip_job_id number;
4008 l_create_flag varchar2(1) := 'N';
4009 l_error_flag varchar2(1);
4010 l_last_txn boolean;
4011 l_last_txn_flag varchar2(1);
4012
4013 l_error varchar2(2000);
4014
4015 l_already_inserted varchar2(1);
4016 l_inst_mig_flag varchar2(1);
4017 l_internal_party_id number;
4018 l_process_flag varchar2(1);
4019 l_temp_message varchar2(540);
4020 l_source_type varchar2(30);
4021
4022 l_txn_rec csi_datastructures_pub.transaction_rec;
4023 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
4024 l_msg_count number;
4025 l_msg_data varchar2(2000);
4026
4027 skip_insert exception;
4028 skip_error exception;
4029
4030 l_schema_name varchar2(30);
4031 l_object_name varchar2(80);
4032
4033 BEGIN
4034
4035 -- dumps the xnp_msgs in to csi_xnp_msgs_tmp with the decoded value
4036 decode_queue;
4037
4038 -- pump missing transaction for the serial numbers that are in error condition
4039 pump_err_missing_txns;
4040
4041 get_schema_name(
4042 p_product_short_name => 'CSI',
4043 x_schema_name => l_schema_name,
4044 x_return_status => l_return_status);
4045
4046 IF l_return_status <> fnd_api.g_ret_sts_success THEN
4047 RAISE fnd_api.g_exc_error;
4048 END IF;
4049
4050 l_object_name := l_schema_name||'.csi_diagnostics_temp';
4051
4052 -- cleans up the temporary process table
4053 truncate_table(l_object_name);
4054
4055 log(date_time_stamp||' begin get_srldata');
4056
4057 SELECT fnd_Profile.value('csi_upgrading_from_release')
4058 INTO l_release
4059 FROM sys.dual;
4060 --
4061 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
4062 csi_gen_utility_pvt.populate_install_param_rec;
4063 END IF;
4064 --
4065 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
4066 l_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
4067 --
4068 /* bulk fetch all the txn errors, 1000 records at a time */
4069 IF p_single_error_flag = 'Y' THEN
4070 OPEN single_error_cur(p_mtl_txn_id);
4071 ELSE
4072 /* bulk fetch all the txn errors, 1000 records at a time */
4073 OPEN error_cur;
4074 END IF;
4075 LOOP
4076
4077 IF p_single_error_flag = 'Y' THEN
4078 FETCH single_error_cur BULK COLLECT
4079 INTO l_mtl_txn_id_tab,
4080 l_txn_error_id_tab
4081 LIMIT max_buffer_size;
4082 ELSE
4083 FETCH error_cur BULK COLLECT
4084 INTO l_mtl_txn_id_tab,
4085 l_txn_error_id_tab
4086 LIMIT max_buffer_size;
4087 END IF;
4088
4089 FOR ind IN 1 .. l_mtl_txn_id_tab.COUNT
4090 LOOP
4091
4092 BEGIN
4093
4094 BEGIN
4095 SELECT inventory_item_id,
4096 organization_id,
4097 transaction_source_type_id,
4098 transaction_action_id,
4099 transaction_date
4100 INTO l_inv_item_id,
4101 l_inv_org_id,
4102 l_err_txn_source_type_id,
4103 l_err_txn_action_id,
4104 l_err_txn_date
4105 FROM mtl_material_transactions
4106 WHERE transaction_id = l_mtl_txn_id_tab(ind);
4107 EXCEPTION
4108 WHEN no_data_found THEN
4109 RAISE skip_error;
4110 WHEN too_many_rows THEN
4111 RAISE skip_error;
4112 END;
4113
4114 IF l_err_txn_date < l_freeze_date THEN
4115
4116 UPDATE csi_txn_errors
4117 SET processed_flag = 'D',
4118 error_text = 'Transaction prior to freeze_date in install parameter',
4119 last_update_login = fnd_global.login_id,
4120 last_update_date = sysdate,
4121 last_updated_by = fnd_global.user_id
4122 WHERE transaction_error_id = l_txn_error_id_tab(ind);
4123
4124 RAISE skip_error;
4125 END IF;
4126
4127 SELECT serial_number_control_code,
4128 lot_control_code
4132 WHERE inventory_item_id = l_inv_item_id
4129 INTO l_err_txn_serial_code,
4130 l_err_txn_lot_code
4131 FROM mtl_system_items
4133 AND organization_id = l_inv_org_id;
4134
4135 l_unit_txn_found := FALSE;
4136
4137 FOR srl_rec in srl_cur(
4138 p_mtl_txn_id => l_mtl_txn_id_tab(ind))
4139 LOOP
4140
4141 l_unit_txn_found := TRUE;
4142
4143 l_inst_id := null;
4144 l_inst_vld_org_id := null;
4145 l_inst_location := null;
4146 l_inst_usage_code := null;
4147 l_owner_ip_id := null;
4148 l_owner_ipa_id := null;
4149 l_inst_owner_pty_id := null;
4150 l_inst_owner_acct_id := null;
4151 l_inst_end_date := null;
4152 l_inst_org_id := null;
4153 l_inst_subinv_name := null;
4154 l_inst_mig_flag := null;
4155 l_process_flag := 'N';
4156 l_temp_message := null;
4157 l_create_flag := 'N';
4158
4159 BEGIN
4160 SELECT instance_id ,
4161 last_vld_organization_id,
4162 owner_party_id,
4163 owner_party_account_id,
4164 location_type_code,
4165 instance_usage_code,
4166 active_end_date,
4167 inv_organization_id,
4168 inv_subinventory_name,
4169 inventory_revision,
4170 nvl(migrated_flag, 'N')
4171 INTO l_inst_id,
4172 l_inst_vld_org_id,
4173 l_inst_owner_pty_id,
4174 l_inst_owner_acct_id,
4175 l_inst_location,
4176 l_inst_usage_code,
4177 l_inst_end_date,
4178 l_inst_org_id,
4179 l_inst_subinv_name,
4180 l_inst_rev_num,
4181 l_inst_mig_flag
4182 FROM csi_item_instances
4183 WHERE inventory_item_id = srl_rec.item_id
4184 AND serial_number = srl_rec.serial_number;
4185
4186 l_create_flag := 'N';
4187
4188 BEGIN
4189 SELECT instance_party_id
4190 INTO l_owner_ip_id
4191 FROM csi_i_parties
4192 WHERE instance_id = l_inst_id
4193 AND relationship_type_code = 'OWNER'
4194 AND rownum = 1;
4195
4196 BEGIN
4197 SELECT ip_account_id
4198 INTO l_owner_ipa_id
4199 FROM csi_ip_accounts
4200 WHERE instance_party_id = l_owner_ip_id
4201 AND relationship_type_code = 'OWNER';
4202 EXCEPTION
4203 WHEN no_data_found THEN
4204 l_owner_ipa_id := null;
4205 END;
4206
4207 EXCEPTION
4208 WHEN no_data_found THEN
4209 l_owner_ip_id := null;
4210 END;
4211
4212 EXCEPTION
4213 WHEN no_data_found THEN
4214 l_create_flag := 'Y';
4215 null;
4216 WHEN too_many_rows THEN
4217 l_create_flag := 'N';
4218 l_process_flag := 'E';
4219 l_temp_message := 'Multiple serialized instances found';
4220 END;
4221
4222 l_last_txn := TRUE;
4223
4224 FOR txn_rec in all_txn_cur (
4225 p_serial_number => srl_rec.serial_number,
4226 p_item_id => srl_rec.item_id)
4227 LOOP
4228
4229 IF txn_rec.mtl_txn_date > l_freeze_date THEN
4230
4231 BEGIN
4232
4233 IF not csi_inv_trxs_pkg.valid_ib_txn(txn_rec.mtl_txn_id) THEN
4234 raise skip_insert;
4235 END IF;
4236
4237 IF l_last_txn THEN
4238 l_last_txn_flag := 'Y';
4239 ELSE
4240 l_last_txn_flag := 'N';
4241 END IF;
4242
4243 l_last_txn := FALSE;
4244
4245 l_order_line_id := null;
4246 l_rma_line_id := null;
4247 l_wip_job_id := null;
4248
4249 -- sales order shipment -- pick release
4250 IF txn_rec.mtl_type_id in (33,52) THEN
4251 l_order_line_id := txn_rec.mtl_source_line_id;
4252 END IF;
4253
4254 -- rma receipt
4255 IF txn_rec.mtl_type_id = 15 THEN
4256 l_rma_line_id := txn_rec.mtl_source_line_id;
4257 END IF;
4258
4259 -- wip transactions
4260 IF txn_rec.mtl_source_type_id = 5 THEN
4261 l_wip_job_id := txn_rec.mtl_source_id;
4262 END IF;
4263
4267 BEGIN
4264 l_csi_txn_id := null;
4265 l_csi_txn_type_id := null;
4266
4268 IF txn_rec.mtl_action_id in (2,3,28) THEN
4269 SELECT cte.transaction_type_id,
4270 cte.error_text
4271 INTO l_csi_txn_type_id,
4272 l_error
4273 FROM csi_txn_errors cte
4274 WHERE (cte.inv_material_transaction_id = txn_rec.mtl_txn_id
4275 OR
4276 cte.inv_material_transaction_id = txn_rec.mtl_xfer_txn_id)
4277 AND cte.processed_flag in ('E', 'R')
4278 AND rownum = 1;
4279 ELSE
4280 SELECT cte.transaction_type_id,
4281 cte.error_text
4282 INTO l_csi_txn_type_id,
4283 l_error
4284 FROM csi_txn_errors cte
4285 WHERE cte.inv_material_transaction_id = txn_rec.mtl_txn_id
4286 AND cte.processed_flag in ('E', 'R')
4287 AND rownum = 1;
4288 END IF;
4289
4290 l_error_flag := 'E';
4291 EXCEPTION
4292 WHEN no_data_found THEN
4293 l_error_flag := 'M';
4294 l_error := null;
4295 END;
4296
4297 BEGIN
4298 IF txn_rec.mtl_action_id in (2,3,28) THEN
4299 SELECT transaction_id,
4300 transaction_type_id
4301 INTO l_csi_txn_id,
4302 l_csi_txn_type_id
4303 FROM csi_transactions
4304 WHERE (inv_material_transaction_id = txn_rec.mtl_txn_id
4305 OR
4306 inv_material_transaction_id = txn_rec.mtl_xfer_txn_id)
4307 AND rownum = 1;
4308 ELSE
4309 SELECT transaction_id,
4310 transaction_type_id
4311 INTO l_csi_txn_id,
4312 l_csi_txn_type_id
4313 FROM csi_transactions
4314 WHERE inv_material_transaction_id = txn_rec.mtl_txn_id
4315 AND rownum = 1;
4316 END IF;
4317 EXCEPTION
4318 WHEN no_data_found THEN
4319 l_csi_txn_id := null;
4320 END;
4321
4322 IF nvl(l_error_flag,'P') = 'E' THEN
4323 l_error_flag := 'E';
4324 ELSE
4325 IF l_csi_txn_id is not null THEN
4326 l_error_flag := 'P';
4327 END IF;
4328 END IF;
4329
4330 BEGIN
4331 SELECT 'Y' INTO l_already_inserted
4332 FROM csi_diagnostics_temp
4333 WHERE serial_number = srl_rec.serial_number
4334 AND inventory_item_id = srl_rec.item_id
4335 AND mtl_txn_id = txn_rec.mtl_txn_id;
4336 EXCEPTION
4337 WHEN no_data_found THEN
4338
4339 SELECT serial_number_control_code,
4340 lot_control_code ,
4341 revision_qty_control_code
4342 INTO l_serial_code,
4343 l_lot_code,
4344 l_revision_code
4345 FROM mtl_system_items
4346 WHERE inventory_item_id = txn_rec.item_id
4347 AND organization_id = txn_rec.organization_id;
4348
4349 get_source_type(
4350 p_mtl_txn_id => txn_rec.mtl_txn_id,
4351 p_mtl_type_id => txn_rec.mtl_type_id,
4352 p_mtl_action_id => txn_rec.mtl_action_id,
4353 p_mtl_source_type_id => txn_rec.mtl_source_type_id,
4354 p_mtl_type_class => txn_rec.mtl_type_class,
4355 p_mtl_txn_qty => txn_rec.mtl_txn_qty,
4356 p_release => l_release,
4357 x_source_type => l_source_type,
4358 x_csi_txn_type_id => l_csi_txn_type_id);
4359
4360 l_diag_seq_id := l_diag_seq_id + 1;
4361
4362 INSERT INTO csi_diagnostics_temp(
4363 diag_seq_id,
4364 serial_number,
4365 lot_number,
4366 serial_control_code,
4367 lot_control_code,
4368 revision_control_code,
4369 mtl_creation_date,
4370 mtl_txn_date,
4371 mtl_txn_id,
4372 mtl_txn_name,
4373 mtl_txn_qty,
4374 mtl_xfer_txn_id,
4375 mtl_item_revision,
4376 inventory_item_id,
4377 organization_id,
4381 mtl_action_id,
4378 error_flag,
4379 error_text,
4380 mtl_type_id,
4382 mtl_src_type_id,
4383 mtl_type_class,
4384 source_type,
4385 csi_txn_type_id,
4386 csi_txn_id,
4387 oe_order_line_id,
4388 wip_job_id,
4389 oe_rma_line_id,
4390 instance_id,
4391 instance_vld_organization_id,
4392 instance_location,
4393 instance_usage_code,
4394 instance_organization_id,
4395 instance_subinv_name,
4396 instance_revision,
4397 instance_end_date,
4398 instance_owner_party_id,
4399 instance_owner_account_id,
4400 instance_mig_flag,
4401 internal_party_id,
4402 last_transaction_flag,
4403 create_flag,
4404 process_flag,
4405 temporary_message)
4406 VALUES(
4407 l_diag_seq_id,
4408 srl_rec.serial_number,
4409 txn_rec.lot_number,
4410 l_serial_code,
4411 l_lot_code,
4412 l_revision_code,
4413 txn_rec.mtl_creation_date,
4414 txn_rec.mtl_txn_date,
4415 txn_rec.mtl_txn_id,
4416 txn_rec.mtl_txn_name,
4417 txn_rec.mtl_txn_qty,
4418 txn_rec.mtl_xfer_txn_id,
4419 txn_rec.mtl_revision,
4420 srl_rec.item_id,
4421 txn_rec.organization_id,
4422 l_error_flag,
4423 l_error,
4424 txn_rec.mtl_type_id,
4425 txn_rec.mtl_action_id,
4426 txn_rec.mtl_source_type_id,
4427 txn_rec.mtl_type_class,
4428 l_source_type,
4429 l_csi_txn_type_id,
4430 l_csi_txn_id,
4431 l_order_line_id,
4432 l_wip_job_id,
4433 l_rma_line_id,
4434 l_inst_id,
4435 l_inst_vld_org_id,
4436 l_inst_location,
4437 l_inst_usage_code,
4438 l_inst_org_id,
4439 l_inst_subinv_name,
4440 l_inst_rev_num,
4441 l_inst_end_date,
4442 l_inst_owner_pty_id,
4443 l_inst_owner_acct_id,
4444 l_inst_mig_flag,
4445 l_internal_party_id,
4446 l_last_txn_flag,
4447 l_create_flag,
4448 l_process_flag,
4449 l_temp_message);
4450
4451 commit;
4452
4453 END;
4454
4455 EXCEPTION
4456 WHEN skip_insert THEN
4457 null;
4458 END;
4459 END IF;
4460 END LOOP;
4461 END LOOP;
4462
4463 l_knock_err_txn := FALSE;
4464
4465 -- serialized and no unit txn
4466 IF l_err_txn_serial_code IN (2, 5) AND NOT(l_unit_txn_found) THEN
4467 l_knock_err_txn := TRUE;
4468 END IF;
4469
4470 -- non serial and having unit txn
4471 IF l_err_txn_serial_code = 1 AND l_unit_txn_found THEN
4472 l_knock_err_txn := TRUE;
4473 END IF;
4474
4475 IF l_err_txn_serial_code = 6 THEN
4476 -- exclude rma and shipments from knocking
4477 IF (l_err_txn_action_id = 27 AND l_err_txn_source_type_id = 12) -- RMA
4478 OR
4479 (l_err_txn_action_id = 1 AND l_err_txn_source_type_id = 2) -- Ship
4480 THEN
4481 IF NOT(l_unit_txn_found) THEN
4482 l_knock_err_txn := TRUE;
4483 ELSE
4484 l_knock_err_txn := FALSE;
4485 END IF;
4486 ELSE
4487 IF l_unit_txn_found THEN
4488 IF (l_err_txn_action_id = 3 AND l_err_txn_source_type_id = 8) -- ISO Direct Ship
4489 OR
4490 (l_err_txn_action_id = 12 AND l_err_txn_source_type_id = 7) -- ISO Intr Receipt
4491 OR
4492 (l_err_txn_action_id = 21 AND l_err_txn_source_type_id = 8) -- ISO Intr Ship
4493 OR
4494 (l_err_txn_action_id = 1 AND l_err_txn_source_type_id = 8) -- Internal Order Issue
4495 OR
4496 (l_err_txn_action_id = 1 AND l_err_txn_source_type_id = 16) -- Proj Contract Issue
4497 THEN
4498 l_knock_err_txn := FALSE;
4502 ELSE
4499 ELSE
4500 l_knock_err_txn := TRUE;
4501 END IF;
4503 l_knock_err_txn := FALSE;
4504 END IF;
4505 END IF;
4506 END IF;
4507
4508 IF l_knock_err_txn THEN
4509 UPDATE csi_txn_errors
4510 SET processed_flag = 'D',
4511 error_text = 'Serial control is now inappropriate for this txn. Knocking this',
4512 last_update_date = sysdate,
4513 last_update_login = fnd_global.login_id,
4514 last_updated_by = fnd_global.user_id
4515 WHERE inv_material_transaction_id = l_mtl_txn_id_tab(ind)
4516 AND processed_flag in ('E', 'R');
4517
4518 DELETE FROM csi_diagnostics_temp
4519 WHERE mtl_txn_id = l_mtl_txn_id_tab(ind)
4520 AND error_flag = 'E';
4521
4522 -- for wip errors that are knocked we write a csi transaction '
4523 -- to make the completion goes thru
4524 IF l_err_txn_source_type_id = 5 OR l_unit_txn_found THEN
4525
4526 l_txn_rec.transaction_id := fnd_api.g_miss_num;
4527 l_txn_rec.transaction_type_id := correction_txn_type_id;
4528 l_txn_rec.source_header_ref := 'DATAFIX';
4529 l_txn_rec.source_line_ref := 'SRLCONTROL TXN MISMATCH';
4530 l_txn_rec.source_transaction_date := l_err_txn_date;
4531 l_txn_rec.transaction_date := sysdate;
4532 l_txn_rec.inv_material_transaction_id := l_mtl_txn_id_tab(ind);
4533
4534 csi_transactions_pvt.create_transaction (
4535 p_api_version => 1.0,
4536 p_commit => fnd_api.g_false,
4537 p_init_msg_list => fnd_api.g_true,
4538 p_validation_level => fnd_api.g_valid_level_full,
4539 p_success_if_exists_flag => 'Y',
4540 p_transaction_rec => l_txn_rec,
4541 x_return_status => l_return_status,
4542 x_msg_count => l_msg_count,
4543 x_msg_data => l_msg_data );
4544
4545 END IF;
4546 END IF;
4547
4548 EXCEPTION
4549 WHEN skip_error THEN
4550 log(' bad csi_txn_errors.mtl_txn_id : '||l_mtl_txn_id_tab(ind));
4551 END;
4552 END LOOP; -- error txn loop
4553
4554 IF p_single_error_flag = 'Y' THEN
4555 EXIT when single_error_cur%NOTFOUND;
4556 ELSE
4557 EXIT when error_cur%NOTFOUND;
4558 END IF;
4559
4560 END LOOP;
4561
4562 IF p_single_error_flag = 'Y' THEN
4563 IF single_error_cur%ISOPEN THEN
4564 CLOSE single_error_cur;
4565 END IF;
4566 ELSE
4567 IF error_cur%ISOPEN THEN
4568 CLOSE error_cur;
4569 END IF;
4570 END IF;
4571
4572 log(date_time_stamp||' end get_srldata');
4573
4574 END get_srldata;
4575
4576 PROCEDURE preprocess_shipment(
4577 p_diag_txn_rec IN diag_txn_rec)
4578 IS
4579 l_expire_flag varchar2(1) := 'N';
4580 l_change_owner_flag varchar2(1) := 'Y';
4581
4582 l_owner_party_id number;
4583 l_owner_account_id number;
4584
4585 BEGIN
4586
4587 IF p_diag_txn_rec.serial_code = 6 THEN
4588 l_expire_flag := 'N';
4589 IF p_diag_txn_rec.create_flag = 'N' THEN
4590
4591 get_rma_owner(
4592 p_serial_number => p_diag_txn_rec.serial_number,
4593 p_inventory_item_id => p_diag_txn_rec.item_id,
4594 p_organization_id => p_diag_txn_rec.organization_id,
4595 x_change_owner_flag => l_change_owner_flag,
4596 x_owner_party_id => l_owner_party_id,
4597 x_owner_account_id => l_owner_account_id);
4598
4599 IF l_change_owner_flag = 'Y' THEN
4600 l_expire_flag := 'Y';
4601 ELSE
4602 l_expire_flag := 'N';
4603 END IF;
4604
4605 UPDATE csi_diagnostics_temp
4606 SET process_flag = 'M',
4607 process_code = 'SOISHIP',
4608 expire_flag = l_expire_flag,
4609 temporary_message = 'Updating the srlsoi instance with returned RMA info.'
4610 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4611
4612 ELSE
4613
4614 UPDATE csi_diagnostics_temp
4615 SET process_flag = 'M',
4616 process_code = 'SOISHIP',
4617 temporary_message = 'Creating/Updating a non serial instance with staging info'
4618 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4619
4620 END IF;
4621
4622 ELSE
4623
4624 UPDATE csi_diagnostics_temp
4625 SET process_flag = 'M',
4626 process_code = 'SHIP',
4627 temporary_message = 'Creating/Updating the instance with staging info'
4628 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4629
4630 END IF;
4631
4632 END preprocess_shipment;
4636 IS
4633
4634 PROCEDURE preprocess_rma(
4635 p_diag_txn_rec IN diag_txn_rec)
4637 BEGIN
4638
4639 UPDATE csi_diagnostics_temp
4640 SET process_flag = 'M',
4641 process_code = 'RMA',
4642 temporary_message = 'Just mark error transaction to be re-processed'
4643 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4644
4645 END preprocess_rma;
4646
4647 PROCEDURE preprocess_wipissue(
4648 p_diag_txn_rec IN diag_txn_rec)
4649 IS
4650 BEGIN
4651 UPDATE csi_diagnostics_temp
4652 SET process_flag = 'M',
4653 process_code = 'WIPISSUE',
4654 temporary_message = 'Stamp the inv location from serial and mark it FOR processing'
4655 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4656 END preprocess_wipissue;
4657
4658 PROCEDURE preprocess_wipreturn(
4659 p_diag_txn_rec IN diag_txn_rec)
4660 IS
4661 BEGIN
4662
4663 UPDATE csi_diagnostics_temp
4664 SET process_flag = 'M',
4665 process_code = 'WIPRETURN',
4666 temporary_message = 'Make it a WIP instance and allow re-processing'
4667 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4668
4669 END preprocess_wipreturn;
4670
4671 PROCEDURE preprocess_wipcompletion(
4672 p_diag_txn_rec IN diag_txn_rec)
4673 IS
4674 BEGIN
4675
4676 UPDATE csi_diagnostics_temp
4677 SET process_flag = 'M',
4678 process_code = 'WIPCOMPL',
4679 temporary_message = 'Mark the error FOR re-processing.'
4680 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4681
4682 END preprocess_wipcompletion;
4683
4684 PROCEDURE preprocess_miscreceipt(
4685 p_diag_txn_rec IN diag_txn_rec)
4686 IS
4687 BEGIN
4688
4689 UPDATE csi_diagnostics_temp
4690 SET process_flag = 'M',
4691 process_code = 'MISCRCPT',
4692 temporary_message = 'Stamp the INV location from serial'
4693 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4694
4695 END preprocess_miscreceipt;
4696
4697 PROCEDURE preprocess_miscissue(
4698 p_diag_txn_rec IN diag_txn_rec)
4699 IS
4700 BEGIN
4701
4702 UPDATE csi_diagnostics_temp
4703 SET process_flag = 'M',
4704 process_code = 'MISCISSUE',
4705 temporary_message = 'Stamp the INV location from serial'
4706 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4707
4708 END preprocess_miscissue;
4709
4710 PROCEDURE preprocess_sixfer(
4711 p_diag_txn_rec IN diag_txn_rec)
4712 IS
4713 BEGIN
4714
4715 UPDATE csi_diagnostics_temp
4716 SET process_flag = 'M',
4717 process_code = 'SIXFER',
4718 temporary_message = 'Stamp the inv location from serial and mark it FOR processing'
4719 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4720
4721 END preprocess_sixfer;
4722
4723
4724 PROCEDURE preprocess_projreceipt(
4725 p_diag_txn_rec IN diag_txn_rec)
4726 IS
4727 BEGIN
4728 UPDATE csi_diagnostics_temp
4729 SET process_flag = 'M',
4730 process_code = 'PROJRCPT',
4731 temporary_message = 'Stamp the project location from serial and mark it for processing'
4732 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4733 END preprocess_projreceipt;
4734
4735 PROCEDURE preprocess_interorgreceipt(
4736 p_diag_txn_rec IN diag_txn_rec)
4737 IS
4738 BEGIN
4739 UPDATE csi_diagnostics_temp
4740 SET process_flag = 'M',
4741 process_code = 'IORGRCPT',
4742 temporary_message = 'Stamp the intransit location from serial and mark it for processing'
4743 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4744 END preprocess_interorgreceipt;
4745
4746 PROCEDURE preprocess_isoreceipt(
4747 p_diag_txn_rec IN diag_txn_rec)
4748 IS
4749 BEGIN
4750 UPDATE csi_diagnostics_temp
4751 SET process_flag = 'M',
4752 process_code = 'ISORCPT',
4753 temporary_message = 'Stamp the intransit location from serial and mark it for processing'
4754 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4755 END preprocess_isoreceipt;
4756
4757 PROCEDURE preprocess_intransitship(
4758 p_diag_txn_rec IN diag_txn_rec)
4759 IS
4760 BEGIN
4761 UPDATE csi_diagnostics_temp
4762 SET process_flag = 'M',
4763 process_code = 'INTRSHIP',
4764 temporary_message = 'Stamp the inv location from serial and mark it for processing'
4765 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4766 END preprocess_intransitship;
4767
4768 PROCEDURE preprocess_unidentified(
4769 p_diag_txn_rec IN diag_txn_rec)
4770 IS
4771 BEGIN
4772 UPDATE csi_diagnostics_temp
4773 SET process_flag = 'R',
4774 temporary_message = 'Marking this for re-process.'
4775 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
4776 END preprocess_unidentified;
4777
4778 PROCEDURE preprocess_all(
4779 p_diag_txn_tbl IN diag_txn_tbl)
4780 IS
4781
4782 l_diag_txn_rec diag_txn_rec;
4786 l_preprocessed boolean := false;
4783 l_error_found boolean := FALSE;
4784 l_error_ind binary_integer := 0;
4785 l_diag_txn_r_tbl diag_txn_tbl;
4787
4788 BEGIN
4789
4790 IF p_diag_txn_tbl.COUNT > 0 THEN
4791
4792 l_preprocessed := FALSE;
4793 l_error_found := FALSE;
4794
4795 FOR l_rev_ind IN reverse p_diag_txn_tbl.FIRST .. p_diag_txn_tbl.LAST
4796 LOOP
4797
4798 l_diag_txn_rec := p_diag_txn_tbl(l_rev_ind);
4799
4800 IF nvl(p_diag_txn_tbl(l_rev_ind).error_flag,'P') = 'E' THEN
4801 l_error_found := TRUE;
4802 l_error_ind := l_rev_ind;
4803 exit;
4804 END IF;
4805
4806 END LOOP;
4807
4808 IF l_error_found THEN
4809
4810 log(' '||l_diag_txn_rec.source_type||' '||l_diag_txn_rec.mtl_txn_id||
4811 ' '||l_diag_txn_rec.process_code);
4812
4813 IF l_diag_txn_rec.source_type = 'CSISOSHP' THEN -- shipping
4814 preprocess_shipment(
4815 p_diag_txn_rec => l_diag_txn_rec);
4816 l_preprocessed := TRUE;
4817 END IF;
4818
4819 IF l_diag_txn_rec.source_type = 'CSIOKSHP' THEN -- project contract shipment
4820 preprocess_shipment(
4821 p_diag_txn_rec => l_diag_txn_rec);
4822 l_preprocessed := TRUE;
4823 END IF;
4824
4825 IF l_diag_txn_rec.source_type = 'CSIRMARC' THEN -- rma
4826 preprocess_rma(
4827 p_diag_txn_rec => l_diag_txn_rec);
4828 l_preprocessed := TRUE;
4829 END IF;
4830
4831 IF l_diag_txn_rec.source_type IN (
4832 'CSIWIPCI', -- wip component issue
4833 'CSIWIPNR', -- wip negative component return
4834 'CSIWIPAR') -- wip assembly return
4835 THEN
4836 preprocess_wipissue(
4837 p_diag_txn_rec => l_diag_txn_rec);
4838 l_preprocessed := TRUE;
4839 END IF;
4840
4841 IF l_diag_txn_rec.source_type IN (
4842 'CSIWIPCR', -- wip component return
4843 'CSIWIPNI') -- wip negative component issue
4844 THEN -- wip returns
4845 preprocess_wipreturn(
4846 p_diag_txn_rec => l_diag_txn_rec);
4847 l_preprocessed := TRUE;
4848 END IF;
4849
4850 IF l_diag_txn_rec.source_type = 'CSIWIPAC' THEN -- wip completion
4851 preprocess_wipcompletion(
4852 p_diag_txn_rec => l_diag_txn_rec);
4853 l_preprocessed := TRUE;
4854 END IF;
4855
4856 IF (l_diag_txn_rec.source_type = 'CSIMSRCV') -- misc receipt
4857 OR
4858 (l_diag_txn_rec.source_type = 'CSICYCNT' AND l_diag_txn_rec.mtl_txn_qty > 0)
4859 OR
4860 (l_diag_txn_rec.source_type = 'CSIPHYIN' AND l_diag_txn_rec.mtl_txn_qty > 0)
4861 OR
4862 (l_diag_txn_rec.source_type = 'CSIPOINV')
4863 THEN
4864 preprocess_miscreceipt(
4865 p_diag_txn_rec => l_diag_txn_rec);
4866 l_preprocessed := TRUE;
4867 END IF;
4868
4869 IF (l_diag_txn_rec.source_type IN (
4870 'CSIMSISU', -- misc issue
4871 'CSIISUPT', -- move order issue to project
4872 'CSIMSIPT') -- misc issue to project
4873 OR
4874 (l_diag_txn_rec.source_type = 'CSICYCNT' AND l_diag_txn_rec.mtl_txn_qty < 0)
4875 OR
4876 (l_diag_txn_rec.source_type = 'CSIPHYIN' AND l_diag_txn_rec.mtl_txn_qty < 0))
4877 THEN
4878 preprocess_miscissue(
4879 p_diag_txn_rec => l_diag_txn_rec);
4880 l_preprocessed := TRUE;
4881 END IF;
4882
4883 IF l_diag_txn_rec.source_type IN (
4884 'CSISUBTR', -- subinventory transfer
4885 'CSIORGDS', -- interorg direct shipment
4886 'CSIINTDS') -- iso direct shipment
4887 THEN
4888 preprocess_sixfer(
4889 p_diag_txn_rec => l_diag_txn_rec);
4890 l_preprocessed := TRUE;
4891 END IF;
4892
4893 -- receipt from project
4894 IF l_diag_txn_rec.source_type = 'CSIMSRPT' THEN
4895 preprocess_projreceipt(
4896 p_diag_txn_rec => l_diag_txn_rec);
4897 l_preprocessed := TRUE;
4898 END IF;
4899
4900 -- interorg intransit receipt
4901 IF l_diag_txn_rec.source_type = 'CSIORGTR' THEN
4902 preprocess_interorgreceipt(
4903 p_diag_txn_rec => l_diag_txn_rec);
4904 l_preprocessed := TRUE;
4905 END IF;
4906
4907 -- Internal sales order requisition receipt
4908 IF l_diag_txn_rec.source_type = 'CSIINTSR' THEN
4909 preprocess_isoreceipt(
4910 p_diag_txn_rec => l_diag_txn_rec);
4911 l_preprocessed := TRUE;
4912 END IF;
4913
4914 IF l_diag_txn_rec.source_type IN (
4915 'CSIORGTS', -- interorg intransit shipment
4916 'CSIINTSS') -- internal sales order intransit shipment
4917 THEN
4918 preprocess_intransitship(
4919 p_diag_txn_rec => l_diag_txn_rec);
4920 l_preprocessed := TRUE;
4921 END IF;
4922
4926
4923 IF l_diag_txn_rec.source_type = 'NONE' THEN
4924 l_preprocessed := FALSE;
4925 END IF;
4927 IF l_preprocessed THEN
4928 FOR l_ind IN 1 .. l_error_ind-1
4929 LOOP
4930 IF nvl(p_diag_txn_tbl(l_ind).error_flag,'P') = 'E' THEN
4931 UPDATE csi_diagnostics_temp
4932 SET process_flag = 'R',
4933 temporary_message = 'Marking it for re-process'
4934 WHERE diag_seq_id = p_diag_txn_tbl(l_ind).diag_seq_id;
4935 END IF;
4936 END LOOP;
4937 END IF;
4938
4939 END IF;
4940 END IF;
4941
4942 END preprocess_all;
4943
4944 PROCEDURE knock_all(
4945 p_diag_txn_tbl IN diag_txn_tbl)
4946 IS
4947 BEGIN
4948 IF p_diag_txn_tbl.COUNT > 0 THEN
4949 FOR l_ind IN p_diag_txn_tbl.FIRST .. p_diag_txn_tbl.LAST
4950 LOOP
4951
4952 IF nvl(p_diag_txn_tbl(l_ind).error_flag,'P') = 'E' THEN
4953
4954 UPDATE csi_diagnostics_temp
4955 SET process_flag = 'X',
4956 temporary_message = 'Succeeding txn processed in IB for this serial'
4957 WHERE diag_seq_id = p_diag_txn_tbl(l_ind).diag_seq_id;
4958
4959 END IF;
4960
4961 END LOOP;
4962 END IF;
4963 END knock_all;
4964
4965 PROCEDURE init_diag_temp
4966 IS
4967 CURSOR diag_cur IS
4968 SELECT rowid row_id
4969 FROM csi_diagnostics_temp;
4970
4971 BEGIN
4972
4973 FOR diag_rec IN diag_cur
4974 LOOP
4975
4976 UPDATE csi_diagnostics_temp
4977 SET process_flag = 'N',
4978 process_code = null,
4979 entangled_flag = null,
4980 expire_flag = null,
4981 temporary_message = null
4982 WHERE rowid = diag_rec.row_id;
4983
4984 IF mod(diag_cur%rowcount, 100) = 0 THEN
4985 commit;
4986 END IF;
4987
4988 END LOOP;
4989 commit;
4990
4991 END init_diag_temp;
4992
4993 FUNCTION check_contracts(
4994 p_instance_id IN number)
4995 RETURN BOOLEAN
4996 IS
4997 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
4998 l_msg_count number;
4999 l_msg_data varchar2(2000);
5000 l_contracts_tbl oks_entitlements_pub.output_tbl_ib;
5001 l_inp_rec oks_entitlements_pub.input_rec_ib;
5002 BEGIN
5003
5004 l_inp_rec.validate_flag := 'Y'; -- show all contracts
5005 l_inp_rec.product_id := p_instance_id;
5006 l_inp_rec.calc_resptime_flag := 'N';
5007
5008 oks_entitlements_pub.get_contracts(
5009 p_api_version => 1.0,
5010 p_init_msg_list => 'T',
5011 p_inp_rec => l_inp_rec,
5012 x_ent_contracts => l_contracts_tbl,
5013 x_return_status => l_return_status,
5014 x_msg_count => l_msg_count,
5015 x_msg_data => l_msg_data);
5016 --
5017 IF l_contracts_tbl.count > 0 THEN
5018 RETURN (TRUE);
5019 ELSE
5020 RETURN (FALSE);
5021 END IF;
5022
5023 END check_contracts;
5024
5025 PROCEDURE identify_progressed(
5026 x_progressed OUT nocopy boolean)
5027 IS
5028
5029 l_progressed boolean := FALSE;
5030 l_process_code varchar2(20);
5031 l_p_diag_seq_id number;
5032 l_p_mtl_txn_id number;
5033 l_p_mtl_creation_date date;
5034 l_p_csi_txn_id number;
5035 l_contracts_flag varchar2(1);
5036 l_earlier_txn_marked boolean := FALSE;
5037
5038 l_process_flag varchar2(1);
5039 l_current_date date;
5040
5041 CURSOR m_cur IS
5042 SELECT distinct mtl_creation_date, mtl_txn_id
5043 FROM csi_diagnostics_temp
5044 WHERE nvl(process_flag, 'N') = 'M'
5045 ORDER BY mtl_creation_date asc, mtl_txn_id asc;
5046
5047 CURSOR m_srl_cur(p_mtl_txn_id IN number) IS
5048 SELECT diag_seq_id,
5049 serial_number,
5050 inventory_item_id,
5051 instance_id,
5052 lot_control_code,
5053 process_flag
5054 FROM csi_diagnostics_temp
5055 WHERE mtl_txn_id = p_mtl_txn_id
5056 AND nvl(process_flag, 'N') <> 'M';
5057
5058 -- already marked earlier transactions
5059 CURSOR p_et_cur(
5060 p_serial_number IN varchar2,
5061 p_item_id IN number,
5062 p_mtl_creation_date IN date)
5063 IS
5064 SELECT diag_seq_id
5065 FROM csi_diagnostics_temp
5066 WHERE serial_number = p_serial_number
5067 AND inventory_item_id = p_item_id
5068 AND mtl_creation_date < p_mtl_creation_date
5069 AND nvl(process_flag,'N') = 'M';
5070
5071 -- progressed marked transactions
5072 CURSOR p_lt_cur(
5073 p_serial_number IN varchar2,
5074 p_item_id IN number,
5075 p_mtl_creation_date IN date)
5076 IS
5077 SELECT diag_seq_id
5078 FROM csi_diagnostics_temp
5082 AND nvl(process_flag,'N') = 'M'
5079 WHERE serial_number = p_serial_number
5080 AND inventory_item_id = p_item_id
5081 AND mtl_creation_date > p_mtl_creation_date
5083 ORDER by mtl_creation_date asc, mtl_txn_id asc;
5084
5085 CURSOR missing_csi_cur(
5086 p_serial_number IN varchar2,
5087 p_item_id IN number,
5088 p_mtl_creation_date IN date)
5089 IS
5090 SELECT diag_seq_id,
5091 mtl_txn_id,
5092 csi_txn_id,
5093 mtl_txn_date
5094 FROM csi_diagnostics_temp
5095 WHERE serial_number = p_serial_number
5096 AND inventory_item_id = p_item_id
5097 AND mtl_creation_date < p_mtl_creation_date
5098 ORDER BY mtl_creation_date desc, mtl_txn_id desc;
5099
5100 skip_txn exception;
5101 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
5102 l_msg_data varchar2(2000);
5103 l_msg_count number;
5104 l_txn_rec csi_datastructures_pub.transaction_rec;
5105
5106 BEGIN
5107
5108 FOR m_rec IN m_cur -- read all the distinct inv txn records that are marked for update
5109 LOOP
5110
5111 BEGIN
5112
5113 -- check if this txn is still there to be processed in the loop
5114 BEGIN
5115 SELECT process_code
5116 INTO l_process_code
5117 FROM csi_diagnostics_temp
5118 WHERE mtl_txn_id = m_rec.mtl_txn_id
5119 AND nvl(process_flag,'N') = 'M' -- marked for update
5120 AND rownum = 1;
5121 EXCEPTION
5122 WHEN no_data_found THEN
5123 RAISE skip_txn;
5124 END;
5125
5126 l_earlier_txn_marked := FALSE;
5127
5128 -- get all the serials that are in the txn that are not marked as 'M'
5129 FOR m_srl_rec IN m_srl_cur(m_rec.mtl_txn_id)
5130 LOOP
5131
5132 -- check if the earlier txn is marked for re-processing
5133 FOR p_et_rec in p_et_cur(
5134 p_serial_number => m_srl_rec.serial_number,
5135 p_item_id => m_srl_rec.inventory_item_id,
5136 p_mtl_creation_date => m_rec.mtl_creation_date)
5137 LOOP
5138 l_earlier_txn_marked := TRUE;
5139 exit;
5140 END LOOP;
5141 END LOOP;
5142
5143 IF l_earlier_txn_marked THEN
5144 --skip it for marking this batch
5145 FOR m_srl_rec IN m_srl_cur(m_rec.mtl_txn_id)
5146 LOOP
5147 IF nvl(m_srl_rec.process_flag, 'N') = 'X' THEN
5148 UPDATE csi_diagnostics_temp
5149 SET process_flag = 'N',
5150 temporary_message = 'updating for entanglement processing'
5151 WHERE diag_seq_id = m_srl_rec.diag_seq_id;
5152 END IF;
5153 END LOOP;
5154 RAISE skip_txn;
5155 END IF;
5156
5157 -- get all the other serials in this transaction to be marked for processing
5158 -- the same way as the current serial
5159 FOR m_srl_rec IN m_srl_cur(m_rec.mtl_txn_id)
5160 LOOP
5161
5162 UPDATE csi_diagnostics_temp
5163 SET process_code = l_process_code,
5164 process_flag = 'M',
5165 temporary_message = 'updating for entanglement processing'
5166 WHERE diag_seq_id = m_srl_rec.diag_seq_id;
5167
5168 -- for this serial check if there is any progressed transaction
5169 --
5170
5171 IF m_srl_rec.instance_id is not null THEN
5172
5173 -- get the max processed material transaction id
5174 SELECT nvl(min(diag_seq_id), -999999)
5175 INTO l_p_diag_seq_id
5176 FROM csi_diagnostics_temp
5177 WHERE serial_number = m_srl_rec.serial_number
5178 AND inventory_item_id = m_srl_rec.inventory_item_id
5179 AND mtl_creation_date > m_rec.mtl_creation_date
5180 AND csi_txn_id is not null;
5181
5182 IF l_p_diag_seq_id <> -999999 THEN
5183
5184 SELECT mtl_txn_id,
5185 mtl_creation_date
5186 INTO l_p_mtl_txn_id,
5187 l_p_mtl_creation_date
5188 FROM csi_diagnostics_temp
5189 WHERE diag_seq_id = l_p_diag_seq_id;
5190
5191 IF check_contracts(m_srl_rec.instance_id) THEN
5192 l_contracts_flag := 'Y';
5193 ELSE
5194 l_contracts_flag := 'N';
5195 END IF;
5196
5197 SELECT csi_txn_id
5198 INTO l_p_csi_txn_id
5199 FROM csi_diagnostics_temp
5200 WHERE serial_number = m_srl_rec.serial_number
5201 AND inventory_item_id = m_srl_rec.inventory_item_id
5202 AND mtl_txn_id = l_p_mtl_txn_id;
5203
5204 l_progressed := TRUE;
5205
5206 BEGIN
5207
5208 SELECT process_flag,
5209 date_time_stamp
5210 INTO l_process_flag,
5211 l_current_date
5215 IF l_process_flag = 'P' THEN
5212 FROM csi_ii_forward_sync_temp
5213 WHERE instance_id = m_srl_rec.instance_id;
5214
5216 Insert_Full_Dump(p_instance_id => m_srl_rec.instance_id);
5217 l_current_date := sysdate;
5218 ELSE
5219 l_current_date := l_current_date;
5220 END IF;
5221
5222 UPDATE csi_ii_forward_sync_temp
5223 SET date_time_stamp = l_current_date,
5224 mtl_txn_id = l_p_mtl_txn_id,
5225 mtl_txn_creation_date = l_p_mtl_creation_date,
5226 contracts_flag = l_contracts_flag,
5227 process_flag = 'N'
5228 WHERE instance_id = m_srl_rec.instance_id;
5229
5230 EXCEPTION
5231 WHEN no_data_found THEN
5232 Insert_Full_Dump(p_instance_id => m_srl_rec.instance_id);
5233 --
5234 INSERT INTO csi_ii_forward_sync_temp(
5235 instance_id,
5236 serial_number,
5237 inventory_item_id,
5238 lot_control_code,
5239 date_time_stamp,
5240 mtl_txn_id,
5241 mtl_txn_creation_date,
5242 csi_txn_id,
5243 contracts_flag,
5244 process_flag,
5245 error_message)
5246 VALUES(
5247 m_srl_rec.instance_id,
5248 m_srl_rec.serial_number,
5249 m_srl_rec.inventory_item_id,
5250 m_srl_rec.lot_control_code,
5251 sysdate,
5252 l_p_mtl_txn_id,
5253 l_p_mtl_creation_date,
5254 l_p_csi_txn_id,
5255 l_contracts_flag,
5256 'N',
5257 null);
5258 END;
5259 END IF;
5260 END IF;
5261
5262 -- get the progressed marked serial and unmark them
5263 FOR p_lt_rec IN p_lt_cur(
5264 p_serial_number => m_srl_rec.serial_number,
5265 p_item_id => m_srl_rec.inventory_item_id,
5266 p_mtl_creation_date => m_rec.mtl_creation_date)
5267 LOOP
5268
5269 UPDATE csi_diagnostics_temp
5270 SET process_flag = 'R',
5271 temporary_message = 'unmarking the serial to be processed after entanglement.'
5272 WHERE diag_seq_id = p_lt_rec.diag_seq_id;
5273
5274 END LOOP;
5275
5276 -- put the code here to create csi_transaction
5277 FOR missing_csi_rec IN missing_csi_cur(
5278 p_serial_number => m_srl_rec.serial_number,
5279 p_item_id => m_srl_rec.inventory_item_id,
5280 p_mtl_creation_date => m_rec.mtl_creation_date)
5281 LOOP
5282
5283 IF missing_csi_rec.csi_txn_id is not null THEN
5284 exit;
5285 END IF;
5286
5287 BEGIN
5288 SELECT transaction_id INTO l_txn_rec.transaction_id
5289 FROM csi_transactions
5290 WHERE inv_material_transaction_id = missing_csi_rec.mtl_txn_id;
5291 EXCEPTION
5292 WHEN no_data_found THEN
5293
5294 l_txn_rec.transaction_id := fnd_api.g_miss_num;
5295 l_txn_rec.transaction_type_id := correction_txn_type_id;
5296 l_txn_rec.source_header_ref := 'DATAFIX';
5297 l_txn_rec.source_line_ref := 'TXNPUMP FOR PROGRESSED';
5298 l_txn_rec.source_transaction_date := missing_csi_rec.mtl_txn_date;
5299 l_txn_rec.transaction_date := sysdate;
5300 l_txn_rec.inv_material_transaction_id := missing_csi_rec.mtl_txn_id;
5301
5302 csi_transactions_pvt.create_transaction (
5303 p_api_version => 1.0,
5304 p_commit => fnd_api.g_false,
5305 p_init_msg_list => fnd_api.g_true,
5306 p_validation_level => fnd_api.g_valid_level_full,
5307 p_success_if_exists_flag => 'Y',
5308 p_transaction_rec => l_txn_rec,
5309 x_return_status => l_return_status,
5310 x_msg_count => l_msg_count,
5311 x_msg_data => l_msg_data );
5312
5313 UPDATE csi_diagnostics_temp
5314 SET csi_txn_id = l_txn_rec.transaction_id,
5315 error_flag = 'P'
5316 WHERE diag_seq_id = missing_csi_rec.diag_seq_id;
5317
5318 WHEN too_many_rows THEN null;
5319 END;
5320
5321 END LOOP;
5322
5323 END LOOP;
5324
5325 EXCEPTION
5326 WHEN skip_txn THEN
5327 null;
5328 END;
5329 END LOOP;
5330 x_progressed := l_progressed;
5331 END identify_progressed;
5332
5333 PROCEDURE preprocess_srldata is
5334
5335 TYPE NumTabType is varray(10000) of number;
5339 l_item_id_tab NumTabType;
5336 TYPE VarTabType is varray(10000) of varchar2(80);
5337
5338 l_serial_number_tab VarTabType;
5340
5341 MAX_BUFFER_SIZE number := 1000;
5342
5343 CURSOR diag_srl_cur IS
5344 SELECT serial_number,
5345 inventory_item_id
5346 FROM csi_diagnostics_temp
5347 GROUP BY serial_number, inventory_item_id;
5348
5349 CURSOR diag_txn_cur(p_serial_number IN varchar2, p_item_id IN number) IS
5350 SELECT diag_seq_id,
5351 serial_number,
5352 inventory_item_id,
5353 organization_id,
5354 mtl_txn_id,
5355 mtl_txn_qty,
5356 mtl_creation_date,
5357 serial_control_code,
5358 lot_control_code,
5359 revision_control_code,
5360 csi_txn_id,
5361 instance_id,
5362 create_flag,
5363 source_type,
5364 error_flag ,
5365 mtl_item_revision
5366 FROM csi_diagnostics_temp
5367 WHERE serial_number = p_serial_number
5368 AND inventory_item_id = p_item_id
5369 ORDER by mtl_creation_date desc, mtl_txn_id desc;
5370
5371 l_freeze_date date;
5372
5373 l_diag_txn_tbl diag_txn_tbl;
5374 l_d_ind binary_integer := 0;
5375
5376 l_diag_txn_x_tbl diag_txn_tbl;
5377 l_dx_ind binary_integer := 0;
5378
5379 l_txn_success boolean;
5380 l_progressed boolean := FALSE;
5381 l_seq_value number;
5382
5383 BEGIN
5384
5385 init_diag_temp;
5386
5387 log(date_time_stamp||' begin preprocess_srldata');
5388
5389 OPEN diag_srl_cur;
5390 LOOP
5391
5392 FETCH diag_srl_cur BULK COLLECT
5393 INTO l_serial_number_tab,
5394 l_item_id_tab
5395 LIMIT MAX_BUFFER_SIZE;
5396
5397 FOR ind IN 1 .. l_serial_number_tab.COUNT
5398 LOOP
5399
5400 l_diag_txn_tbl.delete;
5401 l_diag_txn_x_tbl.delete;
5402
5403 l_d_ind := 0;
5404 l_dx_ind := 0;
5405
5406 l_txn_success := FALSE;
5407
5408 FOR diag_txn_rec IN diag_txn_cur(
5409 p_serial_number => l_serial_number_tab(ind),
5410 p_item_id => l_item_id_tab(ind))
5411 LOOP
5412
5413 IF diag_txn_rec.csi_txn_id IS not null THEN
5414 l_txn_success := TRUE;
5415 END IF;
5416
5417 IF NOT(l_txn_success) THEN
5418
5419 l_d_ind := l_d_ind + 1;
5420
5421 l_diag_txn_tbl(l_d_ind).diag_seq_id := diag_txn_rec.diag_seq_id;
5422 l_diag_txn_tbl(l_d_ind).serial_number := diag_txn_rec.serial_number;
5423 l_diag_txn_tbl(l_d_ind).item_id := diag_txn_rec.inventory_item_id;
5424 l_diag_txn_tbl(l_d_ind).organization_id := diag_txn_rec.organization_id;
5425 l_diag_txn_tbl(l_d_ind).mtl_txn_id := diag_txn_rec.mtl_txn_id;
5426 l_diag_txn_tbl(l_d_ind).mtl_txn_qty := diag_txn_rec.mtl_txn_qty;
5427 l_diag_txn_tbl(l_d_ind).mtl_creation_date := diag_txn_rec.mtl_creation_date;
5428 l_diag_txn_tbl(l_d_ind).serial_code := diag_txn_rec.serial_control_code;
5429 l_diag_txn_tbl(l_d_ind).lot_code := diag_txn_rec.lot_control_code;
5430 l_diag_txn_tbl(l_d_ind).revision_code := diag_txn_rec.revision_control_code;
5431 l_diag_txn_tbl(l_d_ind).inst_id := diag_txn_rec.instance_id;
5432 l_diag_txn_tbl(l_d_ind).create_flag := diag_txn_rec.create_flag;
5433 l_diag_txn_tbl(l_d_ind).source_type := diag_txn_rec.source_type;
5434 l_diag_txn_tbl(l_d_ind).error_flag := diag_txn_rec.error_flag;
5435 l_diag_txn_tbl(l_d_ind).marked_flag := 'N';
5436 l_diag_txn_tbl(l_d_ind).process_flag := 'N';
5437 l_diag_txn_tbl(l_d_ind).temp_message := null;
5438
5439 ELSE
5440
5441 l_dx_ind := l_dx_ind + 1;
5442
5443 l_diag_txn_x_tbl(l_dx_ind).diag_seq_id := diag_txn_rec.diag_seq_id;
5444 l_diag_txn_x_tbl(l_dx_ind).serial_number := diag_txn_rec.serial_number;
5445 l_diag_txn_x_tbl(l_dx_ind).item_id := diag_txn_rec.inventory_item_id;
5446 l_diag_txn_x_tbl(l_dx_ind).organization_id := diag_txn_rec.organization_id;
5447 l_diag_txn_x_tbl(l_dx_ind).mtl_txn_id := diag_txn_rec.mtl_txn_id;
5448 l_diag_txn_x_tbl(l_dx_ind).mtl_txn_qty := diag_txn_rec.mtl_txn_qty;
5449 l_diag_txn_x_tbl(l_dx_ind).mtl_creation_date := diag_txn_rec.mtl_creation_date;
5450 l_diag_txn_x_tbl(l_dx_ind).serial_code := diag_txn_rec.serial_control_code;
5451 l_diag_txn_x_tbl(l_dx_ind).lot_code := diag_txn_rec.lot_control_code;
5452 l_diag_txn_x_tbl(l_dx_ind).revision_code := diag_txn_rec.revision_control_code;
5453 l_diag_txn_x_tbl(l_dx_ind).inst_id := diag_txn_rec.instance_id;
5454 l_diag_txn_x_tbl(l_dx_ind).create_flag := diag_txn_rec.create_flag;
5455 l_diag_txn_x_tbl(l_dx_ind).source_type := diag_txn_rec.source_type;
5456 l_diag_txn_x_tbl(l_dx_ind).error_flag := diag_txn_rec.error_flag;
5457 l_diag_txn_x_tbl(l_dx_ind).marked_flag := 'N';
5458 l_diag_txn_x_tbl(l_dx_ind).process_flag := 'N';
5462 END LOOP;
5459 l_diag_txn_x_tbl(l_dx_ind).temp_message := null;
5460
5461 END IF;
5463
5464 log(' '||l_serial_number_tab(ind)||
5465 ' P Count:'||l_diag_txn_tbl.COUNT||
5466 ' X Count:'||l_diag_txn_x_tbl.COUNT);
5467
5468 IF l_diag_txn_tbl.COUNT > 0 THEN
5469 preprocess_all(
5470 p_diag_txn_tbl => l_diag_txn_tbl);
5471 END IF;
5472
5473 IF l_diag_txn_x_tbl.COUNT > 0 THEN
5474 knock_all(
5475 p_diag_txn_tbl => l_diag_txn_x_tbl);
5476 END IF;
5477
5478 IF mod(l_serial_number_tab.COUNT, 100) = 0 THEN
5479 commit;
5480 END IF;
5481
5482 END LOOP;
5483
5484 EXIT when diag_srl_cur%NOTFOUND;
5485
5486 END LOOP;
5487
5488 IF diag_srl_cur%ISOPEN THEN
5489 CLOSE diag_srl_cur;
5490 END IF;
5491
5492 commit;
5493
5494 identify_progressed(
5495 x_progressed => l_progressed);
5496
5497 IF l_progressed THEN
5498 SELECT csi_ii_forward_sync_temp_s.nextval
5499 INTO l_seq_value
5500 FROM sys.dual;
5501 END IF;
5502
5503 commit;
5504
5505 log(date_time_stamp||' end preprocess_srldata');
5506 END preprocess_srldata;
5507
5508 FUNCTION fill(
5509 p_column in varchar2,
5510 p_width in number,
5511 p_side in varchar2 default 'R')
5512 RETURN varchar2 IS
5513 l_column varchar2(2000);
5514 BEGIN
5515 l_column := nvl(p_column, ' ');
5516 IF p_side = 'L' THEN
5517 return(lpad(l_column, p_width, ' '));
5518 ELSIF p_side = 'R' THEN
5519 return(rpad(l_column, p_width, ' '));
5520 END IF;
5521 END fill;
5522
5523 --
5524 PROCEDURE report_header
5525 is
5526 l_header varchar2(4000);
5527 BEGIN
5528 l_header := fill('SerialNumber', 15)||
5529 fill('Item/Org(M/I/V)', 20)||
5530 fill('InstID', 10)||
5531 fill('InstLoc', 15)||
5532 fill('Usage', 15)||
5533 fill('ISubinv', 14)||
5534 fill('Pty/Acct', 10)||
5535 fill('M', 1);
5536
5537 out(l_header);
5538
5539 l_header := fill('------------', 15)||
5540 fill('---------------', 20)||
5541 fill('------', 10)||
5542 fill('-------', 15)||
5543 fill('-----', 15)||
5544 fill('-------', 14)||
5545 fill('--------', 10)||
5546 fill('-', 1);
5547
5548 out(l_header);
5549
5550 l_header := fill(' ', 2)||
5551 fill('TxnName', 22)||
5552 fill('TxnID', 9)||
5553 fill('TxnDate', 11)||
5554 fill('CsiTxnID', 9)||
5555 fill('Code', 8)||
5556 fill('P', 2);
5557
5558 out(l_header);
5559
5560 l_header := fill(' ', 2)||
5561 fill('-------', 22)||
5562 fill('-----', 9)||
5563 fill('-------', 13)||
5564 fill('--------', 9)||
5565 fill('----', 8)||
5566 fill('-', 2);
5567
5568 out(l_header);
5569
5570 END report_header;
5571
5572 PROCEDURE report_body(
5573 p_rec in csi_diagnostics_temp%rowtype,
5574 px_serial_number in out nocopy varchar2,
5575 px_item_id in out nocopy number)
5576 is
5577 l_mtl_txn_date date;
5578 l_srl_data varchar2(4000);
5579 l_txn_data varchar2(4000);
5580 BEGIN
5581
5582 IF (p_rec.serial_number <> px_serial_number
5583 OR
5584 p_rec.inventory_item_id <> px_item_id)
5585 THEN
5586
5587 out(' ');
5588
5589 -- print header;
5590 l_srl_data := fill(p_rec.serial_number, 15)||
5591 fill(to_char(p_rec.inventory_item_id)||'/'||
5592 to_char(p_rec.organization_id)||'/'||
5593 nvl(to_char(p_rec.instance_organization_id), ' ')||'/'||
5594 nvl(to_char(p_rec.instance_vld_organization_id), ' '), 20)||
5595 fill(p_rec.instance_id, 10)||
5596 fill(p_rec.instance_location, 15)||
5597 fill(p_rec.instance_usage_code, 15)||
5598 fill(p_rec.instance_subinv_name, 14)||
5599 fill(nvl(to_char(p_rec.instance_owner_party_id), ' ')||'/'||
5600 nvl(to_char(p_rec.instance_owner_account_id), ' '), 10)||
5601 fill(nvl(p_rec.instance_mig_flag,'N'), 1);
5602
5603 out(l_srl_data);
5604
5605 END IF;
5606
5607 l_txn_data := fill(' ', 2)||
5608 fill(p_rec.mtl_txn_name, 22)||
5609 fill(p_rec.mtl_txn_id, 9)||
5610 fill(to_char(p_rec.mtl_txn_date, 'ddmmyyhh24miss'), 13)||
5611 fill(p_rec.csi_txn_id, 9)||
5612 fill(p_rec.process_code, 8)||
5613 fill(p_rec.process_flag, 2);
5614
5615 out(l_txn_data);
5616
5617 IF p_rec.error_flag = 'E' THEN
5621 IF p_rec.process_flag = 'E' THEN
5618 out(' '||rtrim(fill(p_rec.error_text, 96)));
5619 END IF;
5620
5622 out(' '||rtrim(fill(p_rec.temporary_message, 96)));
5623 END IF;
5624
5625 px_serial_number := p_rec.serial_number;
5626 px_item_id := p_rec.inventory_item_id;
5627
5628 END report_body;
5629
5630 PROCEDURE spool_srldata(p_mode in varchar2 default 'ALL' ) is
5631
5632 CURSOR dump_all_cur is
5633 SELECT *
5634 FROM csi_diagnostics_temp
5635 ORDER BY serial_number, inventory_item_id, mtl_creation_date desc, mtl_txn_id desc;
5636
5637 CURSOR dump_fixable_cur is
5638 SELECT * FROM csi_diagnostics_temp A
5639 WHERE exists (
5640 SELECT 'X' FROM csi_diagnostics_temp B
5641 WHERE B.serial_number = A.serial_number
5642 AND B.inventory_item_id = A.inventory_item_id
5643 AND B.process_flag in ('M', 'X', 'R'))
5644 ORDER BY A.serial_number, a.inventory_item_id, a.mtl_creation_date desc, a.mtl_txn_id desc;
5645
5646 CURSOR dump_nonfixable_cur is
5647 SELECT * FROM csi_diagnostics_temp A
5648 WHERE not exists (
5649 SELECT 'X' FROM csi_diagnostics_temp B
5650 WHERE B.serial_number = A.serial_number
5651 AND B.inventory_item_id = A.inventory_item_id
5652 AND B.process_flag in ('M', 'X', 'R'))
5653 ORDER BY A.serial_number, a.inventory_item_id, a.mtl_creation_date desc, a.mtl_txn_id desc;
5654
5655 CURSOR dump_errors_cur is
5656 SELECT * FROM csi_diagnostics_temp A
5657 WHERE exists (
5658 SELECT 'X' FROM csi_diagnostics_temp B
5659 WHERE B.serial_number = A.serial_number
5660 AND B.inventory_item_id = A.inventory_item_id
5661 AND B.process_flag = 'E')
5662 ORDER BY A.serial_number, a.inventory_item_id, a.mtl_creation_date desc, a.mtl_txn_id desc;
5663
5664 l_old_serial varchar2(80) := '##**$$**##';
5665 l_old_item_id number := -.9999999999;
5666
5667 BEGIN
5668
5669 IF p_mode = 'ALL' THEN
5670
5671 csi_t_gen_utility_pvt.build_file_name(
5672 p_file_segment1 => 'csisrl',
5673 p_file_segment2 => to_char(sysdate, 'hh24miss'));
5674
5675 out(' *****************************************************************************');
5676 out(' Serialized error correction - breakup report ');
5677 out(' *****************************************************************************');
5678
5679 report_header;
5680
5681 FOR dump_rec in dump_all_cur
5682 LOOP
5683 report_body (
5684 p_rec => dump_rec,
5685 px_serial_number => l_old_serial,
5686 px_item_id => l_old_item_id);
5687 END LOOP;
5688
5689 ELSIF p_mode = 'FIXABLE' THEN
5690
5691 csi_t_gen_utility_pvt.build_file_name(
5692 p_file_segment1 => 'csisrlfix',
5693 p_file_segment2 => to_char(sysdate, 'hh24miss'));
5694
5695 report_header;
5696
5697 FOR dump_rec in dump_fixable_cur
5698 LOOP
5699 report_body (
5700 p_rec => dump_rec,
5701 px_serial_number => l_old_serial,
5702 px_item_id => l_old_item_id);
5703 END LOOP;
5704
5705 ELSIF p_mode = 'NONFIXABLE' THEN
5706
5707 csi_t_gen_utility_pvt.build_file_name(
5708 p_file_segment1 => 'csisrlnofix',
5709 p_file_segment2 => to_char(sysdate, 'hh24miss'));
5710
5711 report_header;
5712
5713 FOR dump_rec in dump_nonfixable_cur
5714 LOOP
5715 report_body (
5716 p_rec => dump_rec,
5717 px_serial_number => l_old_serial,
5718 px_item_id => l_old_item_id);
5719 END LOOP;
5720
5721 ELSIF p_mode = 'ERRORS' THEN
5722
5723 csi_t_gen_utility_pvt.build_file_name(
5724 p_file_segment1 => 'csisrlerr',
5725 p_file_segment2 => to_char(sysdate, 'hh24miss'));
5726
5727 out(' *****************************************************************************');
5728 out(' Errors reported in serialized error correction ');
5729 out(' *****************************************************************************');
5730
5731 report_header;
5732
5733 FOR dump_rec in dump_errors_cur
5734 LOOP
5735 report_body (
5736 p_rec => dump_rec,
5737 px_serial_number => l_old_serial,
5738 px_item_id => l_old_item_id);
5739 END LOOP;
5740
5741
5742 END IF;
5743
5744 END spool_srldata;
5745
5746 PROCEDURE dump_diff(
5747 p_instance_rec in csi_datastructures_pub.instance_rec)
5748 IS
5749
5750 l_vld_organization_id number;
5751 l_inv_organization_id number;
5752 l_inv_subinventory_name varchar2(30);
5753 l_inventory_revision varchar2(8);
5754 l_inv_locator_id number;
5755 l_location_type_code varchar(30);
5756 l_instance_usage_code varchar(30);
5757 l_location_id number;
5758
5759 BEGIN
5760 SELECT last_vld_organization_id,
5764 inv_locator_id,
5761 inv_organization_id,
5762 inv_subinventory_name,
5763 inventory_revision,
5765 location_type_code,
5766 instance_usage_code,
5767 location_id
5768 INTO l_vld_organization_id,
5769 l_inv_organization_id,
5770 l_inv_subinventory_name,
5771 l_inventory_revision,
5772 l_inv_locator_id,
5773 l_location_type_code,
5774 l_instance_usage_code,
5775 l_location_id
5776 FROM csi_item_instances
5777 WHERE instance_id = p_instance_rec.instance_id;
5778
5779 out(' Instance: '||
5780 fill(l_location_type_code, 15)||
5781 fill(to_char(l_location_id), 6)||
5782 fill(l_instance_usage_code, 15)||
5783 fill(to_char(l_vld_organization_id),5)||
5784 fill(to_char(l_inv_organization_id),5)||
5785 fill(l_inv_subinventory_name,15)||
5786 fill(l_inventory_revision,5)||
5787 fill(to_char(l_inv_locator_id), 6));
5788
5789 out(' Serial : '||
5790 fill(p_instance_rec.location_type_code, 15)||
5791 fill(to_char(p_instance_rec.location_id), 6)||
5792 fill(p_instance_rec.instance_usage_code, 15)||
5793 fill(to_char(p_instance_rec.vld_organization_id),5)||
5794 fill(to_char(p_instance_rec.inv_organization_id),5)||
5795 fill(p_instance_rec.inv_subinventory_name,15)||
5796 fill(p_instance_rec.inventory_revision,5)||
5797 fill(to_char(p_instance_rec.inv_locator_id), 6));
5798
5799 END dump_diff;
5800
5801 FUNCTION not_the_same(
5802 p_instance_rec in csi_datastructures_pub.instance_rec)
5803 RETURN boolean
5804 IS
5805
5806 l_not_the_same boolean := TRUE;
5807
5808 l_vld_organization_id number;
5809 l_inv_organization_id number;
5810 l_inv_subinventory_name varchar2(30);
5811 l_inventory_revision varchar2(8);
5812 l_inv_locator_id number;
5813 l_location_type_code varchar(30);
5814 l_instance_usage_code varchar(30);
5815 l_lot_number varchar2(80);
5816 l_location_id number;
5817
5818 l_pa_project_id number;
5819 l_pa_project_task_id number;
5820 l_accounting_class_code varchar2(30);
5821
5822 l_wip_job_id number;
5823
5824 l_in_transit_order_line_id number;
5825
5826 BEGIN
5827
5828 SELECT last_vld_organization_id,
5829 inv_organization_id,
5830 inv_subinventory_name,
5831 inventory_revision,
5832 inv_locator_id,
5833 location_type_code,
5834 instance_usage_code,
5835 location_id,
5836 lot_number,
5837 pa_project_id,
5838 pa_project_task_id,
5839 accounting_class_code,
5840 wip_job_id,
5841 in_transit_order_line_id
5842 INTO l_vld_organization_id,
5843 l_inv_organization_id,
5844 l_inv_subinventory_name,
5845 l_inventory_revision,
5846 l_inv_locator_id,
5847 l_location_type_code,
5848 l_instance_usage_code,
5849 l_location_id,
5850 l_lot_number,
5851 l_pa_project_id,
5852 l_pa_project_task_id,
5853 l_accounting_class_code,
5854 l_wip_job_id,
5855 l_in_transit_order_line_id
5856 FROM csi_item_instances
5857 WHERE instance_id = p_instance_rec.instance_id;
5858
5859 IF p_instance_rec.location_type_code = 'INVENTORY' THEN
5860
5861 IF (nvl(p_instance_rec.vld_organization_id, fnd_api.g_miss_num) =
5862 nvl(l_vld_organization_id, fnd_api.g_miss_num))
5863 AND
5864 (nvl(p_instance_rec.inv_organization_id,fnd_api.g_miss_num) =
5865 nvl(l_inv_organization_id, fnd_api.g_miss_num))
5866 AND
5867 (nvl(p_instance_rec.inv_subinventory_name, fnd_api.g_miss_char) =
5868 nvl(l_inv_subinventory_name, fnd_api.g_miss_char))
5869 AND
5870 (nvl(p_instance_rec.inventory_revision, fnd_api.g_miss_char) =
5871 nvl(l_inventory_revision, fnd_api.g_miss_char))
5872 AND
5873 (nvl(p_instance_rec.inv_locator_id, fnd_api.g_miss_num) =
5874 nvl(l_inv_locator_id, fnd_api.g_miss_num))
5875 AND
5876 (nvl(p_instance_rec.location_type_code, fnd_api.g_miss_char) =
5877 nvl(l_location_type_code, fnd_api.g_miss_char))
5878 AND
5879 (nvl(p_instance_rec.location_id, fnd_api.g_miss_num) =
5880 nvl(l_location_id, fnd_api.g_miss_num))
5881 AND
5882 (nvl(p_instance_rec.instance_usage_code, fnd_api.g_miss_char) =
5883 nvl(l_instance_usage_code, fnd_api.g_miss_char))
5884 AND
5885 (nvl(p_instance_rec.lot_number, fnd_api.g_miss_char) =
5886 nvl(l_lot_number, fnd_api.g_miss_char))
5887 THEN
5888 l_not_the_same := FALSE;
5889 END IF;
5890
5891 ELSIF p_instance_rec.location_type_code = 'PROJECT' THEN
5892
5893 IF (nvl(p_instance_rec.accounting_class_code, fnd_api.g_miss_char) =
5894 nvl(l_accounting_class_code, fnd_api.g_miss_char))
5898 AND
5895 AND
5896 (nvl(p_instance_rec.location_type_code, fnd_api.g_miss_char) =
5897 nvl(l_location_type_code, fnd_api.g_miss_char))
5899 (nvl(p_instance_rec.location_id, fnd_api.g_miss_num) =
5900 nvl(l_location_id, fnd_api.g_miss_num))
5901 AND
5902 (nvl(p_instance_rec.pa_project_id, fnd_api.g_miss_num) =
5903 nvl(l_pa_project_id, fnd_api.g_miss_num))
5904 AND
5905 (nvl(p_instance_rec.pa_project_task_id, fnd_api.g_miss_num) =
5906 nvl(l_pa_project_task_id, fnd_api.g_miss_num))
5907 AND
5908 (nvl(p_instance_rec.instance_usage_code, fnd_api.g_miss_char) =
5909 nvl(l_instance_usage_code, fnd_api.g_miss_char))
5910 THEN
5911 l_not_the_same := FALSE;
5912 END IF;
5913
5914 ELSIF p_instance_rec.location_type_code = 'WIP' THEN
5915
5916 IF (nvl(p_instance_rec.location_type_code, fnd_api.g_miss_char) =
5917 nvl(l_location_type_code, fnd_api.g_miss_char))
5918 AND
5919 (nvl(p_instance_rec.location_id, fnd_api.g_miss_num) =
5920 nvl(l_location_id, fnd_api.g_miss_num))
5921 AND
5922 (nvl(p_instance_rec.instance_usage_code, fnd_api.g_miss_char) =
5923 nvl(l_instance_usage_code, fnd_api.g_miss_char))
5924 AND
5925 (nvl(p_instance_rec.lot_number, fnd_api.g_miss_char) =
5926 nvl(l_lot_number, fnd_api.g_miss_char))
5927 AND
5928 (nvl(p_instance_rec.inv_organization_id, fnd_api.g_miss_num) =
5929 nvl(l_inv_organization_id, fnd_api.g_miss_num))
5930 AND
5931 (nvl(p_instance_rec.inv_subinventory_name, fnd_api.g_miss_char) =
5932 nvl(l_inv_subinventory_name, fnd_api.g_miss_char))
5933 AND
5934 (nvl(p_instance_rec.inventory_revision, fnd_api.g_miss_char) =
5935 nvl(l_inventory_revision, fnd_api.g_miss_char))
5936 AND
5937 (nvl(p_instance_rec.inv_locator_id, fnd_api.g_miss_num) =
5938 nvl(l_inv_locator_id, fnd_api.g_miss_num))
5939 AND
5940 (nvl(p_instance_rec.wip_job_id, fnd_api.g_miss_num) =
5941 nvl(l_wip_job_id, fnd_api.g_miss_num))
5942 THEN
5943 l_not_the_same := FALSE;
5944 END IF;
5945
5946 ELSIF p_instance_rec.location_type_code = 'IN_TRANSIT' THEN
5947
5948 IF (nvl(p_instance_rec.location_type_code, fnd_api.g_miss_char) =
5949 nvl(l_location_type_code, fnd_api.g_miss_char))
5950 AND
5951 (nvl(p_instance_rec.location_id, fnd_api.g_miss_num) =
5952 nvl(l_location_id, fnd_api.g_miss_num))
5953 AND
5954 (nvl(p_instance_rec.instance_usage_code, fnd_api.g_miss_char) =
5955 nvl(l_instance_usage_code, fnd_api.g_miss_char))
5956 AND
5957 (nvl(p_instance_rec.lot_number, fnd_api.g_miss_char) =
5958 nvl(l_lot_number, fnd_api.g_miss_char))
5959 AND
5960 (nvl(p_instance_rec.inv_organization_id, fnd_api.g_miss_num) =
5961 nvl(l_inv_organization_id, fnd_api.g_miss_num))
5962 AND
5963 (nvl(p_instance_rec.inv_subinventory_name, fnd_api.g_miss_char) =
5964 nvl(l_inv_subinventory_name, fnd_api.g_miss_char))
5965 AND
5966 (nvl(p_instance_rec.inventory_revision, fnd_api.g_miss_char) =
5967 nvl(l_inventory_revision, fnd_api.g_miss_char))
5968 AND
5969 (nvl(p_instance_rec.inv_locator_id, fnd_api.g_miss_num) =
5970 nvl(l_inv_locator_id, fnd_api.g_miss_num))
5971 AND
5972 (nvl(p_instance_rec.in_transit_order_line_id, fnd_api.g_miss_num) =
5973 nvl(l_in_transit_order_line_id, fnd_api.g_miss_num))
5974 THEN
5975 l_not_the_same := FALSE;
5976 END IF;
5977
5978 END IF;
5979
5980 return l_not_the_same;
5981
5982 END not_the_same;
5983
5984 PROCEDURE init_plsql_tables(
5985 px_instance_rec in out nocopy csi_datastructures_pub.instance_rec,
5986 px_parties_tbl in out nocopy csi_datastructures_pub.party_tbl,
5987 px_pty_accts_tbl in out nocopy csi_datastructures_pub.party_account_tbl,
5988 px_org_units_tbl in out nocopy csi_datastructures_pub.organization_units_tbl,
5989 px_ea_values_tbl in out nocopy csi_datastructures_pub.extend_attrib_values_tbl,
5990 px_pricing_tbl in out nocopy csi_datastructures_pub.pricing_attribs_tbl,
5991 px_assets_tbl in out nocopy csi_datastructures_pub.instance_asset_tbl)
5992 is
5993 l_instance_rec csi_datastructures_pub.instance_rec;
5994
5995 BEGIN
5996 px_instance_rec := l_instance_rec;
5997 px_parties_tbl.delete;
5998 px_pty_accts_tbl.delete;
5999 px_org_units_tbl.delete;
6000 px_ea_values_tbl.delete;
6001 px_pricing_tbl.delete;
6002 px_assets_tbl.delete;
6003 END init_plsql_tables;
6004
6005 PROCEDURE knock_the_rest IS
6006 CURSOR knock_cur is
6007 SELECT mtl_txn_id,
6008 mtl_src_type_id,
6009 mtl_txn_date
6010 FROM csi_diagnostics_temp
6011 WHERE process_flag = 'X';
6012
6013 l_txn_rec csi_datastructures_pub.transaction_rec;
6014 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
6015 l_msg_count number;
6016 l_msg_data varchar2(2000);
6017
6021 UPDATE csi_txn_errors
6018 BEGIN
6019 FOR knock_rec in knock_cur
6020 LOOP
6022 SET processed_flag = 'D',
6023 error_text = 'A future transaction is processed. So not processing this.',
6024 last_update_date = sysdate,
6025 last_update_login = fnd_global.login_id,
6026 last_updated_by = fnd_global.user_id
6027 WHERE inv_material_transaction_id = knock_rec.mtl_txn_id
6028 AND processed_flag in ('E', 'R');
6029
6030 BEGIN
6031 SELECT transaction_id INTO l_txn_rec.transaction_id
6032 FROM csi_transactions
6033 WHERE inv_material_transaction_id = knock_rec.mtl_txn_id;
6034 EXCEPTION
6035 WHEN no_data_found THEN
6036
6037 l_txn_rec.transaction_id := fnd_api.g_miss_num;
6038 l_txn_rec.transaction_type_id := correction_txn_type_id;
6039 l_txn_rec.source_header_ref := 'DATAFIX';
6040 l_txn_rec.source_line_ref := 'FUTURE TXN IS PROCESSED';
6041 l_txn_rec.source_transaction_date := knock_rec.mtl_txn_date;
6042 l_txn_rec.transaction_date := sysdate;
6043 l_txn_rec.inv_material_transaction_id := knock_rec.mtl_txn_id;
6044
6045 csi_transactions_pvt.create_transaction (
6046 p_api_version => 1.0,
6047 p_commit => fnd_api.g_false,
6048 p_init_msg_list => fnd_api.g_true,
6049 p_validation_level => fnd_api.g_valid_level_full,
6050 p_success_if_exists_flag => 'Y',
6051 p_transaction_rec => l_txn_rec,
6052 x_return_status => l_return_status,
6053 x_msg_count => l_msg_count,
6054 x_msg_data => l_msg_data);
6055
6056 WHEN too_many_rows THEN
6057 null;
6058 END;
6059
6060 END LOOP;
6061 END knock_the_rest;
6062
6063 PROCEDURE create_instance(
6064 p_txn_rec IN csi_datastructures_pub.transaction_rec,
6065 p_instance_rec IN csi_datastructures_pub.instance_rec,
6066 p_parties_tbl IN csi_datastructures_pub.party_tbl,
6067 p_pty_accts_tbl IN csi_datastructures_pub.party_account_tbl,
6068 x_return_status OUT nocopy varchar2,
6069 x_error_message OUT nocopy varchar2)
6070 IS
6071
6072 l_instance_rec csi_datastructures_pub.instance_rec;
6073 l_parties_tbl csi_datastructures_pub.party_tbl;
6074 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
6075 l_org_units_tbl csi_datastructures_pub.organization_units_tbl;
6076 l_ea_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
6077 l_pricing_tbl csi_datastructures_pub.pricing_attribs_tbl;
6078 l_assets_tbl csi_datastructures_pub.instance_asset_tbl;
6079 l_instance_ids_list csi_datastructures_pub.id_tbl;
6080 l_txn_rec csi_datastructures_pub.transaction_rec;
6081
6082 l_error_message varchar2(2000);
6083 l_msg_data varchar2(2000);
6084 l_msg_count number;
6085 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
6086
6087 BEGIN
6088
6089 x_return_status := fnd_api.g_ret_sts_success;
6090
6091 l_txn_rec := p_txn_rec;
6092 l_instance_rec := p_instance_rec;
6093 l_parties_tbl := p_parties_tbl;
6094 l_pty_accts_tbl := p_pty_accts_tbl;
6095
6096 savepoint create_instance;
6097
6098 csi_transactions_pvt.create_transaction (
6099 p_api_version => 1.0,
6100 p_commit => fnd_api.g_false,
6101 p_init_msg_list => fnd_api.g_true,
6102 p_validation_level => fnd_api.g_valid_level_full,
6103 p_success_if_exists_flag => 'Y',
6104 p_transaction_rec => l_txn_rec,
6105 x_return_status => l_return_status,
6106 x_msg_count => l_msg_count,
6107 x_msg_data => l_msg_data );
6108
6109 IF l_return_status <> fnd_api.g_ret_sts_success THEN
6110 raise fnd_api.g_exc_error;
6111 END IF;
6112
6113 l_instance_rec.mfg_serial_number_flag := 'Y';
6114
6115 IF l_instance_rec.location_type_code = 'INVENTORY'
6116 AND
6117 l_instance_rec.instance_usage_code = 'IN_INVENTORY'
6118 THEN
6119 SELECT nvl(mssi.location_id, haou.location_id)
6120 INTO l_instance_rec.location_id
6121 FROM mtl_secondary_inventories mssi,
6122 hr_all_organization_units haou
6123 WHERE mssi.organization_id = l_instance_rec.inv_organization_id
6124 AND mssi.secondary_inventory_name = l_instance_rec.inv_subinventory_name
6125 AND haou.organization_id = mssi.organization_id;
6126 ELSIF l_instance_rec.location_type_code = 'WIP' THEN
6127 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
6128 csi_gen_utility_pvt.populate_install_param_rec;
6129 END IF;
6130 --
6131 l_instance_rec.location_id := csi_datastructures_pub.g_install_param_rec.wip_location_id;
6132 END IF;
6133
6134 SELECT primary_uom_code
6135 INTO l_instance_rec.unit_of_measure
6136 FROM mtl_system_items
6137 WHERE inventory_item_id = l_instance_rec.inventory_item_id
6141 p_api_version => 1.0,
6138 AND organization_id = l_instance_rec.vld_organization_id;
6139
6140 csi_item_instance_pub.create_item_instance(
6142 p_commit => fnd_api.g_false,
6143 p_init_msg_list => fnd_api.g_true,
6144 p_validation_level => fnd_api.g_valid_level_full,
6145 p_instance_rec => l_instance_rec,
6146 p_party_tbl => l_parties_tbl,
6147 p_account_tbl => l_pty_accts_tbl,
6148 p_org_assignments_tbl => l_org_units_tbl,
6149 p_ext_attrib_values_tbl => l_ea_values_tbl,
6150 p_pricing_attrib_tbl => l_pricing_tbl,
6151 p_asset_assignment_tbl => l_assets_tbl,
6152 p_txn_rec => l_txn_rec,
6153 x_return_status => l_return_status,
6154 x_msg_count => l_msg_count,
6155 x_msg_data => l_msg_data );
6156
6157 l_msg_data := csi_t_gen_utility_pvt.dump_error_stack;
6158 log(' create status :'||l_return_status||' '||l_msg_data);
6159
6160 -- For Bug 4057183
6161 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
6162 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
6163 raise fnd_api.g_exc_error;
6164 END IF;
6165
6166 IF nvl(l_txn_rec.transaction_id, fnd_api.g_miss_num) <> fnd_api.g_miss_num THEN
6167 UPDATE csi_transactions
6168 SET inv_material_transaction_id = null
6169 WHERE transaction_id = l_txn_rec.transaction_id;
6170 END IF;
6171
6172 commit;
6173
6174 EXCEPTION
6175 WHEN fnd_api.g_exc_error THEN
6176 rollback to create_instance;
6177 x_return_status := fnd_api.g_ret_sts_error;
6178 x_error_message := csi_t_gen_utility_pvt.dump_error_stack;
6179 END create_instance;
6180
6181 PROCEDURE update_instance(
6182 p_txn_rec IN csi_datastructures_pub.transaction_rec,
6183 p_instance_rec IN csi_datastructures_pub.instance_rec,
6184 p_parties_tbl IN csi_datastructures_pub.party_tbl,
6185 p_pty_accts_tbl IN csi_datastructures_pub.party_account_tbl,
6186 x_return_status OUT nocopy varchar2,
6187 x_error_message OUT nocopy varchar2)
6188 IS
6189
6190 l_not_the_same boolean := TRUE;
6191
6192 l_instance_rec csi_datastructures_pub.instance_rec;
6193 l_parties_tbl csi_datastructures_pub.party_tbl;
6194 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
6195 l_org_units_tbl csi_datastructures_pub.organization_units_tbl;
6196 l_ea_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
6197 l_pricing_tbl csi_datastructures_pub.pricing_attribs_tbl;
6198 l_assets_tbl csi_datastructures_pub.instance_asset_tbl;
6199 l_instance_ids_list csi_datastructures_pub.id_tbl;
6200 l_txn_rec csi_datastructures_pub.transaction_rec;
6201
6202 l_error_message varchar2(2000);
6203 l_msg_data varchar2(2000);
6204 l_msg_count number;
6205 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
6206
6207 BEGIN
6208
6209 x_return_status := fnd_api.g_ret_sts_success;
6210
6211 l_txn_rec := p_txn_rec;
6212 l_instance_rec := p_instance_rec;
6213 l_parties_tbl := p_parties_tbl;
6214 l_pty_accts_tbl := p_pty_accts_tbl;
6215
6216 IF l_instance_rec.location_type_code = 'INVENTORY'
6217 AND
6218 l_instance_rec.instance_usage_code = 'IN_INVENTORY'
6219 THEN
6220
6221 SELECT nvl(mssi.location_id, haou.location_id)
6222 INTO l_instance_rec.location_id
6223 FROM mtl_secondary_inventories mssi,
6224 hr_all_organization_units haou
6225 WHERE mssi.organization_id = l_instance_rec.inv_organization_id
6226 AND mssi.secondary_inventory_name = l_instance_rec.inv_subinventory_name
6227 AND haou.organization_id = mssi.organization_id;
6228
6229 END IF;
6230
6231 IF l_instance_rec.location_type_code = 'WIP' THEN
6232 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
6233 csi_gen_utility_pvt.populate_install_param_rec;
6234 END IF;
6235 --
6236 l_instance_rec.location_id := csi_datastructures_pub.g_install_param_rec.wip_location_id;
6237 END IF;
6238
6239 savepoint update_instance;
6240
6241 l_not_the_same := not_the_same(l_instance_rec);
6242
6243 IF l_not_the_same THEN
6244
6245 log(' not the same');
6246
6247 csi_transactions_pvt.create_transaction (
6248 p_api_version => 1.0,
6249 p_commit => fnd_api.g_false,
6250 p_init_msg_list => fnd_api.g_true,
6251 p_validation_level => fnd_api.g_valid_level_full,
6252 p_success_if_exists_flag => 'Y',
6253 p_transaction_rec => l_txn_rec,
6254 x_return_status => l_return_status,
6255 x_msg_count => l_msg_count,
6256 x_msg_data => l_msg_data );
6257
6258 IF l_return_status <> fnd_api.g_ret_sts_success THEN
6259 raise fnd_api.g_exc_error;
6260 END IF;
6261
6262 UPDATE csi_item_instances
6263 SET last_vld_organization_id = l_instance_rec.vld_organization_id,
6267 csi_process_txn_pvt.check_and_break_relation(
6264 active_end_date = null
6265 WHERE instance_id = l_instance_rec.instance_id;
6266
6268 p_instance_id => l_instance_rec.instance_id,
6269 p_csi_txn_rec => l_txn_rec,
6270 x_return_status => l_return_status);
6271
6272 IF l_return_status <> fnd_api.g_ret_sts_success THEN
6273 raise fnd_api.g_exc_error;
6274 END IF;
6275
6276 IF nvl(l_instance_rec.active_end_date, fnd_api.g_miss_date) <> fnd_api.g_miss_date THEN
6277 l_parties_tbl.delete;
6278 l_pty_accts_tbl.delete;
6279 END IF;
6280
6281 IF l_parties_tbl.count > 0 THEN
6282 FOR lp_ind in l_parties_tbl.FIRST .. l_parties_tbl.LAST
6283 LOOP
6284 SELECT instance_party_id,
6285 object_version_number
6286 INTO l_parties_tbl(lp_ind).instance_party_id,
6287 l_parties_tbl(lp_ind).object_version_number
6288 FROM csi_i_parties
6289 WHERE instance_id = l_instance_rec.instance_id
6290 AND relationship_type_code = l_parties_tbl(lp_ind).relationship_type_code
6291 AND rownum = 1;
6292 END LOOP;
6293 END IF;
6294
6295 SELECT object_version_number
6296 INTO l_instance_rec.object_version_number
6297 FROM csi_item_instances
6298 WHERE instance_id = l_instance_rec.instance_id;
6299
6300 csi_item_instance_pub.update_item_instance(
6301 p_api_version => 1.0,
6302 p_commit => fnd_api.g_false,
6303 p_init_msg_list => fnd_api.g_true,
6304 p_validation_level => fnd_api.g_valid_level_full,
6305 p_instance_rec => l_instance_rec,
6306 p_party_tbl => l_parties_tbl,
6307 p_account_tbl => l_pty_accts_tbl,
6308 p_org_assignments_tbl => l_org_units_tbl,
6309 p_ext_attrib_values_tbl => l_ea_values_tbl,
6310 p_pricing_attrib_tbl => l_pricing_tbl,
6311 p_asset_assignment_tbl => l_assets_tbl,
6312 p_txn_rec => l_txn_rec,
6313 x_instance_id_lst => l_instance_ids_list,
6314 x_return_status => l_return_status,
6315 x_msg_count => l_msg_count,
6316 x_msg_data => l_msg_data);
6317
6318 l_msg_data := csi_t_gen_utility_pvt.dump_error_stack;
6319 log(' update status :'||l_return_status||' '||l_msg_data);
6320
6321 -- For Bug 4057183
6322 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
6323 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
6324 raise fnd_api.g_exc_error;
6325 END IF;
6326
6327 IF nvl(l_txn_rec.transaction_id, fnd_api.g_miss_num) <> fnd_api.g_miss_num THEN
6328 UPDATE csi_transactions
6329 SET inv_material_transaction_id = null
6330 WHERE transaction_id = l_txn_rec.transaction_id;
6331 END IF;
6332
6333 ELSE
6334 log(' the same');
6335 IF nvl(l_instance_rec.active_end_date, fnd_api.g_miss_date) <> fnd_api.g_miss_date THEN
6336 UPDATE csi_item_instances
6337 SET active_end_date = l_instance_rec.active_end_date
6338 WHERE instance_id = l_instance_rec.instance_id;
6339 END IF;
6340
6341 IF nvl(l_instance_rec.active_end_date, fnd_api.g_miss_date) = fnd_api.g_miss_date THEN
6342 UPDATE csi_item_instances
6343 SET active_end_date = null
6344 WHERE instance_id = l_instance_rec.instance_id;
6345 END IF;
6346 END IF;
6347
6348 commit;
6349
6350 EXCEPTION
6351 WHEN fnd_api.g_exc_error THEN
6352 rollback to update_instance;
6353 x_return_status := fnd_api.g_ret_sts_error;
6354 x_error_message := csi_t_gen_utility_pvt.dump_error_stack;
6355 END update_instance;
6356
6357 PROCEDURE fix_soiship(
6358 p_diag_txn_rec IN diag_txn_rec,
6359 p_txn_rec IN csi_datastructures_pub.transaction_rec,
6360 x_return_status OUT nocopy varchar2,
6361 x_error_message OUT nocopy varchar2)
6362 IS
6363
6364 l_txn_rec csi_datastructures_pub.transaction_rec;
6365
6366 l_instance_rec csi_datastructures_pub.instance_rec;
6367 l_parties_tbl csi_datastructures_pub.party_tbl;
6368 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
6369
6370 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
6371 l_error_message varchar2(2000);
6372
6373 BEGIN
6374
6375 x_return_status := fnd_api.g_ret_sts_success;
6376
6377 log(' '||p_diag_txn_rec.serial_number||
6378 ' '||p_diag_txn_rec.mtl_txn_id||
6379 ' '||p_diag_txn_rec.source_type||
6380 ' '||p_diag_txn_rec.process_code||
6381 ' '||p_diag_txn_rec.inst_id);
6382
6383 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
6384 LOOP
6385
6386 l_txn_rec := p_txn_rec;
6387
6388 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
6389 l_instance_rec.location_type_code := 'INVENTORY';
6390 l_instance_rec.instance_usage_code := 'RETURNED';
6391 l_instance_rec.inventory_item_id := inv_rec.item_id;
6395 l_instance_rec.inv_subinventory_name := inv_rec.subinv_code;
6392 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
6393 l_instance_rec.inv_organization_id := inv_rec.organization_id;
6394 l_instance_rec.quantity := 1;
6396 l_instance_rec.inv_locator_id := inv_rec.locator_id;
6397 get_lot_number(
6398 p_lot_code => p_diag_txn_rec.lot_code,
6399 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
6400 p_serial_number => p_diag_txn_rec.serial_number,
6401 x_lot_number => l_instance_rec.lot_number);
6402 l_instance_rec.inventory_revision := inv_rec.revision;
6403 l_instance_rec.vld_organization_id := inv_rec.organization_id;
6404 l_instance_rec.object_version_number := 1.0;
6405
6406 SELECT nvl(mssi.location_id, haou.location_id)
6407 INTO l_instance_rec.location_id
6408 FROM mtl_secondary_inventories mssi,
6409 hr_all_organization_units haou
6410 WHERE mssi.organization_id = l_instance_rec.inv_organization_id
6411 AND mssi.secondary_inventory_name = l_instance_rec.inv_subinventory_name
6412 AND haou.organization_id = mssi.organization_id;
6413
6414 IF p_diag_txn_rec.expire_flag = 'Y' THEN
6415 l_instance_rec.active_end_date := sysdate;
6416 END IF;
6417
6418 END LOOP;
6419
6420 IF p_diag_txn_rec.inst_id is not null THEN
6421 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
6422 update_instance(
6423 p_txn_rec => l_txn_rec,
6424 p_instance_rec => l_instance_rec,
6425 p_parties_tbl => l_parties_tbl,
6426 p_pty_accts_tbl => l_pty_accts_tbl,
6427 x_return_status => l_return_status,
6428 x_error_message => l_error_message);
6429
6430 END IF;
6431
6432 IF l_return_status <> fnd_api.g_ret_sts_success THEN
6433 x_return_status := l_return_status;
6434 x_error_message := l_error_message;
6435 END IF;
6436
6437 END fix_soiship;
6438
6439 PROCEDURE stage_soiship_instances
6440 IS
6441
6442 CURSOR txn_cur is
6443 SELECT distinct mtl_txn_id ,
6444 inventory_item_id,
6445 organization_id
6446 FROM csi_diagnostics_temp
6447 WHERE process_flag = 'M'
6448 AND process_code = 'SOISHIP';
6449
6450 CURSOR returned_serial_cur(p_mtl_txn_id IN number) is
6451 SELECT cdt.diag_seq_id,
6452 cdt.process_code,
6453 cdt.mtl_txn_id,
6454 cdt.mtl_txn_date mtl_txn_date,
6455 cdt.serial_number,
6456 cdt.inventory_item_id,
6457 cdt.instance_id,
6458 cdt.csi_txn_id,
6459 cdt.csi_txn_type_id,
6460 cdt.wip_job_id,
6461 cdt.internal_party_id,
6462 nvl(cdt.create_flag, 'Y') create_flag,
6463 nvl(cdt.expire_flag, 'N') expire_flag,
6464 cdt.serial_control_code,
6465 cdt.lot_control_code
6466 FROM csi_diagnostics_temp cdt
6467 WHERE cdt.mtl_txn_id = p_mtl_txn_id
6468 AND cdt.process_flag = 'M'
6469 AND nvl(cdt.create_flag, 'Y') = 'N'; -- marked FOR processing
6470
6471 CURSOR stage_cur(p_mtl_txn_id in number, p_lot_code in number) IS
6472 SELECT mmt.inventory_item_id item_id,
6473 mmt.organization_id organization_id,
6474 mmt.subinventory_code subinv_code,
6475 mmt.locator_id locator_id,
6476 mmt.revision revision,
6477 to_char(null) lot_number,
6478 abs(mmt.primary_quantity) quantity,
6479 mmt.transaction_date mtl_txn_date,
6480 mmt.transaction_id mtl_txn_id,
6481 mmt.trx_source_line_id trx_source_line_id
6482 FROM mtl_material_transactions mmt
6483 WHERE mmt.transaction_id = p_mtl_txn_id
6484 AND p_lot_code = 1
6485 UNION
6486 SELECT mmt.inventory_item_id item_id,
6487 mmt.organization_id organization_id,
6488 mmt.subinventory_code subinv_code,
6489 mmt.locator_id locator_id,
6490 mmt.revision revision,
6491 mtln.lot_number lot_number,
6492 abs(mtln.primary_quantity) quantity,
6493 mmt.transaction_date mtl_txn_date,
6494 mmt.transaction_id mtl_txn_id,
6495 mmt.trx_source_line_id trx_source_line_id
6496 FROM mtl_material_transactions mmt,
6497 mtl_transaction_lot_numbers mtln
6498 WHERE mmt.transaction_id = p_mtl_txn_id
6499 AND mtln.transaction_id = mmt.transaction_id
6500 AND p_lot_code <> 1;
6501
6502 l_order_line_id number;
6503 l_mtl_txn_date date;
6504
6505 l_serials_fixed boolean;
6506 l_lot_code number;
6507 l_uom_code varchar2(10);
6508
6509 l_instance_id number;
6510 l_quantity number;
6511 l_object_version_number number;
6512
6513 l_internal_party_id number;
6517 l_org_units_tbl csi_datastructures_pub.organization_units_tbl;
6514 l_instance_rec csi_datastructures_pub.instance_rec;
6515 l_parties_tbl csi_datastructures_pub.party_tbl;
6516 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
6518 l_ea_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
6519 l_pricing_tbl csi_datastructures_pub.pricing_attribs_tbl;
6520 l_assets_tbl csi_datastructures_pub.instance_asset_tbl;
6521 l_instance_ids_list csi_datastructures_pub.id_tbl;
6522 l_txn_rec csi_datastructures_pub.transaction_rec;
6523 l_diag_txn_rec diag_txn_rec;
6524
6525 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
6526 l_msg_count number;
6527 l_msg_data varchar2(2000);
6528
6529 l_error_message varchar2(2000);
6530 srl_upd_error exception;
6531
6532 BEGIN
6533
6534 log(date_time_stamp||' begin stage_soiship_instances');
6535
6536 FOR txn_rec IN txn_cur
6537 LOOP
6538
6539 SELECT transaction_date,
6540 trx_source_line_id
6541 INTO l_mtl_txn_date,
6542 l_order_line_id
6543 FROM mtl_material_transactions
6544 WHERE transaction_id = txn_rec.mtl_txn_id;
6545
6546 l_txn_rec.transaction_id := fnd_api.g_miss_num;
6547 l_txn_rec.transaction_type_id := correction_txn_type_id;
6548 l_txn_rec.source_header_ref := 'DATAFIX';
6549 l_txn_rec.source_line_ref := 'SOISHIP';
6550 l_txn_rec.source_line_ref_id := l_order_line_id;
6551 l_txn_rec.source_transaction_date := l_mtl_txn_date;
6552 l_txn_rec.transaction_date := l_mtl_txn_date;
6553
6554 l_serials_fixed := TRUE;
6555
6556 -- first fix all the serial numbers as returned
6557 FOR returned_serial_rec IN returned_serial_cur(txn_rec.mtl_txn_id)
6558 LOOP
6559
6560 l_internal_party_id := returned_serial_rec.internal_party_id;
6561
6562 l_diag_txn_rec.diag_seq_id := returned_serial_rec.diag_seq_id;
6563 l_diag_txn_rec.process_code := returned_serial_rec.process_code;
6564 l_diag_txn_rec.mtl_txn_id := returned_serial_rec.mtl_txn_id;
6565 l_diag_txn_rec.mtl_txn_date := returned_serial_rec.mtl_txn_date;
6566 l_diag_txn_rec.serial_number := returned_serial_rec.serial_number;
6567 l_diag_txn_rec.item_id := returned_serial_rec.inventory_item_id;
6568 l_diag_txn_rec.inst_id := returned_serial_rec.instance_id;
6569 l_diag_txn_rec.csi_txn_id := returned_serial_rec.csi_txn_id;
6570 l_diag_txn_rec.csi_txn_type_id := returned_serial_rec.csi_txn_type_id;
6571 l_diag_txn_rec.wip_job_id := returned_serial_rec.wip_job_id;
6572 l_diag_txn_rec.create_flag := returned_serial_rec.create_flag;
6573 l_diag_txn_rec.expire_flag := returned_serial_rec.expire_flag;
6574 l_diag_txn_rec.serial_code := returned_serial_rec.serial_control_code;
6575 l_diag_txn_rec.lot_code := returned_serial_rec.lot_control_code;
6576
6577 savepoint soiship_srl_upd;
6578
6579 fix_soiship(
6580 p_diag_txn_rec => l_diag_txn_rec,
6581 p_txn_rec => l_txn_rec,
6582 x_return_status => l_return_status,
6583 x_error_message => l_error_message);
6584
6585 IF l_return_status <> fnd_api.g_ret_sts_success THEN
6586
6587 l_serials_fixed := FALSE;
6588 rollback to soiship_srl_upd;
6589
6590 UPDATE csi_diagnostics_temp
6591 SET process_flag = 'E',
6592 temporary_message = l_error_message
6593 WHERE diag_seq_id = returned_serial_rec.diag_seq_id;
6594
6595 END IF;
6596
6597 commit;
6598
6599 END LOOP;
6600
6601 IF l_serials_fixed THEN
6602
6603 SELECT lot_control_code,
6604 primary_uom_code
6605 INTO l_lot_code,
6606 l_uom_code
6607 FROM mtl_system_items
6608 WHERE inventory_item_id = txn_rec.inventory_item_id
6609 AND organization_id = txn_rec.organization_id;
6610
6611 FOR stage_rec IN stage_cur (txn_rec.mtl_txn_id, l_lot_code)
6612 LOOP
6613
6614 savepoint stage_soiship_instances;
6615
6616 BEGIN
6617
6618 init_plsql_tables(
6619 px_instance_rec => l_instance_rec,
6620 px_parties_tbl => l_parties_tbl,
6621 px_pty_accts_tbl => l_pty_accts_tbl,
6622 px_org_units_tbl => l_org_units_tbl,
6623 px_ea_values_tbl => l_ea_values_tbl,
6624 px_pricing_tbl => l_pricing_tbl,
6625 px_assets_tbl => l_assets_tbl);
6626
6627 BEGIN
6628
6629 SELECT instance_id,
6630 quantity,
6631 object_version_number
6632 INTO l_instance_id,
6633 l_quantity,
6634 l_object_version_number
6635 FROM csi_item_instances
6636 WHERE location_type_code = 'INVENTORY'
6640 AND inv_subinventory_name = stage_rec.subinv_code
6637 AND instance_usage_code = 'IN_INVENTORY'
6638 AND inventory_item_id = stage_rec.item_id
6639 AND inv_organization_id = stage_rec.organization_id
6641 AND nvl(inv_locator_id,-9999) = nvl(stage_rec.locator_id,-9999)
6642 AND nvl(lot_number,'$$##$$') = nvl(stage_rec.lot_number,'$$##$$')
6643 AND nvl(inventory_revision,'$$##$$') = nvl(stage_rec.revision,'$$##$$')
6644 AND serial_number is null;
6645
6646 EXCEPTION
6647 WHEN no_data_found THEN
6648 l_instance_id := fnd_api.g_miss_num;
6649 WHEN too_many_rows THEN
6650 stack_message('Too many inventory instances for this non srl item.');
6651 raise fnd_api.g_exc_error;
6652 END;
6653
6654 IF nvl(l_instance_id,fnd_api.g_miss_num) <> fnd_api.g_miss_num THEN
6655
6656 l_instance_rec.instance_id := l_instance_id;
6657 l_instance_rec.quantity := l_quantity + stage_rec.quantity;
6658 l_instance_rec.object_version_number := l_object_version_number;
6659 l_instance_rec.active_end_date := null;
6660 l_instance_rec.instance_status_id := 3;
6661
6662 csi_item_instance_pub.update_item_instance(
6663 p_api_version => 1.0,
6664 p_commit => fnd_api.g_false,
6665 p_init_msg_list => fnd_api.g_true,
6666 p_validation_level => fnd_api.g_valid_level_full,
6667 p_instance_rec => l_instance_rec,
6668 p_party_tbl => l_parties_tbl,
6669 p_account_tbl => l_pty_accts_tbl,
6670 p_org_assignments_tbl => l_org_units_tbl,
6671 p_ext_attrib_values_tbl => l_ea_values_tbl,
6672 p_pricing_attrib_tbl => l_pricing_tbl,
6673 p_asset_assignment_tbl => l_assets_tbl,
6674 p_txn_rec => l_txn_rec,
6675 x_instance_id_lst => l_instance_ids_list,
6676 x_return_status => l_return_status,
6677 x_msg_count => l_msg_count,
6678 x_msg_data => l_msg_data);
6679
6680 -- For Bug 4057183
6681 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
6682 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
6683 raise fnd_api.g_exc_error;
6684 END IF;
6685
6686 ELSE
6687
6688 l_instance_rec.instance_id := fnd_api.g_miss_num;
6689 l_instance_rec.location_type_code := 'INVENTORY';
6690 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
6691 l_instance_rec.inventory_item_id := stage_rec.item_id;
6692 l_instance_rec.inv_organization_id := stage_rec.organization_id;
6693 l_instance_rec.quantity := stage_rec.quantity;
6694 l_instance_rec.unit_of_measure := l_uom_code;
6695 l_instance_rec.inv_subinventory_name := stage_rec.subinv_code;
6696 l_instance_rec.inv_locator_id := stage_rec.locator_id;
6697 l_instance_rec.lot_number := stage_rec.lot_number;
6698 l_instance_rec.inventory_revision := stage_rec.revision;
6699 l_instance_rec.vld_organization_id := stage_rec.organization_id;
6700 l_instance_rec.object_version_number := 1.0;
6701
6702 SELECT nvl(mssi.location_id, haou.location_id)
6703 INTO l_instance_rec.location_id
6704 FROM mtl_secondary_inventories mssi,
6705 hr_all_organization_units haou
6706 WHERE mssi.organization_id = l_instance_rec.inv_organization_id
6707 AND mssi.secondary_inventory_name = l_instance_rec.inv_subinventory_name
6708 AND haou.organization_id = mssi.organization_id;
6709
6710 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
6711 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
6712 l_parties_tbl(1).party_id := l_internal_party_id;
6713 l_parties_tbl(1).relationship_type_code := 'OWNER';
6714 l_parties_tbl(1).contact_flag := 'N';
6715 l_parties_tbl(1).object_version_number := 1.0;
6716
6717 csi_item_instance_pub.create_item_instance(
6718 p_api_version => 1.0,
6719 p_commit => fnd_api.g_false,
6720 p_init_msg_list => fnd_api.g_true,
6721 p_validation_level => fnd_api.g_valid_level_full,
6722 p_instance_rec => l_instance_rec,
6723 p_party_tbl => l_parties_tbl,
6724 p_account_tbl => l_pty_accts_tbl,
6725 p_org_assignments_tbl => l_org_units_tbl,
6726 p_ext_attrib_values_tbl => l_ea_values_tbl,
6727 p_pricing_attrib_tbl => l_pricing_tbl,
6728 p_asset_assignment_tbl => l_assets_tbl,
6732 x_msg_data => l_msg_data );
6729 p_txn_rec => l_txn_rec,
6730 x_return_status => l_return_status,
6731 x_msg_count => l_msg_count,
6733
6734 -- For Bug 4057183
6735 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
6736 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
6737 raise fnd_api.g_exc_error;
6738 END IF;
6739
6740 END IF;
6741
6742 UPDATE csi_diagnostics_temp
6743 SET process_flag = 'P',
6744 temporary_message = 'Sales order issue instance staged.'
6745 WHERE mtl_txn_id = txn_rec.mtl_txn_id;
6746
6747 UPDATE csi_txn_errors
6748 SET processed_flag = 'R',
6749 last_update_date = sysdate,
6750 last_update_login = fnd_global.login_id,
6751 last_updated_by = fnd_global.user_id
6752 WHERE inv_material_transaction_id = txn_rec.mtl_txn_id
6753 AND processed_flag = 'E';
6754
6755 EXCEPTION
6756 WHEN fnd_api.g_exc_error THEN
6757 rollback to stage_soiship_instances;
6758 l_error_message := csi_t_gen_utility_pvt.dump_error_stack;
6759 UPDATE csi_diagnostics_temp
6760 SET process_flag = 'E',
6761 temporary_message = l_error_message
6762 WHERE mtl_txn_id = txn_rec.mtl_txn_id;
6763 END;
6764 commit;
6765 END LOOP;
6766 END IF;
6767
6768 END LOOP;
6769
6770 log(date_time_stamp||' end stage_soiship_instances');
6771
6772 END stage_soiship_instances;
6773
6774 PROCEDURE fix_shipment(
6775 p_diag_txn_rec IN diag_txn_rec,
6776 x_return_status OUT nocopy varchar2,
6777 x_error_message OUT nocopy varchar2)
6778 IS
6779
6780 l_txn_rec csi_datastructures_pub.transaction_rec;
6781
6782 l_instance_rec csi_datastructures_pub.instance_rec;
6783 l_parties_tbl csi_datastructures_pub.party_tbl;
6784 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
6785
6786 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
6787 l_error_message varchar2(2000);
6788
6789 BEGIN
6790
6791 x_return_status := fnd_api.g_ret_sts_success;
6792
6793 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
6794 LOOP
6795
6796 l_txn_rec.transaction_id := fnd_api.g_miss_num;
6797 l_txn_rec.transaction_type_id := correction_txn_type_id;
6798 l_txn_rec.source_header_ref := 'DATAFIX';
6799 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
6800 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
6801 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
6802 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
6803
6804 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
6805 l_instance_rec.location_type_code := 'INVENTORY';
6806 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
6807 l_instance_rec.inventory_item_id := inv_rec.item_id;
6808 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
6809 l_instance_rec.inv_organization_id := inv_rec.organization_id;
6810 l_instance_rec.quantity := 1;
6811 l_instance_rec.inv_subinventory_name := inv_rec.subinv_code;
6812 l_instance_rec.inv_locator_id := inv_rec.locator_id;
6813 get_lot_number(
6814 p_lot_code => p_diag_txn_rec.lot_code,
6815 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
6816 p_serial_number => p_diag_txn_rec.serial_number,
6817 x_lot_number => l_instance_rec.lot_number);
6818 l_instance_rec.inventory_revision := inv_rec.revision;
6819 l_instance_rec.vld_organization_id := inv_rec.organization_id;
6820 l_instance_rec.object_version_number := 1.0;
6821
6822 END LOOP;
6823
6824 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
6825 IF p_diag_txn_rec.inst_id is not null THEN
6826 update_instance(
6827 p_txn_rec => l_txn_rec,
6828 p_instance_rec => l_instance_rec,
6829 p_parties_tbl => l_parties_tbl,
6830 p_pty_accts_tbl => l_pty_accts_tbl,
6831 x_return_status => l_return_status,
6832 x_error_message => l_error_message);
6833 ELSE
6834
6835 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
6836 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
6837 l_parties_tbl(1).party_id := p_diag_txn_rec.internal_party_id;
6838 l_parties_tbl(1).relationship_type_code := 'OWNER';
6839 l_parties_tbl(1).contact_flag := 'N';
6840 l_parties_tbl(1).object_version_number := 1.0;
6841
6842 create_instance(
6843 p_txn_rec => l_txn_rec,
6844 p_instance_rec => l_instance_rec,
6845 p_parties_tbl => l_parties_tbl,
6846 p_pty_accts_tbl => l_pty_accts_tbl,
6847 x_return_status => l_return_status,
6851 IF l_return_status <> fnd_api.g_ret_sts_success THEN
6848 x_error_message => l_error_message);
6849 END IF;
6850
6852 x_return_status := l_return_status;
6853 x_error_message := l_error_message;
6854 END IF;
6855
6856 END fix_shipment;
6857
6858 PROCEDURE fix_rma(
6859 p_diag_txn_rec IN diag_txn_rec,
6860 x_return_status OUT nocopy varchar2,
6861 x_error_message OUT nocopy varchar2)
6862 IS
6863
6864 l_location_type_code varchar2(30);
6865 l_intransit_location_id number;
6866
6867 l_txn_rec csi_datastructures_pub.transaction_rec;
6868
6869 l_instance_rec csi_datastructures_pub.instance_rec;
6870 l_parties_tbl csi_datastructures_pub.party_tbl;
6871 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
6872
6873 CURSOR prev_txn_cur(
6874 p_item_id IN number,
6875 p_serial_number IN varchar2,
6876 p_diag_seq_id IN number)
6877 IS
6878 SELECT mtl_txn_id,
6879 mtl_action_id,
6880 mtl_src_type_id,
6881 mtl_type_id
6882 FROM csi_diagnostics_temp
6883 WHERE inventory_item_id = p_item_id
6884 AND serial_number = p_serial_number
6885 AND diag_seq_id > p_diag_seq_id
6886 ORDER by diag_seq_id asc;
6887
6888 l_prev_txn_rec prev_txn_cur%rowtype;
6889 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
6890 l_error_message varchar2(2000);
6891
6892 BEGIN
6893
6894 x_return_status := fnd_api.g_ret_sts_success;
6895
6896 IF p_diag_txn_rec.inst_id is not null THEN
6897 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
6898 csi_gen_utility_pvt.populate_install_param_rec;
6899 END IF;
6900 --
6901 l_intransit_location_id := csi_datastructures_pub.g_install_param_rec.in_transit_location_id;
6902 --
6903
6904 FOR prev_txn_rec IN prev_txn_cur(
6905 p_item_id => p_diag_txn_rec.item_id,
6906 p_serial_number => p_diag_txn_rec.serial_number,
6907 p_diag_seq_id => p_diag_txn_rec.diag_seq_id)
6908 LOOP
6909 l_prev_txn_rec := prev_txn_rec;
6910 exit;
6911 END LOOP;
6912
6913 IF l_prev_txn_rec.mtl_action_id = 21 and l_prev_txn_rec.mtl_src_type_id = 8 THEN
6914 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
6915 LOOP
6916
6917 l_txn_rec.transaction_id := fnd_api.g_miss_num;
6918 l_txn_rec.transaction_type_id := correction_txn_type_id;
6919 l_txn_rec.source_header_ref := 'DATAFIX';
6920 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
6921 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
6922 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
6923 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
6924
6925 l_instance_rec.instance_id := p_diag_txn_rec.inst_id;
6926 l_instance_rec.location_id := l_intransit_location_id;
6927 l_instance_rec.location_type_code := 'HZ_LOCATIONS';
6928 l_instance_rec.instance_usage_code := 'OUT_OF_ENTERPRISE';
6929 l_instance_rec.inventory_item_id := inv_rec.item_id;
6930 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
6931 l_instance_rec.quantity := 1;
6932 l_instance_rec.inventory_revision := inv_rec.revision;
6933 l_instance_rec.vld_organization_id := inv_rec.organization_id;
6934 l_instance_rec.active_end_date := sysdate;
6935
6936 END LOOP;
6937
6938 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
6939 update_instance(
6940 p_txn_rec => l_txn_rec,
6941 p_instance_rec => l_instance_rec,
6942 p_parties_tbl => l_parties_tbl,
6943 p_pty_accts_tbl => l_pty_accts_tbl,
6944 x_return_status => l_return_status,
6945 x_error_message => l_error_message);
6946
6947 IF l_return_status <> fnd_api.g_ret_sts_success THEN
6948 x_return_status := l_return_status;
6949 x_error_message := l_error_message;
6950 END IF;
6951 ELSE
6952
6953 SELECT location_type_code
6954 INTO l_location_type_code
6955 FROM csi_item_instances
6956 WHERE instance_id = p_diag_txn_rec.inst_id;
6957
6958 IF l_location_type_code IN ('INVENTORY', 'WIP') THEN
6959
6960 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
6961 LOOP
6962
6963 l_txn_rec.transaction_id := fnd_api.g_miss_num;
6964 l_txn_rec.transaction_type_id := correction_txn_type_id;
6965 l_txn_rec.source_header_ref := 'DATAFIX';
6966 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
6967 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
6968 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
6969 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
6970
6974 IF p_diag_txn_rec.serial_code = 6 THEN
6971 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
6972 l_instance_rec.location_type_code := 'INVENTORY';
6973
6975 l_instance_rec.instance_usage_code := 'RETURNED';
6976 ELSE
6977 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
6978 END IF;
6979
6980 l_instance_rec.inventory_item_id := inv_rec.item_id;
6981 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
6982 l_instance_rec.inv_organization_id := inv_rec.organization_id;
6983 l_instance_rec.quantity := 1;
6984 l_instance_rec.inv_subinventory_name := inv_rec.subinv_code;
6985 l_instance_rec.inv_locator_id := inv_rec.locator_id;
6986 get_lot_number(
6987 p_lot_code => p_diag_txn_rec.lot_code,
6988 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
6989 p_serial_number => p_diag_txn_rec.serial_number,
6990 x_lot_number => l_instance_rec.lot_number);
6991 l_instance_rec.inventory_revision := inv_rec.revision;
6992 l_instance_rec.vld_organization_id := inv_rec.organization_id;
6993 l_instance_rec.active_end_date := sysdate;
6994 l_instance_rec.object_version_number := 1.0;
6995
6996 END LOOP;
6997
6998 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
6999
7000 update_instance(
7001 p_txn_rec => l_txn_rec,
7002 p_instance_rec => l_instance_rec,
7003 p_parties_tbl => l_parties_tbl,
7004 p_pty_accts_tbl => l_pty_accts_tbl,
7005 x_return_status => l_return_status,
7006 x_error_message => l_error_message);
7007
7008 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7009 x_return_status := l_return_status;
7010 x_error_message := l_error_message;
7011 END IF;
7012
7013 END IF;
7014 END IF;
7015 END IF;
7016 END fix_rma;
7017
7018 PROCEDURE fix_wipissue(
7019 p_diag_txn_rec IN diag_txn_rec,
7020 x_return_status OUT nocopy varchar2,
7021 x_error_message OUT nocopy varchar2)
7022 IS
7023
7024 l_txn_rec csi_datastructures_pub.transaction_rec;
7025
7026 l_instance_rec csi_datastructures_pub.instance_rec;
7027 l_parties_tbl csi_datastructures_pub.party_tbl;
7028 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
7029
7030 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
7031 l_error_message varchar2(2000);
7032
7033 BEGIN
7034
7035 x_return_status := fnd_api.g_ret_sts_success;
7036
7037 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
7038 LOOP
7039
7040 l_txn_rec.transaction_id := fnd_api.g_miss_num;
7041 l_txn_rec.transaction_type_id := correction_txn_type_id;
7042 l_txn_rec.source_header_ref := 'DATAFIX';
7043 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
7044 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
7045 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
7046 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
7047
7048 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
7049 l_instance_rec.location_type_code := 'INVENTORY';
7050 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
7051 l_instance_rec.inventory_item_id := inv_rec.item_id;
7052 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7053 l_instance_rec.inv_organization_id := inv_rec.organization_id;
7054 l_instance_rec.quantity := 1;
7055 l_instance_rec.inv_subinventory_name := inv_rec.subinv_code;
7056 l_instance_rec.inv_locator_id := inv_rec.locator_id;
7057 get_lot_number(
7058 p_lot_code => p_diag_txn_rec.lot_code,
7059 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
7060 p_serial_number => p_diag_txn_rec.serial_number,
7061 x_lot_number => l_instance_rec.lot_number);
7062 l_instance_rec.inventory_revision := inv_rec.revision;
7063 l_instance_rec.vld_organization_id := inv_rec.organization_id;
7064 l_instance_rec.object_version_number := 1.0;
7065
7066 END LOOP;
7067
7068 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7069 IF p_diag_txn_rec.inst_id is not null THEN
7070 update_instance(
7071 p_txn_rec => l_txn_rec,
7072 p_instance_rec => l_instance_rec,
7073 p_parties_tbl => l_parties_tbl,
7074 p_pty_accts_tbl => l_pty_accts_tbl,
7075 x_return_status => l_return_status,
7076 x_error_message => l_error_message);
7077 ELSE
7078
7079 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
7080 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
7081 l_parties_tbl(1).party_id := p_diag_txn_rec.internal_party_id;
7082 l_parties_tbl(1).relationship_type_code := 'OWNER';
7083 l_parties_tbl(1).contact_flag := 'N';
7084 l_parties_tbl(1).object_version_number := 1.0;
7085
7089 p_parties_tbl => l_parties_tbl,
7086 create_instance(
7087 p_txn_rec => l_txn_rec,
7088 p_instance_rec => l_instance_rec,
7090 p_pty_accts_tbl => l_pty_accts_tbl,
7091 x_return_status => l_return_status,
7092 x_error_message => l_error_message);
7093 END IF;
7094
7095 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7096 x_return_status := l_return_status;
7097 x_error_message := l_error_message;
7098 END IF;
7099
7100 END fix_wipissue;
7101
7102 PROCEDURE fix_wipreturn(
7103 p_diag_txn_rec IN diag_txn_rec,
7104 x_return_status OUT nocopy varchar2,
7105 x_error_message OUT nocopy varchar2)
7106 IS
7107
7108 l_txn_rec csi_datastructures_pub.transaction_rec;
7109
7110 l_instance_rec csi_datastructures_pub.instance_rec;
7111 l_parties_tbl csi_datastructures_pub.party_tbl;
7112 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
7113
7114 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
7115 l_error_message varchar2(2000);
7116
7117 BEGIN
7118
7119 x_return_status := fnd_api.g_ret_sts_success;
7120
7121 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
7122 LOOP
7123
7124 l_txn_rec.transaction_id := fnd_api.g_miss_num;
7125 l_txn_rec.transaction_type_id := correction_txn_type_id;
7126 l_txn_rec.source_header_ref := 'DATAFIX';
7127 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
7128 l_txn_rec.source_line_ref_id := inv_rec.mtl_source_id;
7129 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
7130 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
7131
7132 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
7133 l_instance_rec.location_type_code := 'WIP';
7134 l_instance_rec.instance_usage_code := 'IN_WIP';
7135 l_instance_rec.inventory_item_id := inv_rec.item_id;
7136 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7137 l_instance_rec.inv_organization_id := null;
7138 l_instance_rec.quantity := 1;
7139 l_instance_rec.inv_subinventory_name := null;
7140 l_instance_rec.inv_locator_id := null;
7141 get_lot_number(
7142 p_lot_code => p_diag_txn_rec.lot_code,
7143 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
7144 p_serial_number => p_diag_txn_rec.serial_number,
7145 x_lot_number => l_instance_rec.lot_number);
7146 l_instance_rec.inventory_revision := inv_rec.revision;
7147 l_instance_rec.vld_organization_id := inv_rec.organization_id;
7148 l_instance_rec.wip_job_id := inv_rec.mtl_source_id;
7149 l_instance_rec.object_version_number := 1.0;
7150
7151 END LOOP;
7152
7153 IF p_diag_txn_rec.inst_id is not null THEN
7154 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7155 update_instance(
7156 p_txn_rec => l_txn_rec,
7157 p_instance_rec => l_instance_rec,
7158 p_parties_tbl => l_parties_tbl,
7159 p_pty_accts_tbl => l_pty_accts_tbl,
7160 x_return_status => l_return_status,
7161 x_error_message => l_error_message);
7162 END IF;
7163
7164 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7165 x_return_status := l_return_status;
7166 x_error_message := l_error_message;
7167 END IF;
7168
7169 END fix_wipreturn;
7170
7171 PROCEDURE fix_wipcompletion(
7172 p_diag_txn_rec IN diag_txn_rec,
7173 x_return_status OUT nocopy varchar2,
7174 x_error_message OUT nocopy varchar2)
7175 IS
7176
7177 l_txn_rec csi_datastructures_pub.transaction_rec;
7178
7179 l_instance_rec csi_datastructures_pub.instance_rec;
7180 l_parties_tbl csi_datastructures_pub.party_tbl;
7181 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
7182
7183 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
7184 l_error_message varchar2(2000);
7185
7186 BEGIN
7187
7188 x_return_status := fnd_api.g_ret_sts_success;
7189
7190 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
7191 LOOP
7192
7193 l_txn_rec.transaction_id := fnd_api.g_miss_num;
7194 l_txn_rec.transaction_type_id := correction_txn_type_id;
7195 l_txn_rec.source_header_ref := 'DATAFIX';
7196 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
7197 l_txn_rec.source_line_ref_id := inv_rec.mtl_source_id;
7198 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
7199 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
7200
7201 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
7202 l_instance_rec.location_type_code := 'WIP';
7203 l_instance_rec.instance_usage_code := 'IN_WIP';
7204 l_instance_rec.inventory_item_id := inv_rec.item_id;
7205 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7206 l_instance_rec.inv_organization_id := null;
7207 l_instance_rec.quantity := 1;
7211 p_lot_code => p_diag_txn_rec.lot_code,
7208 l_instance_rec.inv_subinventory_name := null;
7209 l_instance_rec.inv_locator_id := null;
7210 get_lot_number(
7212 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
7213 p_serial_number => p_diag_txn_rec.serial_number,
7214 x_lot_number => l_instance_rec.lot_number);
7215 l_instance_rec.inventory_revision := inv_rec.revision;
7216 l_instance_rec.vld_organization_id := inv_rec.organization_id;
7217 l_instance_rec.wip_job_id := inv_rec.mtl_source_id;
7218 l_instance_rec.object_version_number := 1.0;
7219
7220 END LOOP;
7221
7222 IF p_diag_txn_rec.inst_id is not null THEN
7223 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7224 update_instance(
7225 p_txn_rec => l_txn_rec,
7226 p_instance_rec => l_instance_rec,
7227 p_parties_tbl => l_parties_tbl,
7228 p_pty_accts_tbl => l_pty_accts_tbl,
7229 x_return_status => l_return_status,
7230 x_error_message => l_error_message);
7231 END IF;
7232
7233 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7234 x_return_status := l_return_status;
7235 x_error_message := l_error_message;
7236 END IF;
7237
7238 END fix_wipcompletion;
7239
7240 PROCEDURE fix_miscissue(
7241 p_diag_txn_rec IN diag_txn_rec,
7242 x_return_status OUT nocopy varchar2,
7243 x_error_message OUT nocopy varchar2)
7244 IS
7245
7246 l_txn_rec csi_datastructures_pub.transaction_rec;
7247
7248 l_instance_rec csi_datastructures_pub.instance_rec;
7249 l_parties_tbl csi_datastructures_pub.party_tbl;
7250 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
7251
7252 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
7253 l_error_message varchar2(2000);
7254
7255 BEGIN
7256
7257 x_return_status := fnd_api.g_ret_sts_success;
7258
7259 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
7260 LOOP
7261
7262 l_txn_rec.transaction_id := fnd_api.g_miss_num;
7263 l_txn_rec.transaction_type_id := correction_txn_type_id;
7264 l_txn_rec.source_header_ref := 'DATAFIX';
7265 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
7266 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
7267 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
7268 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
7269
7270 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
7271 l_instance_rec.location_type_code := 'INVENTORY';
7272 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
7273 l_instance_rec.inventory_item_id := inv_rec.item_id;
7274 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7275 l_instance_rec.inv_organization_id := inv_rec.organization_id;
7276 l_instance_rec.quantity := 1;
7277 l_instance_rec.inv_subinventory_name := inv_rec.subinv_code;
7278 l_instance_rec.inv_locator_id := inv_rec.locator_id;
7279 get_lot_number(
7280 p_lot_code => p_diag_txn_rec.lot_code,
7281 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
7282 p_serial_number => p_diag_txn_rec.serial_number,
7283 x_lot_number => l_instance_rec.lot_number);
7284 l_instance_rec.inventory_revision := inv_rec.revision;
7285 l_instance_rec.vld_organization_id := inv_rec.organization_id;
7286 l_instance_rec.object_version_number := 1.0;
7287
7288 END LOOP;
7289
7290 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7291 IF p_diag_txn_rec.inst_id is not null THEN
7292 update_instance(
7293 p_txn_rec => l_txn_rec,
7294 p_instance_rec => l_instance_rec,
7295 p_parties_tbl => l_parties_tbl,
7296 p_pty_accts_tbl => l_pty_accts_tbl,
7297 x_return_status => l_return_status,
7298 x_error_message => l_error_message);
7299 ELSE
7300
7301 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
7302 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
7303 l_parties_tbl(1).party_id := p_diag_txn_rec.internal_party_id;
7304 l_parties_tbl(1).relationship_type_code := 'OWNER';
7305 l_parties_tbl(1).contact_flag := 'N';
7306 l_parties_tbl(1).object_version_number := 1.0;
7307
7308 create_instance(
7309 p_txn_rec => l_txn_rec,
7310 p_instance_rec => l_instance_rec,
7311 p_parties_tbl => l_parties_tbl,
7312 p_pty_accts_tbl => l_pty_accts_tbl,
7313 x_return_status => l_return_status,
7314 x_error_message => l_error_message);
7315 END IF;
7316
7317 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7318 x_return_status := l_return_status;
7319 x_error_message := l_error_message;
7320 END IF;
7321
7322 END fix_miscissue;
7323
7324 PROCEDURE fix_miscreceipt(
7325 p_diag_txn_rec in diag_txn_rec,
7326 x_return_status OUT nocopy varchar2,
7327 x_error_message OUT nocopy varchar2)
7328 IS
7332 l_instance_rec csi_datastructures_pub.instance_rec;
7329
7330 l_txn_rec csi_datastructures_pub.transaction_rec;
7331
7333 l_parties_tbl csi_datastructures_pub.party_tbl;
7334 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
7335
7336 l_location_type_code varchar2(30);
7337
7338 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
7339 l_error_message varchar2(2000);
7340
7341 BEGIN
7342
7343 x_return_status := fnd_api.g_ret_sts_success;
7344
7345 IF p_diag_txn_rec.inst_id is not null THEN
7346
7347 SELECT location_type_code
7348 INTO l_location_type_code
7349 FROM csi_item_instances
7350 WHERE instance_id = p_diag_txn_rec.inst_id;
7351
7352 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
7353 LOOP
7354
7355 l_txn_rec.transaction_id := fnd_api.g_miss_num;
7356 l_txn_rec.transaction_type_id := correction_txn_type_id;
7357 l_txn_rec.source_header_ref := 'DATAFIX';
7358 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
7359 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
7360 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
7361 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
7362
7363 l_instance_rec.instance_id := p_diag_txn_rec.inst_id;
7364 l_instance_rec.location_type_code := 'INVENTORY';
7365 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
7366 l_instance_rec.inventory_item_id := inv_rec.item_id;
7367 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7368 l_instance_rec.inv_organization_id := inv_rec.organization_id;
7369 l_instance_rec.quantity := 1;
7370 l_instance_rec.inv_subinventory_name := inv_rec.subinv_code;
7371 l_instance_rec.inv_locator_id := inv_rec.locator_id;
7372 get_lot_number(
7373 p_lot_code => p_diag_txn_rec.lot_code,
7374 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
7375 p_serial_number => p_diag_txn_rec.serial_number,
7376 x_lot_number => l_instance_rec.lot_number);
7377 l_instance_rec.inventory_revision := inv_rec.revision;
7378 l_instance_rec.vld_organization_id := inv_rec.organization_id;
7379 l_instance_rec.active_end_date := sysdate;
7380 l_instance_rec.object_version_number := 1.0;
7381
7382 END LOOP;
7383
7384 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7385 update_instance(
7386 p_txn_rec => l_txn_rec,
7387 p_instance_rec => l_instance_rec,
7388 p_parties_tbl => l_parties_tbl,
7389 p_pty_accts_tbl => l_pty_accts_tbl,
7390 x_return_status => l_return_status,
7391 x_error_message => l_error_message);
7392
7393 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7394 x_return_status := l_return_status;
7395 x_error_message := l_error_message;
7396 END IF;
7397
7398 END IF;
7399
7400 END fix_miscreceipt;
7401
7402 PROCEDURE fix_sixfer(
7403 p_diag_txn_rec IN diag_txn_rec,
7404 x_return_status OUT nocopy varchar2,
7405 x_error_message OUT nocopy varchar2)
7406 IS
7407
7408 l_mtl_xfer_txn_id number;
7409 l_txn_rec csi_datastructures_pub.transaction_rec;
7410
7411 l_instance_rec csi_datastructures_pub.instance_rec;
7412 l_parties_tbl csi_datastructures_pub.party_tbl;
7413 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
7414
7415 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
7416 l_error_message varchar2(2000);
7417
7418 BEGIN
7419
7420 x_return_status := fnd_api.g_ret_sts_success;
7421
7422 SELECT transfer_transaction_id
7423 INTO l_mtl_xfer_txn_id
7424 FROM mtl_material_transactions
7425 WHERE transaction_id = p_diag_txn_rec.mtl_txn_id;
7426
7427 FOR inv_rec IN from_sixfer_cur(
7428 p_diag_txn_rec.mtl_txn_id,
7429 l_mtl_xfer_txn_id)
7430 LOOP
7431
7432 l_txn_rec.transaction_id := fnd_api.g_miss_num;
7433 l_txn_rec.transaction_type_id := correction_txn_type_id;
7434 l_txn_rec.source_header_ref := 'DATAFIX';
7435 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
7436 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
7437 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
7438 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
7439
7440 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
7441 l_instance_rec.location_type_code := 'INVENTORY';
7442 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
7443 l_instance_rec.inventory_item_id := inv_rec.item_id;
7444 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7445 l_instance_rec.inv_organization_id := inv_rec.organization_id;
7446 l_instance_rec.quantity := 1;
7447 l_instance_rec.inv_subinventory_name := inv_rec.subinv_code;
7451 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
7448 l_instance_rec.inv_locator_id := inv_rec.locator_id;
7449 get_lot_number(
7450 p_lot_code => p_diag_txn_rec.lot_code,
7452 p_serial_number => p_diag_txn_rec.serial_number,
7453 x_lot_number => l_instance_rec.lot_number);
7454 l_instance_rec.inventory_revision := inv_rec.revision;
7455 l_instance_rec.vld_organization_id := inv_rec.organization_id;
7456 l_instance_rec.object_version_number := 1.0;
7457
7458 END LOOP;
7459
7460 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7461 IF p_diag_txn_rec.inst_id is not null THEN
7462 update_instance(
7463 p_txn_rec => l_txn_rec,
7464 p_instance_rec => l_instance_rec,
7465 p_parties_tbl => l_parties_tbl,
7466 p_pty_accts_tbl => l_pty_accts_tbl,
7467 x_return_status => l_return_status,
7468 x_error_message => l_error_message);
7469 ELSE
7470
7471 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
7472 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
7473 l_parties_tbl(1).party_id := p_diag_txn_rec.internal_party_id;
7474 l_parties_tbl(1).relationship_type_code := 'OWNER';
7475 l_parties_tbl(1).contact_flag := 'N';
7476 l_parties_tbl(1).object_version_number := 1.0;
7477
7478 create_instance(
7479 p_txn_rec => l_txn_rec,
7480 p_instance_rec => l_instance_rec,
7481 p_parties_tbl => l_parties_tbl,
7482 p_pty_accts_tbl => l_pty_accts_tbl,
7483 x_return_status => l_return_status,
7484 x_error_message => l_error_message);
7485 END IF;
7486
7487 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7488 x_return_status := l_return_status;
7489 x_error_message := l_error_message;
7490 END IF;
7491
7492 END fix_sixfer;
7493
7494 PROCEDURE fix_projreceipt(
7495 p_diag_txn_rec IN diag_txn_rec,
7496 x_return_status OUT nocopy varchar2,
7497 x_error_message OUT nocopy varchar2)
7498 IS
7499
7500 l_txn_rec csi_datastructures_pub.transaction_rec;
7501
7502 l_instance_rec csi_datastructures_pub.instance_rec;
7503 l_parties_tbl csi_datastructures_pub.party_tbl;
7504 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
7505
7506 l_project_location_id number;
7507
7508 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
7509 l_error_message varchar2(2000);
7510
7511 BEGIN
7512
7513 x_return_status := fnd_api.g_ret_sts_success;
7514
7515 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
7516 csi_gen_utility_pvt.populate_install_param_rec;
7517 END IF;
7518 --
7519 l_project_location_id := csi_datastructures_pub.g_install_param_rec.project_location_id;
7520 --
7521
7522 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
7523 LOOP
7524
7525 l_txn_rec.transaction_id := fnd_api.g_miss_num;
7526 l_txn_rec.transaction_type_id := correction_txn_type_id;
7527 l_txn_rec.source_header_ref := 'DATAFIX';
7528 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
7529 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
7530 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
7531 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
7532
7533
7534 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
7535 l_instance_rec.accounting_class_code := 'PROJECT';
7536 l_instance_rec.location_type_code := 'PROJECT';
7537 l_instance_rec.location_id := l_project_location_id;
7538 l_instance_rec.pa_project_id := inv_rec.source_project_id;
7539 l_instance_rec.pa_project_task_id := inv_rec.source_task_id;
7540 l_instance_rec.instance_usage_code := 'IN_PROCESS';
7541 l_instance_rec.inventory_item_id := inv_rec.item_id;
7542 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7543 l_instance_rec.quantity := 1;
7544 l_instance_rec.inv_organization_id := null;
7545 l_instance_rec.inv_subinventory_name := null;
7546 l_instance_rec.inv_locator_id := null;
7547 l_instance_rec.lot_number := null;
7548 l_instance_rec.inventory_revision := inv_rec.revision;
7549 l_instance_rec.vld_organization_id := inv_rec.organization_id;
7550 l_instance_rec.object_version_number := 1.0;
7551
7552 END LOOP;
7553
7554 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7555 IF p_diag_txn_rec.inst_id is not null THEN
7556 update_instance(
7557 p_txn_rec => l_txn_rec,
7558 p_instance_rec => l_instance_rec,
7559 p_parties_tbl => l_parties_tbl,
7560 p_pty_accts_tbl => l_pty_accts_tbl,
7561 x_return_status => l_return_status,
7562 x_error_message => l_error_message);
7563 ELSE
7564
7565 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
7569 l_parties_tbl(1).contact_flag := 'N';
7566 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
7567 l_parties_tbl(1).party_id := p_diag_txn_rec.internal_party_id;
7568 l_parties_tbl(1).relationship_type_code := 'OWNER';
7570 l_parties_tbl(1).object_version_number := 1.0;
7571
7572 create_instance(
7573 p_txn_rec => l_txn_rec,
7574 p_instance_rec => l_instance_rec,
7575 p_parties_tbl => l_parties_tbl,
7576 p_pty_accts_tbl => l_pty_accts_tbl,
7577 x_return_status => l_return_status,
7578 x_error_message => l_error_message);
7579 END IF;
7580
7581 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7582 x_return_status := l_return_status;
7583 x_error_message := l_error_message;
7584 END IF;
7585
7586 END fix_projreceipt;
7587
7588 PROCEDURE fix_interorgreceipt(
7589 p_diag_txn_rec IN diag_txn_rec,
7590 x_return_status OUT nocopy varchar2,
7591 x_error_message OUT nocopy varchar2)
7592 IS
7593
7594 l_txn_rec csi_datastructures_pub.transaction_rec;
7595
7596 l_internal_party_id number;
7597 l_src_serial_code number;
7598 l_lot_number varchar2(80);
7599 l_inv_location_id number;
7600
7601 l_instance_quantity number;
7602 l_instance_rec_tmp csi_datastructures_pub.instance_rec;
7603 l_instance_rec csi_datastructures_pub.instance_rec;
7604 l_parties_tbl csi_datastructures_pub.party_tbl;
7605 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
7606 l_org_units_tbl csi_datastructures_pub.organization_units_tbl;
7607 l_ea_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
7608 l_pricing_tbl csi_datastructures_pub.pricing_attribs_tbl;
7609 l_assets_tbl csi_datastructures_pub.instance_asset_tbl;
7610 l_instance_ids_list csi_datastructures_pub.id_tbl;
7611
7612 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
7613 l_msg_data varchar2(2000);
7614 l_msg_count number;
7615 l_error_message varchar2(2000);
7616
7617 user_error exception;
7618
7619 BEGIN
7620
7621 x_return_status := fnd_api.g_ret_sts_success;
7622
7623 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
7624 csi_gen_utility_pvt.populate_install_param_rec;
7625 END IF;
7626 --
7627 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
7628 --
7629 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
7630 LOOP
7631
7632 l_txn_rec.transaction_id := fnd_api.g_miss_num;
7633 l_txn_rec.transaction_type_id := correction_txn_type_id;
7634 l_txn_rec.source_header_ref := 'DATAFIX';
7635 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
7636 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
7637 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
7638 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
7639
7640 SELECT serial_number_control_code
7641 INTO l_src_serial_code
7642 FROM mtl_system_items_b
7643 WHERE inventory_item_id = inv_rec.item_id
7644 AND organization_id = inv_rec.xfer_organization_id;
7645
7646 SELECT nvl(mssi.location_id, haou.location_id)
7647 INTO l_inv_location_id
7648 FROM mtl_secondary_inventories mssi,
7649 hr_all_organization_units haou
7650 WHERE mssi.organization_id = inv_rec.organization_id
7651 AND mssi.secondary_inventory_name = inv_rec.subinv_code
7652 AND haou.organization_id = mssi.organization_id;
7653
7654 IF l_src_serial_code in (2, 5) THEN
7655
7656 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
7657 l_instance_rec.location_type_code := 'INVENTORY';
7658 l_instance_rec.location_id := l_inv_location_id;
7659 l_instance_rec.instance_usage_code := 'IN_TRANSIT';
7660 l_instance_rec.inventory_item_id := inv_rec.item_id;
7661 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7662 l_instance_rec.inv_organization_id := inv_rec.xfer_organization_id;
7663 l_instance_rec.quantity := 1;
7664 l_instance_rec.inv_subinventory_name := null;
7665 l_instance_rec.inv_locator_id := null;
7666 l_instance_rec.lot_number := null;
7667 l_instance_rec.inventory_revision := inv_rec.revision;
7668 l_instance_rec.vld_organization_id := inv_rec.xfer_organization_id;
7669 l_instance_rec.object_version_number := 1.0;
7670
7671 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7672 IF p_diag_txn_rec.inst_id is not null THEN
7673 update_instance(
7674 p_txn_rec => l_txn_rec,
7675 p_instance_rec => l_instance_rec,
7676 p_parties_tbl => l_parties_tbl,
7677 p_pty_accts_tbl => l_pty_accts_tbl,
7678 x_return_status => l_return_status,
7679 x_error_message => l_error_message);
7680 ELSE
7681
7685 l_parties_tbl(1).relationship_type_code := 'OWNER';
7682 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
7683 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
7684 l_parties_tbl(1).party_id := l_internal_party_id;
7686 l_parties_tbl(1).contact_flag := 'N';
7687 l_parties_tbl(1).object_version_number := 1.0;
7688
7689 create_instance(
7690 p_txn_rec => l_txn_rec,
7691 p_instance_rec => l_instance_rec,
7692 p_parties_tbl => l_parties_tbl,
7693 p_pty_accts_tbl => l_pty_accts_tbl,
7694 x_return_status => l_return_status,
7695 x_error_message => l_error_message);
7696 END IF;
7697
7698 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7699 x_return_status := l_return_status;
7700 x_error_message := l_error_message;
7701 END IF;
7702 ELSIF l_src_serial_code in (1,6) THEN
7703
7704 l_instance_rec := l_instance_rec_tmp;
7705 l_parties_tbl.delete;
7706
7707 -- create/update a non serial intransit instance
7708 get_lot_number(
7709 p_lot_code => p_diag_txn_rec.lot_code,
7710 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
7711 p_serial_number => p_diag_txn_rec.serial_number,
7712 x_lot_number => l_lot_number);
7713
7714 BEGIN
7715 SELECT instance_id,
7716 object_version_number,
7717 quantity
7718 INTO l_instance_rec.instance_id,
7719 l_instance_rec.object_version_number,
7720 l_instance_quantity
7721 FROM csi_item_instances
7722 WHERE inventory_item_id = inv_rec.item_id
7723 AND nvl(inventory_revision,'$$##$$') = nvl(inv_rec.revision, '$$##$$')
7724 AND nvl(lot_number,'$$##$$') = nvl(l_lot_number, '$$##$$')
7725 AND location_type_code = 'INVENTORY'
7726 AND instance_usage_code = 'IN_TRANSIT'
7727 AND serial_number is null;
7728
7729 l_instance_rec.quantity := l_instance_quantity + 1;
7730
7731 EXCEPTION
7732 WHEN no_data_found THEN
7733 l_instance_rec.instance_id := fnd_api.g_miss_num;
7734 l_instance_rec.quantity := 1;
7735 WHEN too_many_rows THEN
7736 x_return_status := fnd_api.g_ret_sts_error;
7737 x_error_message := 'Multiple non serial in_transit instances found.';
7738 RAISE user_error;
7739 END;
7740
7741 IF nvl(l_instance_rec.instance_id, fnd_api.g_miss_num) <> fnd_api.g_miss_num THEN
7742
7743 l_instance_rec.active_end_date := null;
7744 l_instance_rec.instance_status_id := 3;
7745
7746 csi_item_instance_pub.update_item_instance(
7747 p_api_version => 1.0,
7748 p_commit => fnd_api.g_false,
7749 p_init_msg_list => fnd_api.g_true,
7750 p_validation_level => fnd_api.g_valid_level_full,
7751 p_instance_rec => l_instance_rec,
7752 p_party_tbl => l_parties_tbl,
7753 p_account_tbl => l_pty_accts_tbl,
7754 p_org_assignments_tbl => l_org_units_tbl,
7755 p_ext_attrib_values_tbl => l_ea_values_tbl,
7756 p_pricing_attrib_tbl => l_pricing_tbl,
7757 p_asset_assignment_tbl => l_assets_tbl,
7758 p_txn_rec => l_txn_rec,
7759 x_instance_id_lst => l_instance_ids_list,
7760 x_return_status => l_return_status,
7761 x_msg_count => l_msg_count,
7762 x_msg_data => l_msg_data);
7763
7764 -- For Bug 4057183
7765 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
7766 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
7767 x_return_status := l_return_status;
7768 x_error_message := csi_t_gen_utility_pvt.dump_error_stack;
7769 RAISE user_error;
7770 END IF;
7771
7772 ELSE
7773
7774 l_instance_rec.inventory_item_id := inv_rec.item_id;
7775 l_instance_rec.inventory_revision := inv_rec.revision;
7776 l_instance_rec.vld_organization_id := inv_rec.xfer_organization_id;
7777 l_instance_rec.instance_usage_code := 'IN_TRANSIT';
7778 l_instance_rec.location_type_code := 'INVENTORY';
7779 l_instance_rec.location_id := l_inv_location_id;
7780 l_instance_rec.active_end_date := null;
7781 l_instance_rec.inv_organization_id := null;
7782 l_instance_rec.inv_subinventory_name := null;
7783 l_instance_rec.inv_locator_id := null;
7784 l_instance_rec.lot_number := l_lot_number;
7785
7786 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
7787 l_parties_tbl(1).instance_id := fnd_api.g_miss_num;
7788 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
7789 l_parties_tbl(1).party_id := l_internal_party_id;
7790 l_parties_tbl(1).relationship_type_code := 'OWNER';
7791 l_parties_tbl(1).contact_flag := 'N';
7795 p_txn_rec => l_txn_rec,
7792 l_parties_tbl(1).object_version_number := 1.0;
7793
7794 create_instance(
7796 p_instance_rec => l_instance_rec,
7797 p_parties_tbl => l_parties_tbl,
7798 p_pty_accts_tbl => l_pty_accts_tbl,
7799 x_return_status => l_return_status,
7800 x_error_message => l_error_message);
7801
7802 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7803 x_return_status := l_return_status;
7804 x_error_message := l_error_message;
7805 RAISE user_error;
7806 END IF;
7807 END IF;
7808
7809 -- update the destination in the returned status for 6
7810 IF l_src_serial_code = 6 and p_diag_txn_rec.inst_id is not null THEN
7811
7812 l_instance_rec := l_instance_rec_tmp;
7813 l_parties_tbl.delete;
7814
7815 l_instance_rec.instance_id := p_diag_txn_rec.inst_id;
7816 l_instance_rec.location_type_code := 'INVENTORY';
7817 l_instance_rec.inv_organization_id := inv_rec.organization_id;
7818 l_instance_rec.inv_subinventory_name:= inv_rec.subinv_code;
7819
7820 SELECT nvl(mssi.location_id, haou.location_id)
7821 INTO l_instance_rec.location_id
7822 FROM mtl_secondary_inventories mssi,
7823 hr_all_organization_units haou
7824 WHERE mssi.organization_id = l_instance_rec.inv_organization_id
7825 AND mssi.secondary_inventory_name = l_instance_rec.inv_subinventory_name
7826 AND haou.organization_id = mssi.organization_id;
7827
7828 l_instance_rec.instance_usage_code := 'RETURNED';
7829 l_instance_rec.inventory_item_id := inv_rec.item_id;
7830 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7831 l_instance_rec.mfg_serial_number_flag := 'Y';
7832 l_instance_rec.quantity := 1;
7833 l_instance_rec.inv_locator_id := inv_rec.locator_id;
7834 l_instance_rec.creation_complete_flag := 'N';
7835
7836 get_lot_number(
7837 p_lot_code => p_diag_txn_rec.lot_code,
7838 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
7839 p_serial_number => p_diag_txn_rec.serial_number,
7840 x_lot_number => l_instance_rec.lot_number);
7841
7842 l_instance_rec.inventory_revision := inv_rec.revision;
7843 l_instance_rec.vld_organization_id := inv_rec.organization_id;
7844
7845 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7846
7847 update_instance(
7848 p_txn_rec => l_txn_rec,
7849 p_instance_rec => l_instance_rec,
7850 p_parties_tbl => l_parties_tbl,
7851 p_pty_accts_tbl => l_pty_accts_tbl,
7852 x_return_status => l_return_status,
7853 x_error_message => l_error_message);
7854
7855 IF l_return_status <> fnd_api.g_ret_sts_success THEN
7856 x_return_status := l_return_status;
7857 x_error_message := l_error_message;
7858 END IF;
7859 END IF;
7860 END IF;
7861
7862 END LOOP;
7863
7864 EXCEPTION
7865 WHEN user_error THEN
7866 -- just to bring the control to the end of the routine
7867 null;
7868 END fix_interorgreceipt;
7869
7870 PROCEDURE fix_isoreceipt(
7871 p_diag_txn_rec IN diag_txn_rec,
7872 x_return_status OUT nocopy varchar2,
7873 x_error_message OUT nocopy varchar2)
7874 IS
7875
7876 l_txn_rec csi_datastructures_pub.transaction_rec;
7877
7878 l_instance_rec csi_datastructures_pub.instance_rec;
7879 l_parties_tbl csi_datastructures_pub.party_tbl;
7880 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
7881 l_org_units_tbl csi_datastructures_pub.organization_units_tbl;
7882 l_ea_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
7883 l_pricing_tbl csi_datastructures_pub.pricing_attribs_tbl;
7884 l_assets_tbl csi_datastructures_pub.instance_asset_tbl;
7885 l_instance_ids_list csi_datastructures_pub.id_tbl;
7886
7887 l_src_serial_code number;
7888 l_dest_serial_code number;
7889
7890 l_instance_quantity number;
7891 l_internal_party_id number;
7892 l_intransit_location_id number;
7893 l_lot_number varchar2(80);
7894
7895 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
7896 l_msg_count number;
7897 l_msg_data varchar2(2000);
7898
7899 l_error_message varchar2(2000);
7900
7901 BEGIN
7902
7903 x_return_status := fnd_api.g_ret_sts_success;
7904
7905 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
7906 csi_gen_utility_pvt.populate_install_param_rec;
7907 END IF;
7908 --
7909 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
7910 l_intransit_location_id := csi_datastructures_pub.g_install_param_rec.in_transit_location_id;
7911 --
7912 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
7913 LOOP
7914
7915 l_txn_rec.transaction_id := fnd_api.g_miss_num;
7916 l_txn_rec.transaction_type_id := correction_txn_type_id;
7920 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
7917 l_txn_rec.source_header_ref := 'DATAFIX';
7918 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
7919 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
7921 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
7922
7923 SELECT serial_number_control_code
7924 INTO l_src_serial_code
7925 FROM mtl_system_items_b
7926 WHERE inventory_item_id = inv_rec.item_id
7927 AND organization_id = inv_rec.xfer_organization_id;
7928
7929 SELECT serial_number_control_code
7930 INTO l_dest_serial_code
7931 FROM mtl_system_items_b
7932 WHERE inventory_item_id = inv_rec.item_id
7933 AND organization_id = inv_rec.organization_id;
7934
7935 IF l_src_serial_code in (2, 5, 6) THEN
7936 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
7937
7938 IF l_dest_serial_code = 1 THEN
7939 l_instance_rec.location_type_code := 'HZ_LOCATIONS';
7940 l_instance_rec.location_type_code := 'OUT_OF_ENTERPRISE';
7941 ELSE
7942 l_instance_rec.location_type_code := 'IN_TRANSIT';
7943 l_instance_rec.instance_usage_code := 'IN_TRANSIT';
7944 END IF;
7945
7946 l_instance_rec.location_id := l_intransit_location_id;
7947 l_instance_rec.inventory_item_id := inv_rec.item_id;
7948 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
7949 l_instance_rec.quantity := 1;
7950 l_instance_rec.inv_organization_id := null;
7951 l_instance_rec.inv_subinventory_name := null;
7952 l_instance_rec.inv_locator_id := null;
7953 l_instance_rec.lot_number := null;
7954 l_instance_rec.inventory_revision := inv_rec.revision;
7955
7956 -- read the order line id from the shipment transaction prior to the ISO receipt
7957 -- and stamp it in in_transit_order_line_id
7958 BEGIN
7959 SELECT trx_source_line_id
7960 INTO l_instance_rec.in_transit_order_line_id
7961 FROM mtl_material_transactions
7962 WHERE transaction_action_id = 21
7963 AND transaction_source_type_id = 8
7964 AND (shipment_number, inventory_item_id) IN (
7965 SELECT shipment_number, inventory_item_id
7966 FROM mtl_material_transactions
7967 WHERE transaction_id = inv_rec.mtl_txn_id)
7968 AND rownum = 1;
7969 EXCEPTION
7970 WHEN no_data_found THEN
7971 l_instance_rec.in_transit_order_line_id := inv_rec.trx_source_line_id;
7972 END;
7973
7974 l_instance_rec.vld_organization_id := inv_rec.organization_id;
7975 l_instance_rec.object_version_number := 1.0;
7976
7977 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
7978 IF p_diag_txn_rec.inst_id is not null THEN
7979 update_instance(
7980 p_txn_rec => l_txn_rec,
7981 p_instance_rec => l_instance_rec,
7982 p_parties_tbl => l_parties_tbl,
7983 p_pty_accts_tbl => l_pty_accts_tbl,
7984 x_return_status => l_return_status,
7985 x_error_message => l_error_message);
7986 ELSE
7987
7988 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
7989 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
7990 l_parties_tbl(1).party_id := l_internal_party_id;
7991 l_parties_tbl(1).relationship_type_code := 'OWNER';
7992 l_parties_tbl(1).contact_flag := 'N';
7993 l_parties_tbl(1).object_version_number := 1.0;
7994
7995 create_instance(
7996 p_txn_rec => l_txn_rec,
7997 p_instance_rec => l_instance_rec,
7998 p_parties_tbl => l_parties_tbl,
7999 p_pty_accts_tbl => l_pty_accts_tbl,
8000 x_return_status => l_return_status,
8001 x_error_message => l_error_message);
8002 END IF;
8003
8004 IF l_return_status <> fnd_api.g_ret_sts_success THEN
8005 x_return_status := l_return_status;
8006 x_error_message := l_error_message;
8007 END IF;
8008
8009 ELSIF l_src_serial_code = 1 THEN
8010 BEGIN
8011
8012 get_lot_number(
8013 p_lot_code => p_diag_txn_rec.lot_code,
8014 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
8015 p_serial_number => p_diag_txn_rec.serial_number,
8016 x_lot_number => l_lot_number);
8017
8018 SELECT instance_id,
8019 object_version_number,
8020 quantity
8021 INTO l_instance_rec.instance_id,
8022 l_instance_rec.object_version_number,
8023 l_instance_quantity
8024 FROM csi_item_instances
8025 WHERE inventory_item_id = inv_rec.item_id
8026 AND nvl(inventory_revision,'$$##$$') = nvl(inv_rec.revision, '$$##$$')
8027 AND nvl(lot_number,'$$##$$') = nvl(l_lot_number, '$$##$$')
8028 AND location_type_code = 'IN_TRANSIT'
8029 AND instance_usage_code = 'IN_TRANSIT'
8033
8030 AND serial_number is null;
8031
8032 l_instance_rec.quantity := l_instance_quantity + inv_rec.quantity;
8034 EXCEPTION
8035 WHEN no_data_found THEN
8036 l_instance_rec.instance_id := fnd_api.g_miss_num;
8037 l_instance_rec.object_version_number := 1;
8038 l_instance_rec.quantity := inv_rec.quantity;
8039 END;
8040
8041 BEGIN
8042 SELECT trx_source_line_id
8043 INTO l_instance_rec.in_transit_order_line_id
8044 FROM mtl_material_transactions
8045 WHERE transaction_action_id = 21
8046 AND transaction_source_type_id = 8
8047 AND (shipment_number, inventory_item_id) IN (
8048 SELECT shipment_number, inventory_item_id
8049 FROM mtl_material_transactions
8050 WHERE transaction_id = inv_rec.mtl_txn_id)
8051 AND rownum = 1;
8052 EXCEPTION
8053 WHEN no_data_found THEN
8054 l_instance_rec.in_transit_order_line_id := inv_rec.trx_source_line_id;
8055 END;
8056
8057 IF nvl(l_instance_rec.instance_id, fnd_api.g_miss_num) <> fnd_api.g_miss_num THEN
8058
8059 l_instance_rec.active_end_date := null;
8060 l_instance_rec.instance_status_id := 3;
8061
8062 csi_item_instance_pub.update_item_instance(
8063 p_api_version => 1.0,
8064 p_commit => fnd_api.g_false,
8065 p_init_msg_list => fnd_api.g_true,
8066 p_validation_level => fnd_api.g_valid_level_full,
8067 p_instance_rec => l_instance_rec,
8068 p_party_tbl => l_parties_tbl,
8069 p_account_tbl => l_pty_accts_tbl,
8070 p_org_assignments_tbl => l_org_units_tbl,
8071 p_ext_attrib_values_tbl => l_ea_values_tbl,
8072 p_pricing_attrib_tbl => l_pricing_tbl,
8073 p_asset_assignment_tbl => l_assets_tbl,
8074 p_txn_rec => l_txn_rec,
8075 x_instance_id_lst => l_instance_ids_list,
8076 x_return_status => l_return_status,
8077 x_msg_count => l_msg_count,
8078 x_msg_data => l_msg_data);
8079
8080 -- For Bug 4057183
8081 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
8082 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
8083 x_return_status := l_return_status;
8084 x_error_message := csi_t_gen_utility_pvt.dump_error_stack;
8085 END IF;
8086
8087 ELSE
8088
8089 l_instance_rec.inventory_item_id := inv_rec.item_id;
8090 l_instance_rec.inventory_revision := inv_rec.revision;
8091 l_instance_rec.vld_organization_id := inv_rec.xfer_organization_id;
8092 l_instance_rec.instance_usage_code := 'IN_TRANSIT';
8093 l_instance_rec.location_type_code := 'IN_TRANSIT';
8094 l_instance_rec.location_id := l_intransit_location_id;
8095 l_instance_rec.active_end_date := null;
8096 l_instance_rec.inv_organization_id := null;
8097 l_instance_rec.inv_subinventory_name := null;
8098 l_instance_rec.inv_locator_id := null;
8099 l_instance_rec.lot_number := null;
8100
8101 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
8102 l_parties_tbl(1).instance_id := fnd_api.g_miss_num;
8103 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
8104 l_parties_tbl(1).party_id := l_internal_party_id;
8105 l_parties_tbl(1).relationship_type_code := 'OWNER';
8106 l_parties_tbl(1).contact_flag := 'N';
8107 l_parties_tbl(1).object_version_number := 1.0;
8108
8109 create_instance(
8110 p_txn_rec => l_txn_rec,
8111 p_instance_rec => l_instance_rec,
8112 p_parties_tbl => l_parties_tbl,
8113 p_pty_accts_tbl => l_pty_accts_tbl,
8114 x_return_status => l_return_status,
8115 x_error_message => l_error_message);
8116 END IF;
8117
8118 IF l_return_status <> fnd_api.g_ret_sts_success THEN
8119 x_return_status := l_return_status;
8120 x_error_message := l_error_message;
8121 END IF;
8122
8123 END IF;
8124
8125 END LOOP;
8126
8127 END fix_isoreceipt;
8128
8129 PROCEDURE fix_intransitship(
8130 p_diag_txn_rec IN diag_txn_rec,
8131 x_return_status OUT nocopy varchar2,
8132 x_error_message OUT nocopy varchar2)
8133 IS
8134
8135 CURSOR stage_cur(p_mtl_txn_id in number, p_lot_code in number) IS
8136 SELECT mmt.inventory_item_id item_id,
8137 mmt.organization_id organization_id,
8138 mmt.subinventory_code subinv_code,
8139 mmt.locator_id locator_id,
8140 mmt.revision revision,
8141 to_char(null) lot_number,
8142 abs(mmt.primary_quantity) quantity,
8143 mmt.transaction_date mtl_txn_date,
8144 mmt.transaction_id mtl_txn_id,
8145 mmt.trx_source_line_id trx_source_line_id
8149 UNION
8146 FROM mtl_material_transactions mmt
8147 WHERE mmt.transaction_id = p_mtl_txn_id
8148 AND p_lot_code = 1
8150 SELECT mmt.inventory_item_id item_id,
8151 mmt.organization_id organization_id,
8152 mmt.subinventory_code subinv_code,
8153 mmt.locator_id locator_id,
8154 mmt.revision revision,
8155 mtln.lot_number lot_number,
8156 abs(mtln.primary_quantity) quantity,
8157 mmt.transaction_date mtl_txn_date,
8158 mmt.transaction_id mtl_txn_id,
8159 mmt.trx_source_line_id trx_source_line_id
8160 FROM mtl_material_transactions mmt,
8161 mtl_transaction_lot_numbers mtln
8162 WHERE mmt.transaction_id = p_mtl_txn_id
8163 AND mtln.transaction_id = mmt.transaction_id
8164 AND p_lot_code <> 1;
8165
8166 l_txn_rec csi_datastructures_pub.transaction_rec;
8167
8168 l_instance_rec csi_datastructures_pub.instance_rec;
8169 l_parties_tbl csi_datastructures_pub.party_tbl;
8170 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
8171 l_org_units_tbl csi_datastructures_pub.organization_units_tbl;
8172 l_ea_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
8173 l_pricing_tbl csi_datastructures_pub.pricing_attribs_tbl;
8174 l_assets_tbl csi_datastructures_pub.instance_asset_tbl;
8175 l_instance_ids_list csi_datastructures_pub.id_tbl;
8176
8177 l_internal_party_id number;
8178 l_intransit_location_id number;
8179
8180 l_src_serial_code number;
8181 l_src_lot_code number;
8182 l_primary_uom_code varchar2(8);
8183
8184 l_dest_serial_code number;
8185 l_dest_lot_code number;
8186
8187 l_instance_id number;
8188 l_quantity number;
8189 l_object_version_number number;
8190
8191 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
8192 l_error_message varchar2(2000);
8193 l_msg_data varchar2(2000);
8194 l_msg_count number;
8195
8196 BEGIN
8197
8198 x_return_status := fnd_api.g_ret_sts_success;
8199
8200 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
8201 csi_gen_utility_pvt.populate_install_param_rec;
8202 END IF;
8203 --
8204 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
8205 l_intransit_location_id := csi_datastructures_pub.g_install_param_rec.in_transit_location_id;
8206 --
8207 FOR inv_rec IN inv_cur (p_diag_txn_rec.mtl_txn_id)
8208 LOOP
8209
8210 SELECT serial_number_control_code,
8211 lot_control_code,
8212 primary_uom_code
8213 INTO l_src_serial_code,
8214 l_src_lot_code,
8215 l_primary_uom_code
8216 FROM mtl_system_items
8217 WHERE inventory_item_id = inv_rec.item_id
8218 AND organization_id = inv_rec.organization_id;
8219
8220 SELECT serial_number_control_code,
8221 lot_control_code
8222 INTO l_dest_serial_code,
8223 l_dest_lot_code
8224 FROM mtl_system_items
8225 WHERE inventory_item_id = inv_rec.item_id
8226 AND organization_id = inv_rec.xfer_organization_id;
8227
8228 l_txn_rec.transaction_id := fnd_api.g_miss_num;
8229 l_txn_rec.transaction_type_id := correction_txn_type_id;
8230 l_txn_rec.source_header_ref := 'DATAFIX';
8231 l_txn_rec.source_line_ref := p_diag_txn_rec.process_code;
8232 l_txn_rec.source_line_ref_id := inv_rec.trx_source_line_id;
8233 l_txn_rec.source_transaction_date := inv_rec.mtl_txn_date;
8234 l_txn_rec.transaction_date := inv_rec.mtl_txn_date;
8235
8236 IF l_src_serial_code in (2, 5) THEN
8237
8238 l_instance_rec.instance_id := nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num);
8239 l_instance_rec.location_type_code := 'INVENTORY';
8240 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
8241 l_instance_rec.inventory_item_id := inv_rec.item_id;
8242 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
8243 l_instance_rec.inv_organization_id := inv_rec.organization_id;
8244 l_instance_rec.quantity := 1;
8245 l_instance_rec.inv_subinventory_name := inv_rec.subinv_code;
8246 l_instance_rec.inv_locator_id := inv_rec.locator_id;
8247
8248 get_lot_number(
8249 p_lot_code => p_diag_txn_rec.lot_code,
8250 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
8251 p_serial_number => p_diag_txn_rec.serial_number,
8252 x_lot_number => l_instance_rec.lot_number);
8253
8254 l_instance_rec.inventory_revision := inv_rec.revision;
8255 l_instance_rec.vld_organization_id := inv_rec.organization_id;
8256 l_instance_rec.object_version_number := 1.0;
8257
8258 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
8259 IF p_diag_txn_rec.inst_id is not null THEN
8260 update_instance(
8261 p_txn_rec => l_txn_rec,
8265 x_return_status => l_return_status,
8262 p_instance_rec => l_instance_rec,
8263 p_parties_tbl => l_parties_tbl,
8264 p_pty_accts_tbl => l_pty_accts_tbl,
8266 x_error_message => l_error_message);
8267 ELSE
8268
8269 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
8270 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
8271 l_parties_tbl(1).party_id := l_internal_party_id;
8272 l_parties_tbl(1).relationship_type_code := 'OWNER';
8273 l_parties_tbl(1).contact_flag := 'N';
8274 l_parties_tbl(1).object_version_number := 1.0;
8275
8276 create_instance(
8277 p_txn_rec => l_txn_rec,
8278 p_instance_rec => l_instance_rec,
8279 p_parties_tbl => l_parties_tbl,
8280 p_pty_accts_tbl => l_pty_accts_tbl,
8281 x_return_status => l_return_status,
8282 x_error_message => l_error_message);
8283 END IF;
8284
8285 IF l_return_status <> fnd_api.g_ret_sts_success THEN
8286 x_return_status := l_return_status;
8287 x_error_message := l_error_message;
8288 END IF;
8289 ELSE
8290
8291 -- handle source
8292 FOR stage_rec IN stage_cur (inv_rec.mtl_txn_id, l_src_lot_code)
8293 LOOP
8294
8295 BEGIN
8296
8297 init_plsql_tables(
8298 px_instance_rec => l_instance_rec,
8299 px_parties_tbl => l_parties_tbl,
8300 px_pty_accts_tbl => l_pty_accts_tbl,
8301 px_org_units_tbl => l_org_units_tbl,
8302 px_ea_values_tbl => l_ea_values_tbl,
8303 px_pricing_tbl => l_pricing_tbl,
8304 px_assets_tbl => l_assets_tbl);
8305
8306 BEGIN
8307
8308 SELECT instance_id,
8309 quantity,
8310 object_version_number
8311 INTO l_instance_id,
8312 l_quantity,
8313 l_object_version_number
8314 FROM csi_item_instances
8315 WHERE location_type_code = 'INVENTORY'
8316 AND instance_usage_code = 'IN_INVENTORY'
8317 AND inventory_item_id = stage_rec.item_id
8318 AND inv_organization_id = stage_rec.organization_id
8319 AND inv_subinventory_name = stage_rec.subinv_code
8320 AND nvl(inv_locator_id,-9999) = nvl(stage_rec.locator_id,-9999)
8321 AND nvl(lot_number,'$$##$$') = nvl(stage_rec.lot_number,'$$##$$')
8322 AND nvl(inventory_revision,'$$##$$') = nvl(stage_rec.revision,'$$##$$')
8323 AND serial_number is null;
8324
8325 EXCEPTION
8326 WHEN no_data_found THEN
8327 l_instance_id := fnd_api.g_miss_num;
8328 WHEN too_many_rows THEN
8329 stack_message('Too many inventory instances for this non srl item.');
8330 raise fnd_api.g_exc_error;
8331 END;
8332
8333 IF nvl(l_instance_id,fnd_api.g_miss_num) <> fnd_api.g_miss_num THEN
8334
8335 l_instance_rec.instance_id := l_instance_id;
8336 l_instance_rec.quantity := l_quantity + stage_rec.quantity;
8337 l_instance_rec.object_version_number := l_object_version_number;
8338 l_instance_rec.active_end_date := null;
8339 l_instance_rec.instance_status_id := 3;
8340
8341 csi_item_instance_pub.update_item_instance(
8342 p_api_version => 1.0,
8343 p_commit => fnd_api.g_false,
8344 p_init_msg_list => fnd_api.g_true,
8345 p_validation_level => fnd_api.g_valid_level_full,
8346 p_instance_rec => l_instance_rec,
8347 p_party_tbl => l_parties_tbl,
8348 p_account_tbl => l_pty_accts_tbl,
8349 p_org_assignments_tbl => l_org_units_tbl,
8350 p_ext_attrib_values_tbl => l_ea_values_tbl,
8351 p_pricing_attrib_tbl => l_pricing_tbl,
8352 p_asset_assignment_tbl => l_assets_tbl,
8353 p_txn_rec => l_txn_rec,
8354 x_instance_id_lst => l_instance_ids_list,
8355 x_return_status => l_return_status,
8356 x_msg_count => l_msg_count,
8357 x_msg_data => l_msg_data);
8358
8359 log(' update_item_instance:nsrl: '||l_return_status);
8360
8361 -- For Bug 4057183
8362 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
8363 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
8364 raise fnd_api.g_exc_error;
8365 END IF;
8366
8367 ELSE
8368
8369 l_instance_rec.instance_id := fnd_api.g_miss_num;
8370 l_instance_rec.location_type_code := 'INVENTORY';
8371 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
8372 l_instance_rec.inventory_item_id := stage_rec.item_id;
8373 l_instance_rec.inv_organization_id := stage_rec.organization_id;
8377 l_instance_rec.inv_locator_id := stage_rec.locator_id;
8374 l_instance_rec.quantity := stage_rec.quantity;
8375 l_instance_rec.unit_of_measure := l_primary_uom_code;
8376 l_instance_rec.inv_subinventory_name := stage_rec.subinv_code;
8378 l_instance_rec.lot_number := stage_rec.lot_number;
8379 l_instance_rec.inventory_revision := stage_rec.revision;
8380 l_instance_rec.vld_organization_id := stage_rec.organization_id;
8381 l_instance_rec.object_version_number := 1.0;
8382
8383 SELECT nvl(mssi.location_id, haou.location_id)
8384 INTO l_instance_rec.location_id
8385 FROM mtl_secondary_inventories mssi,
8386 hr_all_organization_units haou
8387 WHERE mssi.organization_id = l_instance_rec.inv_organization_id
8388 AND mssi.secondary_inventory_name = l_instance_rec.inv_subinventory_name
8389 AND haou.organization_id = mssi.organization_id;
8390
8391 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
8392 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
8393 l_parties_tbl(1).party_id := l_internal_party_id;
8394 l_parties_tbl(1).relationship_type_code := 'OWNER';
8395 l_parties_tbl(1).contact_flag := 'N';
8396 l_parties_tbl(1).object_version_number := 1.0;
8397
8398 csi_item_instance_pub.create_item_instance(
8399 p_api_version => 1.0,
8400 p_commit => fnd_api.g_false,
8401 p_init_msg_list => fnd_api.g_true,
8402 p_validation_level => fnd_api.g_valid_level_full,
8403 p_instance_rec => l_instance_rec,
8404 p_party_tbl => l_parties_tbl,
8405 p_account_tbl => l_pty_accts_tbl,
8406 p_org_assignments_tbl => l_org_units_tbl,
8407 p_ext_attrib_values_tbl => l_ea_values_tbl,
8408 p_pricing_attrib_tbl => l_pricing_tbl,
8409 p_asset_assignment_tbl => l_assets_tbl,
8410 p_txn_rec => l_txn_rec,
8411 x_return_status => l_return_status,
8412 x_msg_count => l_msg_count,
8413 x_msg_data => l_msg_data );
8414
8415 log(' create_item_instance:nsrl: '||l_return_status);
8416
8417 -- For Bug 4057183
8418 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
8419 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
8420 raise fnd_api.g_exc_error;
8421 END IF;
8422
8423 END IF;
8424 EXCEPTION
8425 WHEN fnd_api.g_exc_error THEN
8426 x_return_status := fnd_api.g_ret_sts_error;
8427 x_error_message := csi_t_gen_utility_pvt.dump_error_stack;
8428 log(' error: '||x_error_message);
8429 END;
8430 END LOOP;
8431
8432 -- handle soi destination instance
8433 IF nvl(p_diag_txn_rec.inst_id,fnd_api.g_miss_num) <> fnd_api.g_miss_num THEN
8434 IF l_src_serial_code = 6 THEN
8435
8436 init_plsql_tables(
8437 px_instance_rec => l_instance_rec,
8438 px_parties_tbl => l_parties_tbl,
8439 px_pty_accts_tbl => l_pty_accts_tbl,
8440 px_org_units_tbl => l_org_units_tbl,
8441 px_ea_values_tbl => l_ea_values_tbl,
8442 px_pricing_tbl => l_pricing_tbl,
8443 px_assets_tbl => l_assets_tbl);
8444
8445 l_instance_rec.instance_id := p_diag_txn_rec.inst_id;
8446 l_instance_rec.location_type_code := 'INVENTORY';
8447 l_instance_rec.inv_organization_id := inv_rec.organization_id;
8448 l_instance_rec.inv_subinventory_name:= inv_rec.subinv_code;
8449
8450 SELECT nvl(mssi.location_id, haou.location_id)
8451 INTO l_instance_rec.location_id
8452 FROM mtl_secondary_inventories mssi,
8453 hr_all_organization_units haou
8454 WHERE mssi.organization_id = l_instance_rec.inv_organization_id
8455 AND mssi.secondary_inventory_name = l_instance_rec.inv_subinventory_name
8456 AND haou.organization_id = mssi.organization_id;
8457
8458 l_instance_rec.instance_usage_code := 'RETURNED';
8459 l_instance_rec.inventory_item_id := inv_rec.item_id;
8460 l_instance_rec.serial_number := p_diag_txn_rec.serial_number;
8461 l_instance_rec.mfg_serial_number_flag := 'Y';
8462 l_instance_rec.quantity := 1;
8463 l_instance_rec.inv_locator_id := inv_rec.locator_id;
8464 l_instance_rec.creation_complete_flag := 'N';
8465
8466 get_lot_number(
8467 p_lot_code => p_diag_txn_rec.lot_code,
8468 p_mtl_txn_id => p_diag_txn_rec.mtl_txn_id,
8469 p_serial_number => p_diag_txn_rec.serial_number,
8470 x_lot_number => l_instance_rec.lot_number);
8471
8472 l_instance_rec.inventory_revision := inv_rec.revision;
8473 l_instance_rec.vld_organization_id := inv_rec.organization_id;
8474
8475 l_txn_rec.inv_material_transaction_id := p_diag_txn_rec.mtl_txn_id;
8479 p_instance_rec => l_instance_rec,
8476
8477 update_instance(
8478 p_txn_rec => l_txn_rec,
8480 p_parties_tbl => l_parties_tbl,
8481 p_pty_accts_tbl => l_pty_accts_tbl,
8482 x_return_status => l_return_status,
8483 x_error_message => l_error_message);
8484
8485 IF l_return_status <> fnd_api.g_ret_sts_success THEN
8486 x_return_status := l_return_status;
8487 x_error_message := l_error_message;
8488 END IF;
8489
8490 END IF;
8491 END IF;
8492
8493 END IF;
8494 END LOOP;
8495
8496 END fix_intransitship;
8497
8498 PROCEDURE fix_all(
8499 p_diag_txn_rec IN diag_txn_rec)
8500 IS
8501 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
8502 l_error_message varchar2(2000);
8503 l_fixed boolean := FALSE;
8504 BEGIN
8505
8506 log(' '||p_diag_txn_rec.serial_number||
8507 ' '||p_diag_txn_rec.mtl_txn_id||
8508 ' '||p_diag_txn_rec.source_type||
8509 ' '||p_diag_txn_rec.process_code||
8510 ' '||p_diag_txn_rec.inst_id);
8511
8512 IF p_diag_txn_rec.process_code = 'SHIP' THEN
8513
8514 fix_shipment(
8515 p_diag_txn_rec => p_diag_txn_rec,
8516 x_return_status => l_return_status,
8517 x_error_message => l_error_message);
8518
8519 END IF;
8520
8521 IF p_diag_txn_rec.process_code = 'RMA' THEN
8522 fix_rma(
8523 p_diag_txn_rec => p_diag_txn_rec,
8524 x_return_status => l_return_status,
8525 x_error_message => l_error_message);
8526 END IF;
8527
8528 IF p_diag_txn_rec.process_code = 'WIPISSUE' THEN
8529 fix_wipissue(
8530 p_diag_txn_rec => p_diag_txn_rec,
8531 x_return_status => l_return_status,
8532 x_error_message => l_error_message);
8533 END IF;
8534
8535 IF p_diag_txn_rec.process_code = 'WIPRETURN' THEN
8536 fix_wipreturn(
8537 p_diag_txn_rec => p_diag_txn_rec,
8538 x_return_status => l_return_status,
8539 x_error_message => l_error_message);
8540 END IF;
8541
8542 IF p_diag_txn_rec.process_code = 'WIPCOMPL' THEN
8543 fix_wipcompletion(
8544 p_diag_txn_rec => p_diag_txn_rec,
8545 x_return_status => l_return_status,
8546 x_error_message => l_error_message);
8547 END IF;
8548
8549 IF p_diag_txn_rec.process_code = 'MISCISSUE' THEN
8550 fix_miscissue(
8551 p_diag_txn_rec => p_diag_txn_rec,
8552 x_return_status => l_return_status,
8553 x_error_message => l_error_message);
8554 END IF;
8555
8556 IF p_diag_txn_rec.process_code = 'MISCRCPT' THEN
8557 fix_miscreceipt(
8558 p_diag_txn_rec => p_diag_txn_rec,
8559 x_return_status => l_return_status,
8560 x_error_message => l_error_message);
8561 END IF;
8562
8563 IF p_diag_txn_rec.process_code = 'SIXFER' THEN
8564 fix_sixfer(
8565 p_diag_txn_rec => p_diag_txn_rec,
8566 x_return_status => l_return_status,
8567 x_error_message => l_error_message);
8568 END IF;
8569
8570 IF p_diag_txn_rec.process_code = 'PROJRCPT' THEN
8571 fix_projreceipt(
8572 p_diag_txn_rec => p_diag_txn_rec,
8573 x_return_status => l_return_status,
8574 x_error_message => l_error_message);
8575 END IF;
8576
8577 IF p_diag_txn_rec.process_code = 'IORGRCPT' THEN
8578 fix_interorgreceipt(
8579 p_diag_txn_rec => p_diag_txn_rec,
8580 x_return_status => l_return_status,
8581 x_error_message => l_error_message);
8582 END IF;
8583
8584 IF p_diag_txn_rec.process_code = 'ISORCPT' THEN
8585 fix_isoreceipt(
8586 p_diag_txn_rec => p_diag_txn_rec,
8587 x_return_status => l_return_status,
8588 x_error_message => l_error_message);
8589 END IF;
8590
8591 IF p_diag_txn_rec.process_code = 'INTRSHIP' THEN
8592 fix_intransitship(
8593 p_diag_txn_rec => p_diag_txn_rec,
8594 x_return_status => l_return_status,
8595 x_error_message => l_error_message);
8596 END IF;
8597
8598 IF l_return_status = fnd_api.g_ret_sts_success THEN
8599 UPDATE csi_diagnostics_temp
8600 SET process_flag = 'P'
8601 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
8602
8603 UPDATE csi_txn_errors
8604 SET processed_flag = 'R',
8605 last_update_date = sysdate,
8606 last_update_login = fnd_global.login_id,
8607 last_updated_by = fnd_global.user_id
8608 WHERE inv_material_transaction_id = p_diag_txn_rec.mtl_txn_id
8609 AND processed_flag = 'E';
8610 ELSE
8611 UPDATE csi_diagnostics_temp
8612 SET process_flag = 'E',
8613 temporary_message = l_error_message
8614 WHERE diag_seq_id = p_diag_txn_rec.diag_seq_id;
8615 END IF;
8616
8617 END fix_all;
8618
8619 PROCEDURE fix_srldata is
8620
8621 CURSOR process_cur is
8622 SELECT cdt.diag_seq_id,
8623 nvl(cdt.process_code,'NONE') process_code,
8624 cdt.mtl_txn_id,
8625 cdt.mtl_txn_date mtl_txn_date,
8629 cdt.csi_txn_id,
8626 cdt.serial_number,
8627 cdt.inventory_item_id,
8628 cdt.instance_id,
8630 cdt.csi_txn_type_id,
8631 cdt.wip_job_id,
8632 nvl(cdt.create_flag, 'N') create_flag,
8633 nvl(cdt.expire_flag, 'N') expire_flag,
8634 cdt.serial_control_code,
8635 cdt.lot_control_code,
8636 cdt.source_type,
8637 cdt.internal_party_id
8638 FROM csi_diagnostics_temp cdt
8639 WHERE nvl(cdt.process_flag ,'N') = 'M'; -- marked FOR processing
8640
8641 CURSOR reprocess_cur IS
8642 SELECT distinct mtl_txn_id
8643 FROM csi_diagnostics_temp
8644 WHERE process_flag = 'R';
8645
8646 l_diag_txn_rec diag_txn_rec;
8647
8648 BEGIN
8649
8650 -- stage the non serial instance quantity and update the returned serial instance
8651 stage_soiship_instances;
8652
8653 log(date_time_stamp||' begin fix_srldata');
8654
8655 FOR process_rec in process_cur
8656 LOOP
8657
8658 IF process_rec.process_code <> 'SOISHIP' THEN
8659
8660 l_diag_txn_rec.diag_seq_id := process_rec.diag_seq_id;
8661 l_diag_txn_rec.process_code := process_rec.process_code;
8662 l_diag_txn_rec.mtl_txn_id := process_rec.mtl_txn_id;
8663 l_diag_txn_rec.mtl_txn_date := process_rec.mtl_txn_date;
8664 l_diag_txn_rec.serial_number := process_rec.serial_number;
8665 l_diag_txn_rec.item_id := process_rec.inventory_item_id;
8666 l_diag_txn_rec.inst_id := process_rec.instance_id;
8667 l_diag_txn_rec.csi_txn_id := process_rec.csi_txn_id;
8668 l_diag_txn_rec.csi_txn_type_id := process_rec.csi_txn_type_id;
8669 l_diag_txn_rec.wip_job_id := process_rec.wip_job_id;
8670 l_diag_txn_rec.create_flag := process_rec.create_flag;
8671 l_diag_txn_rec.expire_flag := process_rec.expire_flag;
8672 l_diag_txn_rec.serial_code := process_rec.serial_control_code;
8673 l_diag_txn_rec.lot_code := process_rec.lot_control_code;
8674 l_diag_txn_rec.source_type := process_rec.source_type;
8675 l_diag_txn_rec.internal_party_id := process_rec.internal_party_id;
8676
8677 fix_all(
8678 p_diag_txn_rec => l_diag_txn_rec);
8679
8680 END IF;
8681
8682 END LOOP;
8683
8684 FOR reprocess_rec in reprocess_cur
8685 LOOP
8686 update csi_txn_errors
8687 SET processed_flag = 'R',
8688 last_update_date = sysdate,
8689 last_update_login = fnd_global.login_id,
8690 last_updated_by = fnd_global.user_id
8691 WHERE inv_material_transaction_id = reprocess_rec.mtl_txn_id
8692 AND processed_flag = 'E';
8693 END LOOP;
8694
8695 knock_the_rest;
8696
8697 log(date_time_stamp||' end fix_srldata');
8698
8699 END fix_srldata;
8700
8701 PROCEDURE get_rma_owner(
8702 p_serial_number in varchar2,
8703 p_inventory_item_id in number,
8704 p_organization_id in number,
8705 x_change_owner_flag out nocopy varchar2,
8706 x_owner_party_id out nocopy number,
8707 x_owner_account_id out nocopy number)
8708 IS
8709
8710 CURSOR rma_txn_cur(
8711 p_serial in varchar2,
8712 p_item_id in number,
8713 p_freeze_date in date)
8714 IS
8715 SELECT mmt.creation_date mtl_creation_date,
8716 mut.transaction_id mtl_txn_id,
8717 mut.transaction_date mtl_txn_date,
8718 mmt.trx_source_line_id rma_line_id
8719 FROM mtl_unit_transactions mut,
8720 mtl_material_transactions mmt
8721 WHERE mut.serial_number = p_serial
8722 AND mut.inventory_item_id = p_item_id
8723 AND mut.transaction_date > p_freeze_date
8724 AND mmt.transaction_id = mut.transaction_id
8725 AND mmt.transaction_type_id = 15
8726 UNION
8727 SELECT mmt.creation_date mtl_creation_date,
8728 mtln.transaction_id mtl_txn_id,
8729 mtln.transaction_date mtl_txn_date,
8730 mmt.trx_source_line_id rma_line_id
8731 FROM mtl_unit_transactions mut,
8732 mtl_transaction_lot_numbers mtln,
8733 mtl_material_transactions mmt
8734 WHERE mut.serial_number = p_serial
8735 AND mut.inventory_item_id = p_item_id
8736 AND mtln.serial_transaction_id = mut.transaction_id
8737 AND mtln.transaction_date > p_freeze_date
8738 AND mmt.transaction_id = mtln.transaction_id
8739 AND mmt.transaction_type_id = 15
8740 ORDER by 1 desc, 2 desc;
8741
8742 CURSOR tld_cur(p_rma_line_id in number) is
8743 SELECT ctld.sub_type_id
8744 FROM csi_t_transaction_lines ctl,
8745 csi_t_txn_line_details ctld
8746 WHERE ctl.source_transaction_table = 'OE_ORDER_LINES_ALL'
8747 AND ctl.source_transaction_type_id = 53
8748 AND ctl.source_transaction_id = p_rma_line_id
8749 AND ctld.transaction_line_id = ctl.transaction_line_id
8750 AND ctld.source_transaction_flag = 'Y';
8751
8755 l_owner_party_id number;
8752 l_dflt_sub_type_id number;
8753 l_rma_line_id number;
8754 l_sub_type_id number;
8756 l_owner_account_id number;
8757 l_change_owner_flag varchar2(1) := 'Y';
8758
8759 l_freeze_date date;
8760
8761 BEGIN
8762
8763 SELECT sub_type_id
8764 INTO l_dflt_sub_type_id
8765 FROM csi_txn_sub_types
8766 WHERE transaction_type_id = 53
8767 AND default_flag = 'Y';
8768 --
8769 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
8770 csi_gen_utility_pvt.populate_install_param_rec;
8771 END IF;
8772 --
8773 l_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
8774
8775 l_change_owner_flag := 'Y';
8776 l_rma_line_id := null;
8777 l_sub_type_id := null;
8778 l_owner_party_id := null;
8779 l_owner_account_id := null;
8780
8781 FOR rma_txn_rec in rma_txn_cur (
8782 p_serial => p_serial_number,
8783 p_item_id => p_inventory_item_id,
8784 p_freeze_date => l_freeze_date)
8785 LOOP
8786 l_rma_line_id := rma_txn_rec.rma_line_id;
8787 exit;
8788 END LOOP;
8789
8790 IF l_rma_line_id is not null THEN
8791
8792 FOR tld_rec in tld_cur(l_rma_line_id)
8793 LOOP
8794 l_sub_type_id := tld_rec.sub_type_id;
8795 exit;
8796 END LOOP;
8797
8798 IF l_sub_type_id is not null THEN
8799 null;
8800 ELSE
8801 l_sub_type_id := l_dflt_sub_type_id;
8802 END IF;
8803
8804 SELECT nvl(src_change_owner, 'N')
8805 INTO l_change_owner_flag
8806 FROM csi_txn_sub_types
8807 WHERE transaction_type_id = 53
8808 AND sub_type_id = l_sub_type_id;
8809
8810
8811 IF l_change_owner_flag = 'N' THEN
8812
8813 SELECT nvl(oel.sold_to_org_id, oeh.sold_to_org_id)
8814 INTO l_owner_account_id
8815 FROM oe_order_lines_all oel,
8816 oe_order_headers_all oeh
8817 WHERE oel.line_id = l_rma_line_id
8818 AND oeh.header_id = oel.header_id;
8819
8820 SELECT party_id
8821 INTO l_owner_party_id
8822 FROM hz_cust_accounts
8823 WHERE cust_account_id = l_owner_account_id;
8824
8825 END IF;
8826
8827 END IF;
8828
8829 x_change_owner_flag := l_change_owner_flag;
8830 x_owner_party_id := l_owner_party_id;
8831 x_owner_account_id := l_owner_account_id;
8832
8833 END get_rma_owner;
8834
8835
8836 /* routine to sync inventory and instances */
8837 PROCEDURE sync_inv_serials IS
8838
8839 CURSOR inv_srl_cur IS
8840 SELECT msn.serial_number serial_number,
8841 msn.inventory_item_id inventory_item_id,
8842 msn.current_organization_id organization_id,
8843 msn.revision revision,
8844 msn.current_subinventory_code subinventory_code,
8845 msn.current_locator_id locator_id,
8846 msn.lot_number lot_number,
8847 msi.primary_uom_code uom_code,
8848 msi.serial_number_control_code serial_code,
8849 msi.lot_control_code lot_code
8850 FROM mtl_system_items msi,
8851 mtl_serial_numbers msn
8852 WHERE msi.inventory_item_id = msn.inventory_item_id
8853 AND msi.organization_id = msn.current_organization_id
8854 AND msi.serial_number_control_code in (2,5)
8855 AND msn.current_status = 3
8856 AND EXISTS (
8857 SELECT '1'
8858 FROM mtl_parameters mp,
8859 mtl_system_items msi_mast
8860 WHERE mp.organization_id = msi.organization_id
8861 AND msi_mast.inventory_item_id = msi.inventory_item_id
8862 AND msi_mast.organization_id = mp.master_organization_id
8863 AND nvl(msi_mast.comms_nl_trackable_flag,'N') = 'Y')
8864 AND EXISTS (
8865 SELECT '1'
8866 FROM mtl_onhand_quantities moq
8867 WHERE moq.inventory_item_id = msn.inventory_item_id
8868 AND moq.organization_id = msn.current_organization_id
8869 AND moq.subinventory_code = msn.current_subinventory_code
8870 AND nvl(moq.locator_id,-999) = nvl(msn.current_locator_id,-999)
8871 AND nvl(moq.lot_number,'$#$') = nvl(msn.lot_number,'$#$')
8872 AND nvl(moq.revision,'$#$') = nvl(msn.revision,'$#$') );
8873
8874 l_release varchar2(80);
8875
8876 l_internal_party_id number;
8877 l_instance varchar2(30);
8878 l_instance_found boolean := TRUE;
8879 l_not_the_same boolean := TRUE;
8880
8881 l_instance_rec csi_datastructures_pub.instance_rec;
8882 l_parties_tbl csi_datastructures_pub.party_tbl;
8883 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
8884 l_org_units_tbl csi_datastructures_pub.organization_units_tbl;
8885 l_ea_values_tbl csi_datastructures_pub.extend_attrib_values_tbl;
8886 l_pricing_tbl csi_datastructures_pub.pricing_attribs_tbl;
8890 l_freeze_date date;
8887 l_assets_tbl csi_datastructures_pub.instance_asset_tbl;
8888 l_instance_ids_list csi_datastructures_pub.id_tbl;
8889 l_txn_rec csi_datastructures_pub.transaction_rec;
8891 l_latest_txn boolean := TRUE;
8892 l_pending_msg_found varchar2(1);
8893 l_pending_err_found varchar2(1);
8894
8895 l_owner_party_id number;
8896 l_owner_account_id number;
8897 l_change_owner_flag varchar2(1);
8898 l_txn_is_in_csi varchar2(1);
8899 l_fs_found varchar2(1);
8900
8901 skip_serial exception;
8902
8903 l_error_message varchar2(2000);
8904 l_msg_data varchar2(2000);
8905 l_msg_count number;
8906 l_return_status varchar2(1);
8907
8908 l_skip_error varchar2(2000);
8909
8910 BEGIN
8911
8912 decode_queue;
8913
8914 SELECT fnd_Profile.value('csi_upgrading_from_release')
8915 INTO l_release
8916 FROM sys.dual;
8917 --
8918 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
8919 csi_gen_utility_pvt.populate_install_param_rec;
8920 END IF;
8921 --
8922 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
8923 l_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
8924
8925 FOR srl_rec IN inv_srl_cur
8926 LOOP
8927
8928 BEGIN
8929
8930 init_plsql_tables(
8931 px_instance_rec => l_instance_rec,
8932 px_parties_tbl => l_parties_tbl,
8933 px_pty_accts_tbl => l_pty_accts_tbl,
8934 px_org_units_tbl => l_org_units_tbl,
8935 px_ea_values_tbl => l_ea_values_tbl,
8936 px_pricing_tbl => l_pricing_tbl,
8937 px_assets_tbl => l_assets_tbl);
8938
8939 BEGIN
8940
8941 SELECT 'Y'
8942 INTO l_fs_found
8943 FROM csi_ii_forward_sync_temp
8944 WHERE inventory_item_id = srl_rec.inventory_item_id
8945 AND serial_number = srl_rec.serial_number
8946 AND process_flag <> 'P';
8947
8948 l_skip_error := 'serial awaiting to be forward synched';
8949 RAISE skip_serial;
8950
8951 EXCEPTION
8952 WHEN no_data_found THEN
8953 null;
8954 END;
8955
8956 l_instance_rec.instance_id := fnd_api.g_miss_num;
8957 l_instance_rec.inventory_item_id := srl_rec.inventory_item_id;
8958 l_instance_rec.serial_number := srl_rec.serial_number;
8959 l_instance_rec.lot_number := srl_rec.lot_number;
8960 l_instance_rec.mfg_serial_number_flag := 'Y';
8961 l_instance_rec.quantity := 1;
8962 l_instance_rec.unit_of_measure := srl_rec.uom_code;
8963
8964 l_instance_rec.vld_organization_id := srl_rec.organization_id;
8965 l_instance_rec.inv_organization_id := srl_rec.organization_id;
8966 l_instance_rec.inv_subinventory_name := srl_rec.subinventory_code;
8967 l_instance_rec.inv_locator_id := srl_rec.locator_id;
8968 l_instance_rec.inventory_revision := srl_rec.revision;
8969
8970 l_instance_rec.location_type_code := 'INVENTORY';
8971 l_instance_rec.instance_usage_code := 'IN_INVENTORY';
8972
8973 -- get inv location id from the subinv/org definition
8974 BEGIN
8975 SELECT location_id
8976 INTO l_instance_rec.location_id
8977 FROM mtl_secondary_inventories
8978 WHERE secondary_inventory_name = l_instance_rec.inv_subinventory_name
8979 AND organization_id = l_instance_rec.vld_organization_id;
8980
8981 IF l_instance_rec.location_id is null THEN
8982 SELECT location_id
8983 INTO l_instance_rec.location_id
8984 FROM hr_all_organization_units
8985 WHERE organization_id = l_instance_rec.vld_organization_id;
8986 END IF;
8987 END;
8988
8989 BEGIN
8990 SELECT instance_id ,
8991 object_version_number
8992 INTO l_instance_rec.instance_id,
8993 l_instance_rec.object_version_number
8994 FROM csi_item_instances
8995 WHERE inventory_item_id = srl_rec.inventory_item_id
8996 AND serial_number = srl_rec.serial_number;
8997
8998 l_instance := to_char(l_instance_rec.instance_id);
8999 l_instance_found := TRUE;
9000 EXCEPTION
9001 WHEN no_data_found THEN
9002 l_instance := 'NONE';
9003 l_instance_found := FALSE;
9004 WHEN too_many_rows THEN
9005 l_instance_found := TRUE;
9006 l_skip_error := ' Too Many Instances for this serial number';
9007 raise skip_serial;
9008 END;
9009
9010 IF l_instance_found THEN
9011 -- check if the instance inv location attributes are the same as the serial attribute
9012 l_not_the_same := not_the_same(l_instance_rec);
9013 END IF;
9014
9015 -- fixable candidates (no serial found or not the same)
9016 IF l_not_the_same OR NOT(l_instance_found) THEN
9017
9018 log(fill(srl_rec.serial_number, 15)||
9022 fill(to_char(srl_rec.lot_code), 2)||
9019 fill(to_char(srl_rec.inventory_item_id), 9)||
9020 fill(to_char(srl_rec.organization_id), 9)||
9021 fill(to_char(srl_rec.serial_code), 2)||
9023 fill(l_instance,9));
9024
9025 IF l_not_the_same AND l_instance_found THEN
9026 dump_diff(l_instance_rec);
9027 END IF;
9028
9029 /* loop thru all the material transactions after freeze date and check if
9030 there is any pending in xnp_msgs.
9031
9032 also check if there is any errors in csi_txn_errors. if found then skip
9033 the serial.
9034 */
9035
9036 l_latest_txn := TRUE;
9037
9038 l_txn_rec.transaction_id := fnd_api.g_miss_num;
9039 l_txn_rec.transaction_type_id := correction_txn_type_id;
9040 l_txn_rec.source_header_ref := 'DATAFIX';
9041 l_txn_rec.source_line_ref := 'SRLSYNC';
9042 l_txn_rec.source_transaction_date := sysdate;
9043 l_txn_rec.transaction_date := sysdate;
9044
9045 FOR all_txn_rec in all_txn_cur (
9046 p_serial_number => srl_rec.serial_number,
9047 p_item_id => srl_rec.inventory_item_id)
9048 LOOP
9049
9050 IF all_txn_rec.mtl_txn_date > l_freeze_date THEN
9051
9052 IF csi_inv_trxs_pkg.valid_ib_txn(all_txn_rec.mtl_txn_id) THEN
9053
9054 IF l_latest_txn THEN
9055
9056 log(' latest mtl_txn_id : '||all_txn_rec.mtl_txn_id);
9057
9058 l_txn_rec.source_transaction_date := all_txn_rec.mtl_txn_date;
9059 l_txn_rec.transaction_date := all_txn_rec.mtl_txn_date;
9060
9061 BEGIN
9062 SELECT 'X' INTO l_txn_is_in_csi
9063 FROM sys.dual
9064 WHERE exists (
9065 SELECT 'Y' FROM csi_transactions
9066 WHERE inv_material_transaction_id = all_txn_rec.mtl_txn_id);
9067 l_txn_rec.inv_material_transaction_id := null;
9068 EXCEPTION
9069 WHEN no_data_found THEN
9070 l_txn_rec.inv_material_transaction_id := all_txn_rec.mtl_txn_id;
9071 END;
9072
9073 l_latest_txn := FALSE;
9074
9075 END IF;
9076
9077 BEGIN
9078 SELECT 'Y' INTO l_pending_msg_found
9079 FROM sys.dual
9080 WHERE exists (
9081 SELECT '1'
9082 FROM csi_xnp_msgs_temp
9083 WHERE source_type = 'MTL_TRANSACTION_ID'
9084 AND source_id = all_txn_rec.mtl_txn_id
9085 AND nvl(msg_status, 'READY') <> 'PROCESSED');
9086
9087 l_skip_error := ' Unprocessed Message in XNP_MSGS for MTL_TXN_ID: '||
9088 all_txn_rec.mtl_txn_id;
9089 RAISE skip_serial;
9090
9091 EXCEPTION
9092 WHEN no_data_found THEN
9093 null;
9094 END;
9095
9096 BEGIN
9097 IF all_txn_rec.mtl_action_id in (2,3,28) THEN
9098
9099 SELECT 'Y' INTO l_pending_err_found
9100 FROM sys.dual
9101 WHERE exists (
9102 SELECT '1'
9103 FROM csi_txn_errors
9104 WHERE (inv_material_transaction_id = all_txn_rec.mtl_txn_id
9105 OR
9106 inv_material_transaction_id = all_txn_rec.mtl_txn_id)
9107 AND processed_flag in ('E', 'R'));
9108
9109 ELSE
9110
9111 SELECT 'Y' INTO l_pending_err_found
9112 FROM sys.dual
9113 WHERE exists (
9114 SELECT '1'
9115 FROM csi_txn_errors
9116 WHERE inv_material_transaction_id = all_txn_rec.mtl_txn_id
9117 AND processed_flag in ('E', 'R'));
9118
9119 END IF;
9120 l_skip_error := ' Pending Error in CSI_TXN_ERRORS for MTL_TXN_ID: '||
9121 all_txn_rec.mtl_txn_id;
9122 RAISE skip_serial;
9123
9124 EXCEPTION
9125 WHEN no_data_found THEN
9126 null;
9127 END;
9128
9129 END IF; -- valid ib txb
9130 END IF; -- > freeze_date
9131
9132 END LOOP;
9133
9134 l_change_owner_flag := 'Y';
9135 l_owner_party_id := null;
9136 l_owner_account_id := null;
9137
9138 get_rma_owner(
9139 p_serial_number => srl_rec.serial_number,
9140 p_inventory_item_id => srl_rec.inventory_item_id,
9141 p_organization_id => srl_rec.organization_id,
9142 x_change_owner_flag => l_change_owner_flag,
9143 x_owner_party_id => l_owner_party_id,
9144 x_owner_account_id => l_owner_account_id);
9145
9146 IF l_change_owner_flag = 'Y' THEN
9147 l_owner_party_id := l_internal_party_id;
9148 END IF;
9149
9153
9150 log(' Change Owner : '||l_change_owner_flag);
9151 log(' Owner Party ID : '||l_owner_party_id);
9152 log(' Owner Account ID: '||l_owner_account_id);
9154 IF l_change_owner_flag = 'Y' THEN
9155 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
9156 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
9157 l_parties_tbl(1).party_id := l_internal_party_id;
9158 l_parties_tbl(1).relationship_type_code := 'OWNER';
9159 l_parties_tbl(1).contact_flag := 'N';
9160 l_parties_tbl(1).object_version_number := 1.0;
9161 ELSE
9162 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
9163 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
9164 l_parties_tbl(1).party_id := l_owner_party_id;
9165 l_parties_tbl(1).relationship_type_code := 'OWNER';
9166 l_parties_tbl(1).contact_flag := 'N';
9167 l_parties_tbl(1).object_version_number := 1.0;
9168
9169 l_pty_accts_tbl(1).ip_account_id := fnd_api.g_miss_num;
9170 l_pty_accts_tbl(1).party_account_id := l_owner_account_id;
9171 l_pty_accts_tbl(1).relationship_type_code := 'OWNER';
9172 l_pty_accts_tbl(1).bill_to_address := fnd_api.g_miss_num;
9173 l_pty_accts_tbl(1).ship_to_address := fnd_api.g_miss_num;
9174 l_pty_accts_tbl(1).instance_party_id := fnd_api.g_miss_num;
9175 l_pty_accts_tbl(1).parent_tbl_index := 1;
9176
9177 END IF;
9178
9179 IF l_instance_found THEN
9180
9181 SELECT instance_party_id,
9182 object_version_number
9183 INTO l_parties_tbl(1).instance_party_id,
9184 l_parties_tbl(1).object_version_number
9185 FROM csi_i_parties
9186 WHERE instance_id = l_instance_rec.instance_id
9187 AND relationship_type_code = 'OWNER';
9188
9189 log(' csi_process_txn_pvt.check_and_break_relation');
9190
9191 -- qualifieis for update
9192 csi_process_txn_pvt.check_and_break_relation(
9193 p_instance_id => l_instance_rec.instance_id,
9194 p_csi_txn_rec => l_txn_rec,
9195 x_return_status => l_return_status);
9196
9197 SELECT object_version_number
9198 INTO l_instance_rec.object_version_number
9199 FROM csi_item_instances
9200 WHERE instance_id = l_instance_rec.instance_id;
9201
9202 log(' csi_item_instance_pub.update_item_instance');
9203
9204 csi_item_instance_pub.update_item_instance(
9205 p_api_version => 1.0,
9206 p_commit => fnd_api.g_false,
9207 p_init_msg_list => fnd_api.g_true,
9208 p_validation_level => fnd_api.g_valid_level_full,
9209 p_instance_rec => l_instance_rec,
9210 p_party_tbl => l_parties_tbl,
9211 p_account_tbl => l_pty_accts_tbl,
9212 p_org_assignments_tbl => l_org_units_tbl,
9213 p_ext_attrib_values_tbl => l_ea_values_tbl,
9214 p_pricing_attrib_tbl => l_pricing_tbl,
9215 p_asset_assignment_tbl => l_assets_tbl,
9216 p_txn_rec => l_txn_rec,
9217 x_instance_id_lst => l_instance_ids_list,
9218 x_return_status => l_return_status,
9219 x_msg_count => l_msg_count,
9220 x_msg_data => l_msg_data);
9221
9222 -- For Bug 4057183
9223 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
9224 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
9225 raise fnd_api.g_exc_error;
9226 END IF;
9227
9228 ELSE -- instance not found
9229
9230 log(' csi_item_instance_pub.create_item_instance');
9231
9232 csi_item_instance_pub.create_item_instance(
9233 p_api_version => 1.0,
9234 p_commit => fnd_api.g_false,
9235 p_init_msg_list => fnd_api.g_true,
9236 p_validation_level => fnd_api.g_valid_level_full,
9237 p_instance_rec => l_instance_rec,
9238 p_party_tbl => l_parties_tbl,
9239 p_account_tbl => l_pty_accts_tbl,
9240 p_org_assignments_tbl => l_org_units_tbl,
9241 p_ext_attrib_values_tbl => l_ea_values_tbl,
9242 p_pricing_attrib_tbl => l_pricing_tbl,
9243 p_asset_assignment_tbl => l_assets_tbl,
9244 p_txn_rec => l_txn_rec,
9245 x_return_status => l_return_status,
9246 x_msg_count => l_msg_count,
9247 x_msg_data => l_msg_data );
9248
9249 -- For Bug 4057183
9250 -- IF l_return_status <> fnd_api.g_ret_sts_success THEN
9251 IF l_return_status not in (fnd_api.g_ret_sts_success,'W') THEN
9252 raise fnd_api.g_exc_error;
9253 END IF;
9254
9255 END IF;
9256
9257 END IF;
9258 EXCEPTION
9259 WHEN skip_serial THEN
9260 log(fill(srl_rec.serial_number, 15)||
9264 fill(to_char(srl_rec.lot_code), 2));
9261 fill(to_char(srl_rec.inventory_item_id), 9)||
9262 fill(to_char(srl_rec.organization_id), 9)||
9263 fill(to_char(srl_rec.serial_code), 2)||
9265 log(l_skip_error);
9266 WHEN fnd_api.g_exc_error THEN
9267 l_error_message := csi_t_gen_utility_pvt.dump_error_stack;
9268 log(fill(srl_rec.serial_number, 15)||
9269 fill(to_char(srl_rec.inventory_item_id), 9)||
9270 fill(to_char(srl_rec.organization_id), 9)||
9271 fill(to_char(srl_rec.serial_code), 2)||
9272 fill(to_char(srl_rec.lot_code), 2));
9273 log(' Error : '||l_error_message);
9274 END;
9275
9276 IF mod(inv_srl_cur%rowcount,100) = 0 THEN
9277 commit;
9278 END IF;
9279
9280 END LOOP;
9281
9282 END sync_inv_serials;
9283 --
9284 PROCEDURE Get_Next_Level
9285 (p_object_id IN NUMBER,
9286 p_rel_tbl OUT NOCOPY csi_datastructures_pub.ii_relationship_tbl
9287 ) IS
9288 --
9289 l_rel_type_code VARCHAR2(30) := 'COMPONENT-OF';
9290 --
9291 CURSOR REL_CUR IS
9292 select relationship_id,relationship_type_code,object_id,subject_id,position_reference,
9293 active_start_date,active_end_date,display_order,mandatory_flag,context,
9294 attribute1,attribute2,attribute3,attribute4,attribute5,attribute6,attribute7,attribute8,
9295 attribute9,attribute10,attribute11,attribute12,attribute13,attribute14,attribute15,
9296 object_version_number
9297 from CSI_II_RELATIONSHIPS cir
9298 where cir.object_id = p_object_id
9299 and cir.relationship_type_code = l_rel_type_code
9300 and ((cir.active_end_date is null) or (cir.active_end_date > sysdate))
9301 and EXISTS (select 'x'
9302 from CSI_ITEM_INSTANCES cii
9303 where cii.instance_id = cir.subject_id
9304 and ((active_end_date is null) or (active_end_date > sysdate)));
9305 --
9306 l_ctr NUMBER := 0;
9307 BEGIN
9308 FOR rel in REL_CUR LOOP
9309 l_ctr := l_ctr + 1;
9310 p_rel_tbl(l_ctr).relationship_id := rel.relationship_id;
9311 p_rel_tbl(l_ctr).relationship_type_code := rel.relationship_type_code;
9312 p_rel_tbl(l_ctr).object_id := rel.object_id;
9313 p_rel_tbl(l_ctr).subject_id := rel.subject_id;
9314 p_rel_tbl(l_ctr).position_reference := rel.position_reference;
9315 p_rel_tbl(l_ctr).active_start_date := rel.active_start_date;
9316 p_rel_tbl(l_ctr).active_end_date := rel.active_end_date;
9317 p_rel_tbl(l_ctr).display_order := rel.display_order;
9318 p_rel_tbl(l_ctr).mandatory_flag := rel.mandatory_flag;
9319 p_rel_tbl(l_ctr).context := rel.context;
9320 p_rel_tbl(l_ctr).attribute1 := rel.attribute1;
9321 p_rel_tbl(l_ctr).attribute2 := rel.attribute2;
9322 p_rel_tbl(l_ctr).attribute3 := rel.attribute3;
9323 p_rel_tbl(l_ctr).attribute4 := rel.attribute4;
9324 p_rel_tbl(l_ctr).attribute5 := rel.attribute5;
9325 p_rel_tbl(l_ctr).attribute6 := rel.attribute6;
9326 p_rel_tbl(l_ctr).attribute7 := rel.attribute7;
9327 p_rel_tbl(l_ctr).attribute8 := rel.attribute8;
9328 p_rel_tbl(l_ctr).attribute9 := rel.attribute9;
9329 p_rel_tbl(l_ctr).attribute10 := rel.attribute10;
9330 p_rel_tbl(l_ctr).attribute11 := rel.attribute11;
9331 p_rel_tbl(l_ctr).attribute12 := rel.attribute12;
9332 p_rel_tbl(l_ctr).attribute13 := rel.attribute13;
9333 p_rel_tbl(l_ctr).attribute14 := rel.attribute14;
9334 p_rel_tbl(l_ctr).attribute15 := rel.attribute15;
9335 p_rel_tbl(l_ctr).object_version_number := rel.object_version_number;
9336 END LOOP;
9337 END Get_Next_Level;
9338 --
9339 PROCEDURE missing_mtl_txn_id_in_csi IS
9340
9341 TYPE NumTabType is varray(10000) of number;
9342
9343 l_csi_txn_id_tab NumTabType;
9344 l_rma_line_id_tab NumTabType;
9345 l_mtl_txn_id_tab NumTabType;
9346
9347 MAX_BUFFER_SIZE number := 1000;
9348
9349 CURSOR rma_txn_cur IS
9350 SELECT transaction_id,
9351 source_line_ref_id,
9352 inv_material_transaction_id
9353 FROM csi_transactions
9354 WHERE transaction_type_id = 53
9355 AND inv_material_transaction_id is null;
9356
9357 l_inventory_item_id number;
9358 l_organization_id number;
9359 l_mtl_txn_id number;
9360
9361 CURSOR mmt_cur(p_line_id in number, p_item_id in number, p_organization_id in number) IS
9362 SELECT transaction_id
9363 FROM mtl_material_transactions
9364 WHERE transaction_type_id = 15 -- RMA Transaction
9365 AND inventory_item_id = p_item_id
9366 AND organization_id = p_organization_id
9367 AND trx_source_line_id = p_line_id
9368 order by creation_date desc, transaction_id desc;
9369
9370 BEGIN
9371
9372 OPEN rma_txn_cur;
9373 LOOP
9374
9375 FETCH rma_txn_cur BULK COLLECT
9376 INTO l_csi_txn_id_tab,
9377 l_rma_line_id_tab,
9378 l_mtl_txn_id_tab
9379 LIMIT MAX_BUFFER_SIZE;
9380
9381 FOR ind IN 1 .. l_csi_txn_id_tab.COUNT
9382 LOOP
9383
9384 IF l_rma_line_id_tab(ind) is not null THEN
9385
9386 SELECT inventory_item_id,
9387 ship_from_org_id
9388 INTO l_inventory_item_id,
9389 l_organization_id
9393 l_mtl_txn_id := null;
9390 FROM oe_order_lines_all
9391 WHERE line_id = l_rma_line_id_tab(ind);
9392
9394
9395 FOR mmt_rec IN mmt_cur(l_rma_line_id_tab(ind), l_inventory_item_id, l_organization_id)
9396 LOOP
9397 l_mtl_txn_id := mmt_rec.transaction_id;
9398 exit;
9399 END LOOP;
9400
9401 IF l_mtl_txn_id is not null THEN
9402 l_mtl_txn_id_tab(ind) := l_mtl_txn_id;
9403 END IF;
9404
9405 END IF;
9406 END LOOP;
9407
9408 FORALL u_ind in 1 .. l_csi_txn_id_tab.count
9409 UPDATE csi_transactions
9410 SET inv_material_transaction_id = l_mtl_txn_id_tab(u_ind)
9411 WHERE transaction_id = l_csi_txn_id_tab(u_ind);
9412
9413 commit;
9414
9415 EXIT when rma_txn_cur%NOTFOUND;
9416
9417 END LOOP;
9418
9419 commit;
9420
9421 IF rma_txn_cur%ISOPEN THEN
9422 CLOSE rma_txn_cur;
9423 END IF;
9424
9425 END missing_mtl_txn_id_in_csi;
9426
9427 --
9428 --
9429 PROCEDURE Delete_Dup_Srl_Inv_Instance IS
9430 CURSOR CHECK_CUR IS
9431 select count(*)
9432 from CSI_ITEM_INSTANCES
9433 where location_type_code = 'INVENTORY'
9434 and instance_usage_code = 'IN_INVENTORY'
9435 and creation_date = last_update_date
9436 and serial_number is not null
9437 and lot_number is null
9438 group by inventory_item_id,serial_number
9439 having count(*) > 1 ;
9440 --
9441 CURSOR CSI_CUR(p_min IN NUMBER,p_max IN NUMBER) IS
9442 select instance_id,
9443 inventory_item_id,
9444 inv_organization_id,
9445 inventory_revision,
9446 inv_subinventory_name,
9447 inv_locator_id,
9448 serial_number,
9449 last_update_date
9450 from csi_item_instances
9451 where instance_id between p_min and p_max
9452 and serial_number is not null
9453 and lot_number is null
9454 and location_type_code = 'INVENTORY'
9455 and instance_usage_code = 'IN_INVENTORY'
9456 and migrated_flag = 'Y'
9457 and mfg_serial_number_flag = 'Y'
9458 and last_update_date = creation_date;
9459 --
9460 CURSOR MIN_CSI IS
9461 select min(instance_id)
9462 from csi_item_instances
9463 where serial_number is not null
9464 and lot_number is null
9465 and location_type_code = 'INVENTORY'
9466 and instance_usage_code = 'IN_INVENTORY'
9467 and migrated_flag = 'Y'
9468 and mfg_serial_number_flag = 'Y'
9469 and last_update_date = creation_date;
9470 --
9471 CURSOR MAX_CSI IS
9472 select max(instance_id)
9473 from csi_item_instances
9474 where serial_number is not null
9475 and lot_number is null
9476 and location_type_code = 'INVENTORY'
9477 and instance_usage_code = 'IN_INVENTORY'
9478 and migrated_flag = 'Y'
9479 and mfg_serial_number_flag = 'Y'
9480 and last_update_date = creation_date;
9481 --
9482 CURSOR TXN_CUR(p_instance_id IN NUMBER) IS
9483 SELECT transaction_id
9484 from CSI_INST_TRANSACTIONS_V
9485 where instance_id = p_instance_id;
9486 --
9487 TYPE NUMLIST is TABLE of NUMBER INDEX BY BINARY_INTEGER;
9488 l_instance_tbl NUMLIST;
9489 l_txn_tbl NUMLIST;
9490 --
9491 v_min NUMBER;
9492 v_max NUMBER;
9493 v_low NUMBER;
9494 v_high NUMBER;
9495 v_batch NUMBER := nvl(FND_PROFILE.VALUE('CS_UPG_BATCHSIZE'),100);
9496 v_start NUMBER;
9497 v_end NUMBER;
9498 v_diff NUMBER;
9499 v_batch_counter NUMBER := 0;
9500 v_ins_count NUMBER := 0;
9501 v_txn_count NUMBER := 0;
9502 v_commit_counter NUMBER := 0;
9503 v_subinv VARCHAR2(10);
9504 v_locator_id NUMBER;
9505 v_revision VARCHAR2(3);
9506 v_org_id NUMBER;
9507 v_recount NUMBER;
9508 --
9509 Process_next EXCEPTION;
9510 comp_error EXCEPTION;
9511 BEGIN
9512 v_recount := 0;
9513 OPEN CHECK_CUR;
9514 FETCH CHECK_CUR INTO v_recount;
9515 CLOSE CHECK_CUR;
9516 --
9517 IF nvl(v_recount,0) = 0 THEN
9518 Raise comp_error;
9519 END IF;
9520 --
9521 OPEN MIN_CSI;
9522 FETCH MIN_CSI into v_low;
9523 CLOSE MIN_CSI;
9524 --
9525 OPEN MAX_CSI;
9526 FETCH MAX_CSI into v_high;
9527 CLOSE MAX_CSI;
9528 --
9529 v_diff := ceil((v_high - v_low)/v_batch);
9530 v_start := v_low;
9531 v_end := v_low + v_diff;
9532 v_batch_counter := 1;
9533 --
9534 l_instance_tbl.DELETE;
9535 l_txn_tbl.DELETE;
9536 LOOP
9537 For csi_rec in CSI_CUR(v_start,v_end)
9538 Loop
9539 Begin
9540 Begin
9541 select mmt.subinventory_code,mmt.locator_id,mmt.organization_id,mmt.revision
9542 into v_subinv,v_locator_id,v_org_id,v_revision
9543 from MTL_MATERIAL_TRANSACTIONS mmt
9547 and inventory_item_id = csi_rec.inventory_item_id
9544 where mmt.transaction_id = (select max(transaction_id)
9545 from MTL_UNIT_TRANSACTIONS
9546 where serial_number = csi_rec.serial_number
9548 and last_update_date <= csi_rec.last_update_date);
9549 Exception
9550 when others then
9551 Raise Process_next;
9552 End;
9553 --
9554 if ((v_subinv <> csi_rec.inv_subinventory_name) OR
9555 (nvl(v_locator_id,-999) <> nvl(csi_rec.inv_locator_id,-999)) OR
9556 (nvl(v_revision,'$#$') <> nvl(csi_rec.inventory_revision,'$#$')) OR
9557 (v_org_id <> csi_rec.inv_organization_id)) then
9558 v_ins_count := v_ins_count + 1;
9559 l_instance_tbl(v_ins_count) := csi_rec.instance_id;
9560 For txn in TXN_CUR(csi_rec.instance_id) Loop
9561 v_txn_count := v_txn_count + 1;
9562 l_txn_tbl(v_txn_count) := txn.transaction_id;
9563 End Loop;
9564 end if;
9565 --
9566 Exception
9567 when Process_next then
9568 null;
9569 End;
9570 End Loop;
9571 --
9572 v_batch_counter := v_batch_counter + 1;
9573 EXIT WHEN v_min = v_max;
9574 EXIT WHEN v_end = v_max;
9575 EXIT WHEN v_batch_counter > v_batch;
9576 v_start := v_end + 1;
9577 --
9578 if v_batch_counter <> v_batch then
9579 v_end := v_end + v_diff;
9580 else
9581 v_end := v_high;
9582 end if;
9583 --
9584 if v_start > v_max then
9585 v_start := v_max;
9586 end if;
9587 --
9588 if v_end > v_max then
9589 v_end := v_max;
9590 end if;
9591 --
9592 commit;
9593 END LOOP;
9594 commit;
9595 --
9596 IF l_instance_tbl.count > 0 THEN
9597 BEGIN
9598 FORALL j in l_instance_tbl.FIRST .. l_instance_tbl.LAST
9599 DELETE FROM CSI_ITEM_INSTANCES WHERE instance_id = l_instance_tbl(j);
9600 FORALL j in l_instance_tbl.FIRST .. l_instance_tbl.LAST
9601 DELETE FROM CSI_I_PARTIES WHERE instance_id = l_instance_tbl(j);
9602 FORALL j in l_instance_tbl.FIRST .. l_instance_tbl.LAST
9603 DELETE FROM CSI_I_VERSION_LABELS WHERE instance_id = l_instance_tbl(j);
9604 FORALL j in l_txn_tbl.FIRST .. l_txn_tbl.LAST
9605 DELETE FROM CSI_ITEM_INSTANCES_H WHERE transaction_id = l_txn_tbl(j);
9606 FORALL j in l_txn_tbl.FIRST .. l_txn_tbl.LAST
9607 DELETE FROM CSI_I_PARTIES_H WHERE transaction_id = l_txn_tbl(j);
9608 FORALL j in l_txn_tbl.FIRST .. l_txn_tbl.LAST
9609 DELETE FROM CSI_I_VERSION_LABELS_H WHERE transaction_id = l_txn_tbl(j);
9610 FORALL j in l_txn_tbl.FIRST .. l_txn_tbl.LAST
9611 DELETE FROM CSI_TRANSACTIONS WHERE transaction_id = l_txn_tbl(j);
9612 END;
9613 END IF;
9614 commit;
9615 --
9616 EXCEPTION
9617 when comp_error then
9618 null;
9619 END Delete_Dup_Srl_Inv_Instance;
9620 --
9621 PROCEDURE Update_Instance_Usage IS
9622 CURSOR CSI_CUR IS
9623 Select instance_id,location_type_code
9624 ,serial_number_control_code,serial_number,null usage_code
9625 from CSI_ITEM_INSTANCES cii
9626 ,MTL_SYSTEM_ITEMS_B msi
9627 Where cii.instance_usage_code is NULL
9628 and msi.inventory_item_id = cii.inventory_item_id
9629 and msi.organization_id = cii.last_vld_organization_id;
9630 --
9631 l_exists VARCHAR2(1);
9632 l_rel_type_code VARCHAR2(30) := 'COMPONENT-OF';
9633 --
9634 Type NumTabType is VARRAY(10000) of NUMBER;
9635 instance_id_mig NumTabType;
9636 serial_code_mig NumTabType;
9637 --
9638 Type V30TabType is VARRAY(10000) of VARCHAR2(30);
9639 location_type_mig V30TabType;
9640 serial_number_mig V30TabType;
9641 usage_code_mig V30TabType;
9642 --
9643 MAX_BUFFER_SIZE NUMBER := 1000;
9644 BEGIN
9645 OPEN CSI_CUR;
9646 LOOP
9647 FETCH CSI_CUR BULK COLLECT INTO
9648 instance_id_mig,
9649 location_type_mig,
9650 serial_code_mig,
9651 serial_number_mig,
9652 usage_code_mig
9653 LIMIT MAX_BUFFER_SIZE;
9654 --
9655 FOR i in 1 .. instance_id_mig.count LOOP
9656 If serial_code_mig(i) = 6 and
9657 serial_number_mig(i) is not NULL and
9658 location_type_mig(i) = 'INVENTORY' Then
9659 usage_code_mig(i) := 'RETURNED';
9660 Else
9661 if location_type_mig(i) = 'INVENTORY' then
9662 usage_code_mig(i) := 'IN_INVENTORY';
9663 elsif location_type_mig(i) = 'WIP' then
9664 usage_code_mig(i) := 'IN_WIP';
9665 else
9666 usage_code_mig(i) := 'OUT_OF_ENTERPRISE';
9667 end if;
9668 End if;
9669 Begin
9670 select 'x'
9671 into l_exists
9672 from CSI_II_RELATIONSHIPS
9673 where subject_id = instance_id_mig(i)
9674 and relationship_type_code = l_rel_type_code
9675 and ((active_end_date is null) or (active_end_date > sysdate));
9676 usage_code_mig(i) := 'IN_RELATIONSHIP';
9677 Exception
9678 when no_data_found then
9679 null;
9680 End;
9681 --
9682 END LOOP;
9683 FORALL j in 1 .. instance_id_mig.count
9684 UPDATE CSI_ITEM_INSTANCES
9685 set instance_usage_code = usage_code_mig(j)
9686 ,last_update_date = sysdate
9687 where instance_id = instance_id_mig(j);
9688 commit;
9692 CLOSE CSI_CUR;
9689 EXIT WHEN CSI_CUR%NOTFOUND;
9690 END LOOP;
9691 commit;
9693 END Update_Instance_Usage;
9694 --
9695 PROCEDURE Update_Full_dump_flag IS
9696 CURSOR CSI_REL_CUR IS
9697 SELECT relationship_history_id
9698 FROM CSI_II_RELATIONSHIPS_H
9699 WHERE nvl(MIGRATED_FLAG,'N') = 'Y'
9700 AND full_dump_flag <> 'Y';
9701 --
9702 CURSOR CSI_SYS_CUR IS
9703 SELECT system_id,min(system_history_id) system_history_id
9704 FROM CSI_SYSTEMS_H
9705 WHERE nvl(MIGRATED_FLAG,'N') = 'Y'
9706 AND full_dump_flag <> 'Y'
9707 group by system_id;
9708 --
9709 Type NumTabType is VARRAY(10000) of NUMBER;
9710 rel_history_id_mig NumTabType;
9711 system_id_mig NumTabType;
9712 system_history_id_mig NumTabType;
9713 --
9714 MAX_BUFFER_SIZE NUMBER := 1000;
9715 BEGIN
9716 OPEN CSI_REL_CUR;
9717 LOOP
9718 FETCH CSI_REL_CUR BULK COLLECT INTO
9719 rel_history_id_mig
9720 LIMIT MAX_BUFFER_SIZE;
9721 FORALL j in 1 .. rel_history_id_mig.count
9722 update CSI_II_RELATIONSHIPS_H
9723 set full_dump_flag = 'Y'
9724 where relationship_history_id = rel_history_id_mig(j);
9725 commit;
9726 --
9727 EXIT WHEN CSI_REL_CUR%NOTFOUND;
9728 END LOOP;
9729 commit;
9730 CLOSE CSI_REL_CUR;
9731 --
9732 OPEN CSI_SYS_CUR;
9733 LOOP
9734 FETCH CSI_SYS_CUR BULK COLLECT INTO
9735 system_id_mig,
9736 system_history_id_mig
9737 LIMIT MAX_BUFFER_SIZE;
9738 FORALL j in 1 .. system_id_mig.count
9739 UPDATE CSI_SYSTEMS_H
9740 set full_dump_flag = 'Y'
9741 where system_history_id = system_history_id_mig(j);
9742 commit;
9743 --
9744 EXIT WHEN CSI_SYS_CUR%NOTFOUND;
9745 END LOOP;
9746 commit;
9747 CLOSE CSI_SYS_CUR;
9748 END Update_Full_dump_flag;
9749 --
9750 PROCEDURE Del_API_Dup_Srl_Instance IS
9751 cursor check_count is
9752 select count(*)
9753 from csi_item_instances
9754 where serial_number is not null
9755 group by serial_number, inventory_item_id
9756 having count(*) > 1;
9757 --
9758 cursor c1 is
9759 select count(*), serial_number, inventory_item_id
9760 from csi_item_instances
9761 where serial_number is not null
9762 group by serial_number, inventory_item_id
9763 having count(*) > 1;
9764 --
9765 cursor c4(p_serial_number varchar, p_inventory_item_id number) is
9766 select instance_id,instance_status_id
9767 from csi_item_instances
9768 where serial_number = p_serial_number
9769 and inventory_item_id = p_inventory_item_id
9770 order by instance_id desc;
9771 --
9772 v_commit_count NUMBER := 0;
9773 v_recount NUMBER;
9774 v_instance_status_id NUMBER;
9775 v_duplicate_count NUMBER;
9776 v_instance_id NUMBER;
9777 v_status_id NUMBER;
9778 --
9779 comp_error EXCEPTION;
9780 BEGIN
9781 v_recount := 0;
9782 OPEN check_count;
9783 FETCH check_count into v_recount;
9784 CLOSE check_count;
9785 --
9786 IF nvl(v_recount,0) = 0 THEN
9787 Raise comp_error;
9788 END IF;
9789 --
9790 begin
9791 select instance_status_id
9792 into v_instance_status_id
9793 from CSI_INSTANCE_STATUSES
9794 where name = 'EXPIRED';
9795 exception
9796 when no_data_found then
9797 raise_application_error(-20000,'You need to setup an Expired Instance Status');
9798 return;
9799 when too_many_rows then
9800 raise_application_error(-20000,'Too many definition for Expired Instance Status');
9801 return;
9802 end;
9803
9804 for i in c1
9805 loop
9806 v_instance_id := null;
9807 v_commit_count := v_commit_count + 1;
9808 --
9809 v_duplicate_count := 0;
9810 --
9811 Begin
9812 select max(instance_id)
9813 into v_instance_id
9814 from csi_item_instances
9815 where inventory_item_id = i.inventory_item_id
9816 and serial_number = i.serial_number;
9817 End;
9818 --
9819 for j in c4(i.serial_number, i.inventory_item_id)
9820 loop
9821 if v_instance_id <> j.instance_id then
9822 v_duplicate_count := v_duplicate_count + 1;
9823
9824 update csi_item_instances_h
9825 set old_serial_number = i.serial_number
9826 ,new_serial_number = new_serial_number||'-DUP'||to_char(v_duplicate_count)
9827 ,last_updated_by = fnd_global.user_id
9828 ,last_update_date = sysdate
9829 ,old_instance_status_id = j.instance_status_id
9830 ,new_instance_status_id = v_instance_status_id
9831 where instance_history_id = (select max(instance_history_id)
9832 from csi_item_instances_h
9833 where instance_id = j.instance_id);
9834 --
9835 update csi_item_instances
9836 set serial_number = serial_number||'-DUP'||to_char(v_duplicate_count)
9837 ,active_end_date = sysdate
9838 ,instance_status_id = v_instance_status_id
9839 ,last_updated_by = fnd_global.user_id
9840 ,last_update_date = sysdate
9844 --
9841 where instance_id = j.instance_id;
9842 end if;
9843 end loop;
9845 if v_commit_count >= 500 then
9846 commit;
9847 v_commit_count := 0;
9848 end if;
9849 --
9850 end loop;
9851 commit;
9852 EXCEPTION
9853 when comp_error then
9854 null;
9855 END Del_API_Dup_Srl_Instance;
9856 --
9857 PROCEDURE Update_Vld_Organization IS
9858 CURSOR CSI_INS_CUR IS
9859 SELECT instance_id,inventory_item_id,inv_organization_id,last_vld_organization_id
9860 ,serial_number,lot_number
9861 ,mfg_serial_number_flag,creation_complete_flag
9862 ,inventory_revision
9863 ,instance_usage_code
9864 FROM CSI_ITEM_INSTANCES
9865 WHERE location_type_code = 'INVENTORY'
9866 AND inv_organization_id is not null
9867 AND nvl(last_vld_organization_id,-999) <> inv_organization_id;
9868 --
9869 l_instance_rec csi_datastructures_pub.instance_rec;
9870 l_temp_instance_rec csi_datastructures_pub.instance_rec;
9871 l_txn_rec csi_datastructures_pub.transaction_rec;
9872 l_return_value BOOLEAN;
9873 --
9874 Type NumTabType is VARRAY(10000) of NUMBER;
9875 instance_id_mig NumTabType;
9876 item_id_mig NumTabType;
9877 inv_org_id_mig NumTabType;
9878 vld_org_id_mig NumTabType;
9879 --
9880 Type V30Type is VARRAY(10000) of VARCHAR2(30);
9881 serial_number_mig V30Type;
9882 usage_mig V30Type;
9883
9884 Type V80Type is VARRAY(10000) of VARCHAR2(80);
9885 lot_number_mig V80Type;
9886 --
9887 Type V3Type is VARRAY(10000) of VARCHAR2(3);
9888 revision_mig V3Type;
9889 --
9890 Type V1Type is VARRAY(10000) of VARCHAR2(1);
9891 mfg_srl_flag_mig V1Type;
9892 complete_flag_mig V1Type;
9893 --
9894 MAX_BUFFER_SIZE NUMBER := 1000;
9895 --
9896 Process_Next EXCEPTION;
9897 BEGIN
9898 OPEN CSI_INS_CUR;
9899 LOOP
9900 FETCH CSI_INS_CUR BULK COLLECT INTO
9901 instance_id_mig,
9902 item_id_mig,
9903 inv_org_id_mig,
9904 vld_org_id_mig,
9905 serial_number_mig,
9906 lot_number_mig,
9907 mfg_srl_flag_mig,
9908 complete_flag_mig,
9909 revision_mig,
9910 usage_mig
9911 LIMIT MAX_BUFFER_SIZE;
9912 --
9913 FOR i in 1 .. instance_id_mig.count LOOP
9914 l_instance_rec := l_temp_instance_rec;
9915 --
9916 -- Need to validate against inv_organization_id since we update the instance with this org.
9917 --
9918 l_instance_rec.instance_id := instance_id_mig(i);
9919 l_instance_rec.inventory_item_id := item_id_mig(i);
9920 l_instance_rec.vld_organization_id := inv_org_id_mig(i);
9921 l_instance_rec.serial_number := serial_number_mig(i);
9922 l_instance_rec.lot_number := lot_number_mig(i);
9923 l_instance_rec.location_type_code := 'INVENTORY';
9924 l_instance_rec.mfg_serial_number_flag := mfg_srl_flag_mig(i);
9925 l_instance_rec.creation_complete_flag := complete_flag_mig(i);
9926 l_instance_rec.inventory_revision := revision_mig(i);
9927 l_instance_rec.instance_usage_code := usage_mig(i);
9928 --
9929 csi_Item_Instance_Vld_pvt.Validate_org_dependent_params
9930 ( p_instance_rec => l_instance_rec
9931 ,p_txn_rec => l_txn_rec
9932 ,l_return_value => l_return_value
9933 );
9934 --
9935 IF l_return_value = TRUE THEN
9936 vld_org_id_mig(i) := inv_org_id_mig(i);
9937 END IF;
9938 --
9939 END LOOP;
9940 FORALL j in 1 .. instance_id_mig.count
9941 Update CSI_ITEM_INSTANCES
9942 set last_vld_organization_id = vld_org_id_mig(j)
9943 where instance_id = instance_id_mig(j);
9944 --
9945 commit;
9946 --
9947 FORALL j in 1 .. instance_id_mig.count
9948 Update CSI_ITEM_INSTANCES_H
9949 set new_last_vld_organization_id = vld_org_id_mig(j)
9950 where instance_history_id = (select max(instance_history_id) from CSI_ITEM_INSTANCES_H
9951 where instance_id = instance_id_mig(j));
9952 --
9953 commit;
9954 --
9955 EXIT WHEN CSI_INS_CUR%NOTFOUND;
9956 END LOOP;
9957 commit;
9958 CLOSE CSI_INS_CUR;
9959 END Update_Vld_Organization;
9960 --
9961 PROCEDURE Update_Revision IS
9962 CURSOR c1 IS
9963 SELECT a.instance_id
9964 ,a.inventory_item_id
9965 ,a.last_vld_organization_id
9966 ,a.last_oe_order_line_id
9967 ,a.serial_number
9968 ,a.inventory_revision
9969 FROM csi_item_instances a
9970 ,mtl_system_items_b b
9971 WHERE a.inventory_item_id = b.inventory_item_id
9972 AND a.last_vld_organization_id = b.organization_id
9973 AND a.creation_complete_flag = 'Y'
9974 AND a.inventory_revision IS NULL
9975 AND a.migrated_flag = 'Y'
9976 AND b.revision_qty_control_code = 2;
9977
9978 Type NumTabType is VARRAY(10000) of NUMBER;
9979 instance_id_mig NumTabType;
9980 item_id_mig NumTabType;
9981 vld_org_id_mig NumTabType;
9985 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
9982 order_line_id_mig NumTabType;
9983 l_schema_name varchar2(30);
9984 l_object_name varchar2(80);
9986 l_sql_stmt varchar2(2000);
9987 --
9988 Type V30Type is VARRAY(10000) of VARCHAR2(30);
9989 serial_number_mig V30Type;
9990 --
9991 Type V3Type is VARRAY(10000) of VARCHAR2(3);
9992 revision_mig V3Type;
9993 --
9994 MAX_BUFFER_SIZE NUMBER := 1000;
9995 BEGIN
9996 get_schema_name(
9997 p_product_short_name => 'CS',
9998 x_schema_name => l_schema_name,
9999 x_return_status => l_return_status);
10000
10001 IF l_return_status <> fnd_api.g_ret_sts_success THEN
10002 RETURN;
10003 END IF;
10004 --
10005 l_object_name := l_schema_name||'.CS_CUSTOMER_PRODUCTS_ALL_OLD cp';
10006 --
10007 l_sql_stmt := 'select cr.revision from CS_CP_REVISIONS cr, '||l_object_name || ' where cp.customer_product_id = :inst_id and cr.cp_revision_id = cp.current_cp_revision_id';
10008 --
10009 OPEN c1;
10010 LOOP
10011 FETCH c1 BULK COLLECT INTO
10012 instance_id_mig,
10013 item_id_mig,
10014 vld_org_id_mig,
10015 order_line_id_mig,
10016 serial_number_mig,
10017 revision_mig
10018 LIMIT MAX_BUFFER_SIZE;
10019 --
10020 FOR i in 1 .. instance_id_mig.count LOOP
10021 Begin
10022 EXECUTE IMMEDIATE l_sql_stmt INTO revision_mig(i) USING instance_id_mig(i);
10023 Exception
10024 when others then
10025 revision_mig(i) := null;
10026 End;
10027 --
10028 IF revision_mig(i) is null and order_line_id_mig(i) is not null THEN
10029 Begin
10030 select revision
10031 into revision_mig(i)
10032 from MTL_MATERIAL_TRANSACTIONS
10033 where transaction_type_id = 33
10034 and transaction_action_id = 1
10035 and trx_source_line_id = order_line_id_mig(i)
10036 and rownum < 2;
10037 Exception
10038 when no_data_found then
10039 Begin
10040 select item_revision
10041 into revision_mig(i)
10042 from OE_ORDER_LINES_ALL
10043 where line_id = order_line_id_mig(i);
10044 Exception
10045 when no_data_found then
10046 revision_mig(i) := null;
10047 End;
10048 End;
10049 END IF;
10050 --
10051 IF revision_mig(i) is null AND serial_number_mig(i) is not null THEN
10052 Begin
10053 select revision
10054 into revision_mig(i)
10055 from MTL_SERIAL_NUMBERS
10056 where inventory_item_id = item_id_mig(i)
10057 and serial_number = serial_number_mig(i);
10058 Exception
10059 when no_data_found then
10060 revision_mig(i) := null;
10061 End;
10062 END IF;
10063 END LOOP;
10064 --
10065 FORALL j in 1 .. instance_id_mig.count
10066 UPDATE csi_item_instances
10067 SET inventory_revision = revision_mig(j)
10068 WHERE instance_id = instance_id_mig(j);
10069 commit;
10070 --
10071 FORALL j in 1 .. instance_id_mig.count
10072 Update CSI_ITEM_INSTANCES_H
10073 set new_inventory_revision = revision_mig(j)
10074 where instance_history_id = (select max(instance_history_id) from CSI_ITEM_INSTANCES_H
10075 where instance_id = instance_id_mig(j));
10076 --
10077 commit;
10078 --
10079 EXIT WHEN c1%NOTFOUND;
10080 END LOOP;
10081 commit;
10082 CLOSE c1;
10083 END Update_Revision;
10084 --
10085 PROCEDURE Update_Dup_Srl_Instance IS
10086 CURSOR CSI_CUR IS -- Cursor to delete the Inv instances emerged from wrong WHERE clause in Mig
10087 select cii.instance_id
10088 from CSI_ITEM_INSTANCES cii
10089 where cii.location_type_code = 'INVENTORY'
10090 and cii.instance_usage_code = 'IN_INVENTORY'
10091 and mfg_serial_number_flag = 'Y'
10092 and cii.serial_number is not null
10093 and cii.lot_number is not null
10094 and cii.migrated_flag = 'Y'
10095 and cii.creation_date = cii.last_update_date
10096 and not exists (select 'X' from mtl_serial_numbers msn
10097 where msn.inventory_item_id = cii.inventory_item_id
10098 and msn.serial_number = cii.serial_number
10099 and msn.lot_number = cii.lot_number);
10100 --
10101 CURSOR TXN_CUR(p_instance_id IN NUMBER) IS
10102 SELECT transaction_id
10103 from CSI_INST_TRANSACTIONS_V
10104 where instance_id = p_instance_id;
10105 --
10106 l_ins_count NUMBER := 0;
10107 l_txn_count NUMBER := 0;
10108 --
10109 Type NumTabType is VARRAY(10000) of NUMBER;
10110 instance_id_mig NumTabType;
10111 --
10112 MAX_BUFFER_SIZE NUMBER := 1000;
10113 TYPE NUMLIST IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
10114 l_del_inst_tbl NUMLIST;
10115 l_del_txn_tbl NUMLIST;
10116 --
10117 cursor c1 is
10118 select count(*), serial_number, inventory_item_id
10119 from csi_item_instances
10120 where migrated_flag = 'Y'
10121 and serial_number is not null
10122 group by serial_number, inventory_item_id
10123 having count(*) > 1;
10124
10128 where serial_number = p_serial_number
10125 cursor c2(p_serial_number varchar, p_inventory_item_id number) is
10126 select max(instance_id)
10127 from csi_item_instances
10129 and inventory_item_id = p_inventory_item_id
10130 and location_type_code = 'INVENTORY'
10131 and instance_usage_code = 'IN_INVENTORY'
10132 and inv_subinventory_name IS NOT NULL
10133 and inv_organization_id IS NOT NULL;
10134
10135 cursor c3(p_serial_number varchar, p_inventory_item_id number) is
10136 select max(instance_id)
10137 from csi_item_instances
10138 where serial_number = p_serial_number
10139 and inventory_item_id = p_inventory_item_id;
10140
10141 cursor c5(p_serial_number varchar, p_inventory_item_id number) is
10142 select max(instance_id)
10143 from csi_item_instances
10144 where serial_number = p_serial_number
10145 and inventory_item_id = p_inventory_item_id
10146 and last_oe_rma_line_id is not null
10147 and migrated_flag = 'Y';
10148
10149 cursor c4(p_serial_number varchar, p_inventory_item_id number) is
10150 select instance_id,instance_status_id
10151 from csi_item_instances
10152 where serial_number = p_serial_number
10153 and inventory_item_id = p_inventory_item_id
10154 order by instance_id desc;
10155 --
10156 cursor c6(p_inst_id1 number,p_inst_id2 number) is
10157 select transaction_id
10158 from csi_item_instances_h
10159 where instance_id = p_inst_id1
10160 intersect
10161 select transaction_id
10162 from csi_item_instances_h
10163 where instance_id = p_inst_id2;
10164
10165 v_commit_count NUMBER := 0;
10166 v_instance_status_id NUMBER;
10167 v_duplicate_count NUMBER;
10168 v_instance_id NUMBER;
10169 v_inv_instance_id NUMBER;
10170 v_cp_instance_id NUMBER;
10171 v_inv_exists VARCHAR2(1) := 'N';
10172 v_terminated_flag VARCHAR2(1);
10173 v_ret_instance_id NUMBER;
10174 v_srl_control NUMBER;
10175 v_inst_usage_code VARCHAR2(30);
10176 v_org_id NUMBER;
10177 v_subinv VARCHAR2(10);
10178 v_locator NUMBER;
10179 v_loc_id NUMBER;
10180 v_status_id NUMBER;
10181 v_status VARCHAR2(50);
10182 v_txn_id NUMBER;
10183 v_freeze_date DATE;
10184 v_rev VARCHAR2(3);
10185 l_schema_name varchar2(30);
10186 l_object_name varchar2(80);
10187 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
10188 l_sql_stmt varchar2(2000);
10189 --
10190 BEGIN
10191 get_schema_name(
10192 p_product_short_name => 'CS',
10193 x_schema_name => l_schema_name,
10194 x_return_status => l_return_status);
10195 --
10196 IF l_return_status <> fnd_api.g_ret_sts_success THEN
10197 RETURN;
10198 END IF;
10199 --
10200 l_object_name := l_schema_name||'.CS_CUSTOMER_PRODUCTS_ALL_OLD cp';
10201 --
10202 l_sql_stmt := 'select terminated_flag,cp.customer_product_status_id from CSI_INSTANCE_STATUSES cis, '||l_object_name||' where cp.customer_product_id = :inst_id and cis.instance_status_id = cp.customer_product_status_id';
10203 --
10204 BEGIN -- First
10205 OPEN CSI_CUR;
10206 LOOP
10207 FETCH CSI_CUR BULK COLLECT INTO
10208 instance_id_mig
10209 LIMIT MAX_BUFFER_SIZE;
10210 --
10211 FOR i in 1 .. instance_id_mig.count LOOP
10212 l_ins_count := l_ins_count + 1;
10213 l_del_inst_tbl(l_ins_count) := instance_id_mig(i);
10214 FOR txn_rec in TXN_CUR(instance_id_mig(i)) LOOP
10215 l_txn_count := l_txn_count + 1;
10216 l_del_txn_tbl(l_txn_count) := txn_rec.transaction_id;
10217 END LOOP;
10218 END LOOP;
10219 EXIT WHEN CSI_CUR%NOTFOUND;
10220 END LOOP;
10221 CLOSE CSI_CUR;
10222 --
10223 IF l_del_inst_tbl.count > 0 THEN
10224 BEGIN
10225 FORALL j in l_del_inst_tbl.FIRST .. l_del_inst_tbl.LAST
10226 DELETE FROM CSI_ITEM_INSTANCES WHERE instance_id = l_del_inst_tbl(j);
10227 FORALL j in l_del_inst_tbl.FIRST .. l_del_inst_tbl.LAST
10228 DELETE FROM CSI_I_PARTIES WHERE instance_id = l_del_inst_tbl(j);
10229 FORALL j in l_del_inst_tbl.FIRST .. l_del_inst_tbl.LAST
10230 DELETE FROM CSI_I_VERSION_LABELS WHERE instance_id = l_del_inst_tbl(j);
10231 FORALL j in l_del_txn_tbl.FIRST .. l_del_txn_tbl.LAST
10232 DELETE FROM CSI_ITEM_INSTANCES_H WHERE transaction_id = l_del_txn_tbl(j);
10233 FORALL j in l_del_txn_tbl.FIRST .. l_del_txn_tbl.LAST
10234 DELETE FROM CSI_I_PARTIES_H WHERE transaction_id = l_del_txn_tbl(j);
10235 FORALL j in l_del_txn_tbl.FIRST .. l_del_txn_tbl.LAST
10236 DELETE FROM CSI_I_VERSION_LABELS_H WHERE transaction_id = l_del_txn_tbl(j);
10237 FORALL j in l_del_txn_tbl.FIRST .. l_del_txn_tbl.LAST
10238 DELETE FROM CSI_TRANSACTIONS WHERE transaction_id = l_del_txn_tbl(j);
10239 END;
10240 END IF;
10241 commit;
10242 END; -- First
10243 commit;
10244 --
10245 BEGIN -- Second Update
10246 begin
10247 select instance_status_id
10248 into v_instance_status_id
10249 from CSI_INSTANCE_STATUSES
10250 where name = 'EXPIRED';
10251 exception
10255 when too_many_rows then
10252 when no_data_found then
10253 raise_application_error(-20000,'You need to setup an Expired Instance Status');
10254 return;
10256 raise_application_error(-20000,'Too many definition for Expired Instance Status');
10257 return;
10258 end;
10259 --
10260 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
10261 csi_gen_utility_pvt.populate_install_param_rec;
10262 END IF;
10263 --
10264 v_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
10265 --
10266 for i in c1
10267 loop
10268 v_inv_instance_id := null;
10269 v_cp_instance_id := null;
10270 v_instance_id := null;
10271 v_ret_instance_id := null;
10272 v_terminated_flag := 'X';
10273 v_org_id := null;
10274 v_subinv := null;
10275 v_locator := null;
10276 v_loc_id := null;
10277 v_status_id := null;
10278 v_status := null;
10279 v_commit_count := v_commit_count + 1;
10280
10281 open c2(i.serial_number, i.inventory_item_id);
10282 fetch c2 into v_inv_instance_id;
10283 close c2;
10284 --
10285 if v_inv_instance_id is null then
10286 open c3(i.serial_number, i.inventory_item_id);
10287 fetch c3 into v_cp_instance_id;
10288 close c3;
10289 --
10290 v_instance_id := v_cp_instance_id;
10291 else -- INV instance found
10292 -- Try to get the last RMA instance
10293 open c5(i.serial_number, i.inventory_item_id);
10294 fetch c5 into v_ret_instance_id;
10295 close c5;
10296 --
10297 if v_ret_instance_id is not null then -- RMA instance found
10298 Begin
10299 EXECUTE IMMEDIATE l_sql_stmt INTO v_terminated_flag,v_status_id USING v_ret_instance_id;
10300 Exception
10301 when others then
10302 null;
10303 End;
10304 --
10305 if v_terminated_flag = 'Y' then -- Instance will be owned by Internal
10306 v_instance_id := v_inv_instance_id;
10307 else
10308 v_instance_id := v_ret_instance_id;
10309 Begin
10310 select location_id,inv_organization_id
10311 ,inv_subinventory_name,inv_locator_id,inventory_revision
10312 into v_loc_id,v_org_id,v_subinv,v_locator,v_rev
10313 from CSI_ITEM_INSTANCES
10314 where instance_id = v_inv_instance_id;
10315 --
10316 Exception
10317 when no_data_found then
10318 null;
10319 End;
10320 --
10321 Begin
10322 select serial_number_control_code
10323 into v_srl_control
10324 from MTL_SYSTEM_ITEMS_B
10325 where inventory_item_id = i.inventory_item_id
10326 and organization_id = v_org_id;
10327 Exception
10328 when others then
10329 null;
10330 End;
10331 --
10332 if v_srl_control = 6 then
10333 v_inst_usage_code := 'RETURNED';
10334 else
10335 v_inst_usage_code := 'IN_INVENTORY';
10336 end if;
10337 --
10338 -- Added a check for the case of status id being null. shegde
10339 if v_status_id is NULL then
10340 v_status := nvl(FND_PROFILE.VALUE('CSI_DEFAULT_INSTANCE_STATUS'), 'Latest');
10341 select instance_status_id
10342 into v_status_id
10343 from CSI_INSTANCE_STATUSES
10344 where name = v_status;
10345 end if;
10346
10347 update CSI_ITEM_INSTANCES
10348 set location_type_code = 'INVENTORY'
10349 ,location_id = v_loc_id
10350 ,accounting_class_code = 'CUST_PROD'
10351 ,instance_usage_code = v_inst_usage_code
10352 ,last_vld_organization_id = v_org_id
10353 ,inv_organization_id = v_org_id
10354 ,inv_subinventory_name = v_subinv
10355 ,inv_locator_id = v_locator
10356 ,instance_status_id = v_status_id
10357 ,inventory_revision = v_rev
10358 where instance_id = v_ret_instance_id;
10359 end if; -- Terminated_flag check
10360 else
10361 -- There is no RMA instance
10362 v_instance_id := v_inv_instance_id;
10363 end if;
10364 end if; -- check for Inv Instance
10365 --
10366 v_duplicate_count := 0;
10367
10368 for j in c4(i.serial_number, i.inventory_item_id)
10369 loop
10370 if v_instance_id <> j.instance_id then
10371 v_duplicate_count := v_duplicate_count + 1;
10372 v_txn_id := null;
10373 open c6(v_instance_id,j.instance_id);
10374 fetch c6 into v_txn_id;
10375 close c6;
10376 --
10377 -- While suffixing with DUP, we use the instance_id in serial_number column to avoid serial #
10378 -- becoming more than 30 chars. The old serial_number is stored in the external_reference column.
10379 update csi_item_instances
10380 set external_reference = serial_number
10381 , serial_number = to_char(j.instance_id)||'-DUP'||to_char(v_duplicate_count)
10382 ,active_end_date = sysdate
10383 ,instance_status_id = v_instance_status_id
10384 ,last_updated_by = fnd_global.user_id
10385 ,last_update_date = sysdate
10386 where instance_id = j.instance_id;
10387 --
10388 if v_txn_id is null then
10389 update csi_item_instances_h
10390 set instance_id = v_instance_id
10394 ,last_updated_by = fnd_global.user_id
10391 ,new_external_reference = i.serial_number
10392 ,old_serial_number = nvl(new_serial_number,i.serial_number)
10393 ,new_serial_number = to_char(j.instance_id)||'-DUP'||to_char(v_duplicate_count)
10395 ,last_update_date = sysdate
10396 where instance_id = j.instance_id;
10397 else -- common txn found
10398 update csi_item_instances_h
10399 set new_external_reference = i.serial_number
10400 ,old_serial_number = nvl(new_serial_number,i.serial_number)
10401 ,new_serial_number = to_char(j.instance_id)||'-DUP'||to_char(v_duplicate_count)
10402 ,last_updated_by = fnd_global.user_id
10403 ,last_update_date = sysdate
10404 where instance_history_id = (select max(instance_history_id)
10405 from csi_item_instances_h
10406 where instance_id = j.instance_id
10407 and creation_date < v_freeze_date);
10408 end if;
10409 end if;
10410 end loop;
10411
10412 v_duplicate_count := 0;
10413 v_instance_id := null;
10414
10415 if v_commit_count >= 500 then
10416 commit;
10417 v_commit_count := 0;
10418 end if;
10419
10420 end loop;
10421 commit;
10422 END; -- Second Update
10423 commit;
10424 END Update_Dup_Srl_Instance;
10425 --
10426 PROCEDURE Delete_Dup_Account IS
10427 CURSOR IP_CUR IS
10428 select cia.instance_party_id
10429 from csi_ip_accounts cia
10430 where cia.relationship_type_code = 'OWNER'
10431 group by cia.instance_party_id
10432 having count(*) > 1;
10433 --
10434 CURSOR ACCT_CUR(p_inst_party_id IN NUMBER,p_ip_acct_id IN NUMBER) IS
10435 select ip_account_id
10436 from csi_ip_accounts
10437 where instance_party_id = p_inst_party_id
10438 and relationship_type_code = 'OWNER'
10439 and ip_account_id <> p_ip_acct_id
10440 order by ip_account_id asc;
10441 --
10442 v_max_ip_acct_id NUMBER;
10443 v_min_ret_id NUMBER;
10444 v_old_account_id NUMBER;
10445 v_commit_counter NUMBER := 0;
10446 v_min_history_id NUMBER;
10447 --
10448 Process_next EXCEPTION;
10449 BEGIN
10450 FOR party in IP_CUR LOOP
10451 Begin
10452 v_max_ip_acct_id := NULL;
10453 v_min_ret_id := null;
10454 --
10455 select max(ip_account_id)
10456 into v_max_ip_acct_id
10457 from csi_ip_accounts
10458 where instance_party_id = party.instance_party_id
10459 and relationship_type_code = 'OWNER'
10460 and ((active_end_date is null) or (active_end_date > sysdate));
10461 --
10462 IF v_max_ip_acct_id IS NULL THEN
10463 Raise Process_next;
10464 END IF;
10465 --
10466 select min(ip_account_history_id)
10467 into v_min_ret_id
10468 from CSI_IP_ACCOUNTS_H
10469 where ip_account_id = v_max_ip_acct_id;
10470 --
10471 v_old_account_id := NULL;
10472 --
10473 FOR acct in ACCT_CUR(party.instance_party_id,v_max_ip_acct_id) LOOP
10474 v_min_history_id := NULL;
10475 select min(ip_account_history_id)
10476 into v_min_history_id
10477 from CSI_IP_ACCOUNTS_H
10478 where ip_account_id = acct.ip_account_id;
10479 --
10480 IF v_min_history_id IS NULL THEN
10481 Raise Process_next;
10482 END IF;
10483 --
10484 IF ACCT_CUR%ROWCOUNT > 1 THEN
10485 Update CSI_IP_ACCOUNTS_H
10486 set old_party_account_id = v_old_account_id
10487 where ip_account_history_id = v_min_history_id;
10488 END IF;
10489 --
10490 DELETE from CSI_IP_ACCOUNTS_H
10491 where ip_account_id = acct.ip_account_id
10492 and ip_account_history_id <> v_min_history_id;
10493 --
10494 v_old_account_id := NULL;
10495 Begin
10496 select new_party_account_id
10497 into v_old_account_id
10498 from CSI_IP_ACCOUNTS_H
10499 where ip_account_history_id = v_min_history_id;
10500 Exception
10501 when no_data_found then
10502 v_old_account_id := NULL;
10503 End;
10504 --
10505 Update CSI_IP_ACCOUNTS_H
10506 set ip_account_id = v_max_ip_acct_id
10507 where ip_account_history_id = v_min_history_id;
10508 --
10509 Delete from CSI_IP_ACCOUNTS
10510 where ip_account_id = acct.ip_account_id;
10511 --
10512 v_commit_counter := v_commit_counter + 1;
10513 IF v_commit_counter = 100 THEN
10514 v_commit_counter := 0;
10515 commit;
10516 END IF;
10517 END LOOP;
10518 Update CSI_IP_ACCOUNTS_H
10519 set old_party_account_id = v_old_account_id
10520 where ip_account_history_id = v_min_ret_id;
10521 Exception
10522 when Process_next Then
10523 null;
10524 End;
10525 END LOOP;
10526 commit;
10527 END Delete_Dup_Account;
10528 --
10529 PROCEDURE Update_Instance_Party_Source IS
10530 CURSOR CSI_INS_CUR IS
10531 SELECT instance_id,null
10532 FROM csi_item_instances
10533 WHERE (owner_party_source_table is null
10534 OR owner_party_source_table not in ('HZ_PARTIES','PO_VENDORS','EMPLOYEE','TEAM','GROUP'));
10535 --
10536 Type NumTabType is VARRAY(10000) of NUMBER;
10540 party_src_table_mig V30TabType;
10537 instance_id_mig NumTabType;
10538 --
10539 Type V30TabType is VARRAY(10000) of VARCHAR2(30);
10541 --
10542 MAX_BUFFER_SIZE NUMBER := 1000;
10543
10544 BEGIN
10545 OPEN CSI_INS_CUR;
10546 LOOP
10547 FETCH CSI_INS_CUR BULK COLLECT INTO
10548 instance_id_mig,
10549 party_src_table_mig
10550 LIMIT MAX_BUFFER_SIZE;
10551 --
10552 FOR i IN 1 .. instance_id_mig.count LOOP
10553 BEGIN
10554 SELECT party_source_table
10555 INTO party_src_table_mig(i)
10556 FROM csi_i_parties
10557 WHERE relationship_type_code = 'OWNER'
10558 AND instance_id = instance_id_mig(i);
10559 EXCEPTION
10560 WHEN no_data_found THEN
10561 party_src_table_mig(i) := null;
10562 WHEN OTHERS THEN
10563 party_src_table_mig(i) := NULL;
10564 END;
10565 --
10566 END LOOP;
10567 --
10568 FORALL j in 1 .. instance_id_mig.count
10569 UPDATE CSI_ITEM_INSTANCES
10570 SET OWNER_PARTY_SOURCE_TABLE = party_src_table_mig(j)
10571 WHERE instance_id = instance_id_mig(j);
10572 commit;
10573 EXIT WHEN CSI_INS_CUR%NOTFOUND;
10574 END LOOP;
10575 CLOSE CSI_INS_CUR;
10576 COMMIT;
10577 END Update_Instance_Party_Source;
10578 --
10579 PROCEDURE Update_Contact_Party_Record IS
10580 CURSOR CSI_PARTY_CUR IS
10581 select instance_id,instance_party_id,contact_ip_id,
10582 contact_flag,relationship_type_code
10583 from CSI_I_PARTIES
10584 where contact_ip_id IS NOT NULL;
10585 --
10586 l_ins_party_id NUMBER;
10587 TYPE NUMLIST IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
10588 l_upd_pty_tbl NUMLIST;
10589 l_ctr NUMBER := 0;
10590 l_exp_pty_tbl NUMLIST;
10591 l_exp NUMBER := 0;
10592 l_exists VARCHAR2(1);
10593 --
10594 Type NumTabType is VARRAY(10000) of NUMBER;
10595 instance_id_mig NumTabType;
10596 instance_party_id_mig NumTabType;
10597 contact_ip_id_mig NumTabType;
10598 --
10599 Type v1TabType is VARRAY(10000) of VARCHAR2(1);
10600 contact_flag_mig v1TabType;
10601 --
10602 Type v30TabType is VARRAY(10000) of VARCHAR2(30);
10603 rel_type_code_mig v30TabType;
10604 --
10605 MAX_BUFFER_SIZE NUMBER := 1000;
10606 BEGIN
10607 OPEN CSI_PARTY_CUR;
10608 LOOP
10609 FETCH CSI_PARTY_CUR BULK COLLECT INTO
10610 instance_id_mig,
10611 instance_party_id_mig,
10612 contact_ip_id_mig,
10613 contact_flag_mig,
10614 rel_type_code_mig
10615 LIMIT MAX_BUFFER_SIZE;
10616 --
10617 l_ctr := 0;
10618 l_upd_pty_tbl.DELETE;
10619 l_exp := 0;
10620 l_exp_pty_tbl.DELETE;
10621 --
10622 FOR i in 1 .. instance_id_mig.count LOOP
10623 IF ((nvl(contact_flag_mig(i),'N') <> 'Y') OR
10624 (rel_type_code_mig(i) = 'OWNER')) THEN
10625 l_ctr := l_ctr + 1;
10626 l_upd_pty_tbl(l_ctr) := instance_party_id_mig(i);
10627 ELSE
10628 Begin
10629 select 'x'
10630 into l_exists
10631 from CSI_I_PARTIES
10632 where instance_party_id = contact_ip_id_mig(i)
10633 and instance_id = instance_id_mig(i);
10634 Exception
10635 when no_data_found then
10636 l_exp := l_exp + 1;
10637 l_exp_pty_tbl(l_exp) := instance_party_id_mig(i);
10638 End;
10639 END IF;
10640 END LOOP;
10641 IF l_upd_pty_tbl.count > 0 THEN
10642 FORALL j in l_upd_pty_tbl.FIRST .. l_upd_pty_tbl.LAST
10643 UPDATE CSI_I_PARTIES
10644 set contact_ip_id = null
10645 where instance_party_id = l_upd_pty_tbl(j);
10646 --
10647 commit;
10648 END IF;
10649 --
10650 IF l_exp_pty_tbl.count > 0 THEN
10651 FORALL j in l_exp_pty_tbl.FIRST .. l_exp_pty_tbl.LAST
10652 UPDATE CSI_I_PARTIES
10653 set contact_ip_id = null,
10654 active_end_date = sysdate
10655 where instance_party_id = l_exp_pty_tbl(j);
10656 --
10657 commit;
10658 END IF;
10659 EXIT WHEN CSI_PARTY_CUR%NOTFOUND;
10660 END LOOP;
10661 CLOSE CSI_PARTY_CUR;
10662 commit;
10663 END Update_Contact_Party_Record;
10664 --
10665 PROCEDURE Revert_Party_Rel_Type_Update IS
10666 CURSOR INS_CUR IS
10667 select instance_id,relationship_type_code,count(*)
10668 from CSI_I_PARTIES
10669 where relationship_type_code = 'OWNER'
10670 group by instance_id,relationship_type_code
10671 having count(*) > 1;
10672 --
10673 CURSOR PARTY_HIST_CUR IS
10674 select a.instance_party_history_id instance_party_history_id,a.instance_party_id instance_party_id,
10675 a.old_relationship_type_code old_rel_type,
10676 a.old_party_id old_party_id,a.new_party_id new_party_id
10677 from CSI_I_PARTIES_H a
10678 where a.old_relationship_type_code is not null
10679 and a.old_relationship_type_code <> 'OWNER'
10680 and a.new_relationship_type_code is not null
10681 and a.new_relationship_type_code = 'OWNER'
10682 and a.new_party_id is not null
10683 and a.old_party_id is not null
10684 and exists (select 'x' from CSI_I_PARTIES b
10688 and a.instance_party_history_id = (select max(instance_party_history_id)
10685 where b.instance_id = (select c.instance_id from CSI_I_PARTIES c
10686 where c.instance_party_id = a.instance_party_id)
10687 and b.relationship_type_code = 'OWNER')
10689 from CSI_I_PARTIES_H d
10690 where d.instance_party_id = a.instance_party_id);
10691 --
10692 TYPE NUMLIST IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
10693 l_inst_tbl NUMLIST;
10694 l_ctr NUMBER := 0;
10695 l_internal_party_id NUMBER;
10696 l_party_id NUMBER;
10697 l_ip_id NUMBER;
10698 l_ip_account_id NUMBER;
10699 l_vld_org_id NUMBER;
10700 x_msg_data VARCHAR2(2000);
10701 x_msg_count NUMBER;
10702 x_return_status VARCHAR2(1);
10703 l_txn_id NUMBER;
10704 l_user_id NUMBER := FND_GLOBAL.user_id;
10705 l_ins_flag VARCHAR2(1) := 'N';
10706 v_txn_type_id NUMBER;
10707 px_oks_txn_inst_tbl oks_ibint_pub.txn_instance_tbl;
10708 --
10709 Process_next EXCEPTION;
10710 comp_error EXCEPTION;
10711 BEGIN
10712 savepoint DATA_FIX;
10713 --
10714 Begin
10715 select transaction_type_id
10716 into v_txn_type_id
10717 from CSI_TXN_TYPES
10718 where SOURCE_TRANSACTION_TYPE = 'DATA_CORRECTION';
10719 Exception
10720 when no_data_found then
10721 Raise comp_error;
10722 when others then
10723 Raise comp_error;
10724 End;
10725 --
10726 FOR ins in INS_CUR LOOP
10727 l_ctr := l_ctr + 1;
10728 l_inst_tbl(l_ctr) := ins.instance_id;
10729 END LOOP;
10730 --
10731 IF l_inst_tbl.count = 0 THEN
10732 RAISE Comp_error;
10733 END IF;
10734 --
10735 select CSI_TRANSACTIONS_S.nextval
10736 into l_txn_id from dual;
10737 --
10738 INSERT INTO CSI_TRANSACTIONS(
10739 TRANSACTION_ID
10740 ,TRANSACTION_DATE
10741 ,SOURCE_TRANSACTION_DATE
10742 ,SOURCE_HEADER_REF
10743 ,TRANSACTION_TYPE_ID
10744 ,CREATED_BY
10745 ,CREATION_DATE
10746 ,LAST_UPDATED_BY
10747 ,LAST_UPDATE_DATE
10748 ,LAST_UPDATE_LOGIN
10749 ,OBJECT_VERSION_NUMBER
10750 )
10751 VALUES(
10752 l_txn_id -- TRANSACTION_ID
10753 ,SYSDATE -- TRANSACTION_DATE
10754 ,SYSDATE -- SOURCE_TRANSACTION_DATE
10755 ,'Update Dup Owner' -- SOURCE_HEADER_REF
10756 ,v_txn_type_id -- TRANSACTION_TYPE_ID
10757 ,l_user_id
10758 ,sysdate
10759 ,l_user_id
10760 ,sysdate
10761 ,-1
10762 ,1
10763 );
10764 --
10765 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
10766 csi_gen_utility_pvt.populate_install_param_rec;
10767 END IF;
10768 --
10769 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
10770 --
10771 FOR party_rec in PARTY_HIST_CUR LOOP
10772 Update CSI_I_PARTIES
10773 set relationship_type_code = party_rec.old_rel_type,
10774 party_id = party_rec.old_party_id
10775 where instance_party_id = party_rec.instance_party_id;
10776 --
10777 Update CSI_I_PARTIES
10778 set party_id = party_rec.new_party_id
10779 where instance_id = (select instance_id from CSI_I_PARTIES
10780 where instance_party_id = party_rec.instance_party_id)
10781 and relationship_type_code = 'OWNER';
10782 --
10783 Update CSI_I_PARTIES_H
10784 set new_relationship_type_code = party_rec.old_rel_type,
10785 new_party_id = party_rec.old_party_id
10786 where instance_party_history_id = party_rec.instance_party_history_id;
10787 --
10788 END LOOP;
10789 --
10790 IF l_inst_tbl.count > 0 THEN
10791 FOR j in l_inst_tbl.FIRST .. l_inst_tbl.LAST LOOP
10792 Begin
10793 Begin
10794 select instance_party_id
10795 into l_ip_id
10796 from CSI_I_PARTIES
10797 where instance_id = l_inst_tbl(j)
10798 and relationship_type_code = 'OWNER'
10799 and party_id = l_internal_party_id;
10800 Exception
10801 when no_data_found then
10802 Raise Process_next;
10803 End;
10804 --
10805 Update CSI_IP_ACCOUNTS
10806 set active_end_date = sysdate
10807 where instance_party_id = l_ip_id
10808 and relationship_type_code = 'OWNER';
10809 --
10810 -- Insert into IP Accounts history
10811 select ip_account_id
10812 into l_ip_account_id
10813 from CSI_IP_ACCOUNTS
10814 where instance_party_id = l_ip_id
10815 and relationship_type_code = 'OWNER';
10816 --
10817 INSERT INTO CSI_IP_ACCOUNTS_H
10818 ( IP_ACCOUNT_HISTORY_ID
10819 ,IP_ACCOUNT_ID
10820 ,TRANSACTION_ID
10821 ,OLD_ACTIVE_END_DATE
10822 ,NEW_ACTIVE_END_DATE
10823 ,CREATED_BY
10824 ,CREATION_DATE
10825 ,LAST_UPDATED_BY
10826 ,LAST_UPDATE_DATE
10827 ,LAST_UPDATE_LOGIN
10831 ( CSI_IP_ACCOUNTS_H_S.nextval
10828 ,OBJECT_VERSION_NUMBER
10829 )
10830 VALUES
10832 ,l_ip_account_id
10833 ,l_txn_id
10834 ,NULL
10835 ,SYSDATE
10836 ,l_user_id
10837 ,sysdate
10838 ,l_user_id
10839 ,sysdate
10840 ,-1
10841 ,1
10842 );
10843 --
10844 Update CSI_ITEM_INSTANCES
10845 set owner_party_id = l_internal_party_id,
10846 owner_party_account_id = null
10847 where instance_id = l_inst_tbl(j);
10848 --
10849 select last_vld_organization_id
10850 into l_vld_org_id
10851 from CSI_ITEM_INSTANCES
10852 where instance_id = l_inst_tbl(j);
10853 --
10854 CSI_Item_Instance_Pvt.Call_to_Contracts
10855 ( p_transaction_type => 'TRM'
10856 ,p_instance_id => l_inst_tbl(j)
10857 ,p_new_instance_id => NULL
10858 ,p_vld_org_id => l_vld_org_id
10859 ,p_quantity => NULL
10860 ,p_party_account_id1 => NULL
10861 ,p_party_account_id2 => NULL
10862 ,p_oks_txn_inst_tbl => px_oks_txn_inst_tbl
10863 ,x_return_status => x_return_status
10864 ,x_msg_count => x_msg_count
10865 ,x_msg_data => x_msg_data
10866 );
10867 --
10868 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
10869 Raise Comp_error;
10870 END IF;
10871 Exception
10872 when Process_next then
10873 null;
10874 End;
10875 END LOOP;
10876 END IF;
10877 --
10878 IF px_oks_txn_inst_tbl.count > 0 THEN
10879 UPDATE CSI_TRANSACTIONS
10880 set contracts_invoked = 'Y'
10881 where transaction_id = l_txn_id;
10882 --
10883 OKS_IBINT_PUB.IB_interface
10884 (
10885 P_Api_Version => 1.0,
10886 P_init_msg_list => fnd_api.g_true,
10887 P_single_txn_date_flag => 'Y',
10888 P_Batch_type => NULL,
10889 P_Batch_ID => NULL,
10890 P_OKS_Txn_Inst_tbl => px_oks_txn_inst_tbl,
10891 x_return_status => x_return_status,
10892 x_msg_count => x_msg_count,
10893 x_msg_data => x_msg_data
10894 );
10895 --
10896 IF NOT(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
10897 Raise Comp_error;
10898 END IF;
10899 END IF;
10900 commit;
10901 EXCEPTION
10902 when comp_error then
10903 Rollback to DATA_FIX;
10904 when others then
10905 Rollback to DATA_FIX;
10906 END Revert_Party_Rel_Type_Update;
10907 --
10908 PROCEDURE Update_Master_Organization_ID IS
10909 CURSOR CSI_CUR IS
10910 select cii.instance_id,cii.inv_master_organization_id,
10911 cii.last_vld_organization_id
10912 from CSI_ITEM_INSTANCES cii
10913 where not exists (select 'x'
10914 from MTL_PARAMETERS msi
10915 where organization_id = inv_master_organization_id
10916 and master_organization_id = inv_master_organization_id);
10917 --
10918 Type NumTabType is VARRAY(10000) of NUMBER;
10919 instance_id_mig NumTabType;
10920 inv_master_org_id_mig NumTabType;
10921 last_vld_org_id_mig NumTabType;
10922 --
10923 MAX_BUFFER_SIZE NUMBER := 1000;
10924 BEGIN
10925 OPEN CSI_CUR;
10926 LOOP
10927 FETCH CSI_CUR BULK COLLECT INTO
10928 instance_id_mig,
10929 inv_master_org_id_mig,
10930 last_vld_org_id_mig
10931 LIMIT MAX_BUFFER_SIZE;
10932 --
10933 FOR j in 1..instance_id_mig.count LOOP
10934 Begin
10935 select master_organization_id
10936 into inv_master_org_id_mig(j)
10937 from MTL_PARAMETERS
10938 where organization_id = last_vld_org_id_mig(j);
10939 Exception
10940 when no_data_found then
10941 inv_master_org_id_mig(j) := inv_master_org_id_mig(j);
10942 End;
10943 END LOOP;
10944 --
10945 FORALL i in 1..instance_id_mig.count
10946 UPDATE CSI_ITEM_INSTANCES
10947 set inv_master_organization_id = inv_master_org_id_mig(i)
10948 where instance_id = instance_id_mig(i);
10949 commit;
10950 --
10951 FORALL i in 1..instance_id_mig.count
10952 UPDATE CSI_ITEM_INSTANCES_H
10953 set old_inv_master_organization_id = decode(old_inv_master_organization_id,null,null,inv_master_org_id_mig(i)),
10954 new_inv_master_organization_id = decode(new_inv_master_organization_id,null,null,inv_master_org_id_mig(i))
10955 where instance_id = instance_id_mig(i);
10956 commit;
10957 --
10958 EXIT WHEN CSI_CUR%NOTFOUND;
10959 END LOOP;
10960 commit;
10961 CLOSE CSI_CUR;
10962 END Update_Master_Organization_ID;
10963 --
10964 PROCEDURE Get_Children
10965 (p_object_id IN NUMBER,
10966 p_rel_tbl OUT NOCOPY csi_datastructures_pub.ii_relationship_tbl
10967 ) IS
10968 --
10972 l_rel_tbl_final csi_datastructures_pub.ii_relationship_tbl;
10969 l_rel_tbl csi_datastructures_pub.ii_relationship_tbl;
10970 l_rel_tbl_next_lvl csi_datastructures_pub.ii_relationship_tbl;
10971 l_rel_tbl_temp csi_datastructures_pub.ii_relationship_tbl;
10973 l_next_ind NUMBER := 0;
10974 l_final_ind NUMBER := 0;
10975 l_ctr NUMBER := 0;
10976 l_found NUMBER;
10977 BEGIN
10978 Get_Next_Level
10979 ( p_object_id => p_object_id,
10980 p_rel_tbl => l_rel_tbl
10981 );
10982
10983 <<Next_Level>>
10984
10985 l_rel_tbl_next_lvl.delete;
10986 l_next_ind := 0;
10987 --
10988 IF l_rel_tbl.count > 0 THEN
10989 FOR l_ind IN l_rel_tbl.FIRST .. l_rel_tbl.LAST LOOP
10990 l_final_ind := l_final_ind + 1;
10991 l_rel_tbl_final(l_final_ind) := l_rel_tbl(l_ind);
10992 /* get the next level using this Subject ID as the parent */
10993 Get_Next_Level
10994 ( p_object_id => l_rel_tbl(l_ind).subject_id,
10995 p_rel_tbl => l_rel_tbl_temp
10996 );
10997 --
10998 IF l_rel_tbl_temp.count > 0 THEN
10999 FOR l_temp_ind IN l_rel_tbl_temp.FIRST .. l_rel_tbl_temp.LAST LOOP
11000 IF l_rel_tbl_final.count > 0 THEN
11001 l_found := 0;
11002 FOR i IN l_rel_tbl_final.FIRST .. l_rel_tbl_final.LAST LOOP
11003 IF l_rel_tbl_final(i).object_id = l_rel_tbl_temp(l_temp_ind).object_id THEN
11004 l_found := 1;
11005 exit;
11006 END IF;
11007 END LOOP;
11008 END IF;
11009 IF l_found = 0 THEN
11010 l_next_ind := l_next_ind + 1;
11011 l_rel_tbl_next_lvl(l_next_ind) := l_rel_tbl_temp(l_temp_ind);
11012 END IF;
11013 END LOOP;
11014 END IF;
11015 END LOOP;
11016 --
11017 IF l_rel_tbl_next_lvl.count > 0 THEN
11018 l_rel_tbl.DELETE;
11019 l_rel_tbl := l_rel_tbl_next_lvl;
11020 --
11021 goto Next_Level;
11022 END IF;
11023 END IF;
11024 --
11025 p_rel_tbl := l_rel_tbl_final;
11026 --
11027 -- The output of l_rel_tbl_final will be Breadth first search Order.
11028 END Get_Children;
11029 --
11030 PROCEDURE Delete_Dup_Relationship IS
11031 CURSOR CSI_REL_CUR IS
11032 select object_id,subject_id,relationship_type_code,count(*)
11033 from CSI_II_RELATIONSHIPS
11034 where active_end_date is null
11035 and nvl(migrated_flag,'N') = 'Y'
11036 group by object_id,subject_id,relationship_type_code
11037 having count(*) > 1;
11038 --
11039 -- Delete the ones that are not having any non-migrated txns
11040 CURSOR CSI_REL_DEL_CUR(p_rel_id IN NUMBER
11041 ,p_object_id IN NUMBER
11042 ,p_subject_id IN NUMBER
11043 ,p_rel_type IN VARCHAR2) IS
11044 select cir.relationship_id
11045 from CSI_II_RELATIONSHIPS cir
11046 where cir.object_id = p_object_id
11047 and cir.subject_id = p_subject_id
11048 and cir.relationship_type_code = p_rel_type
11049 and cir.active_end_date is null
11050 and nvl(cir.migrated_flag,'N') = 'Y'
11051 and cir.relationship_id <> p_rel_id
11052 and not exists (select 'x' from CSI_II_RELATIONSHIPS_H cirh
11053 where cirh.relationship_id = cir.relationship_id
11054 and nvl(cirh.migrated_flag,'N') = 'N');
11055 --
11056 l_ret_relationship_id NUMBER;
11057 TYPE NUMLIST IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
11058 l_rel_id_tbl NUMLIST;
11059 l_ctr NUMBER := 0;
11060 --
11061 Type NumTabType is VARRAY(10000) of NUMBER;
11062 Type V30TabType is VARRAY(10000) of VARCHAR2(30);
11063 l_object_id_mig NumTabType;
11064 l_subject_id_mig NumTabType;
11065 l_count_mig NumTabType;
11066 l_rel_type_code_mig V30TabType;
11067 --
11068 MAX_BUFFER_SIZE NUMBER := 1000;
11069 BEGIN
11070 OPEN CSI_REL_CUR;
11071 LOOP
11072 FETCH CSI_REL_CUR BULK COLLECT INTO
11073 l_object_id_mig,
11074 l_subject_id_mig,
11075 l_rel_type_code_mig,
11076 l_count_mig
11077 LIMIT MAX_BUFFER_SIZE;
11078 --
11079 FOR k in 1..l_object_id_mig.count LOOP
11080 l_ret_relationship_id := -9999;
11081 -- Try to get the relationship which has non-migrated txns
11082 Begin
11083 select max(cir.relationship_id)
11084 into l_ret_relationship_id
11085 from CSI_II_RELATIONSHIPS cir
11086 where cir.object_id = l_object_id_mig(k)
11087 and cir.subject_id = l_subject_id_mig(k)
11088 and cir.relationship_type_code = l_rel_type_code_mig(k)
11089 and cir.active_end_date is null
11090 and nvl(cir.migrated_flag,'N') = 'Y'
11091 and exists (select 'x' from CSI_II_RELATIONSHIPS_H cirh
11092 where cirh.relationship_id = cir.relationship_id
11093 and nvl(cirh.migrated_flag,'N') = 'N');
11094 End;
11095 --
11099 into l_ret_relationship_id
11096 IF nvl(l_ret_relationship_id,-9999) = -9999 THEN
11097 Begin
11098 select max(relationship_id)
11100 from CSI_II_RELATIONSHIPS
11101 where object_id = l_object_id_mig(k)
11102 and subject_id = l_subject_id_mig(k)
11103 and relationship_type_code = l_rel_type_code_mig(k)
11104 and active_end_date is null
11105 and nvl(migrated_flag,'N') = 'Y';
11106 End;
11107 END IF;
11108 --
11109 -- The above l_ret_relationship_id will be retained
11110 --
11111 FOR del_rec in CSI_REL_DEL_CUR(l_ret_relationship_id,
11112 l_object_id_mig(k),
11113 l_subject_id_mig(k),
11114 l_rel_type_code_mig(k)) LOOP
11115 l_ctr := l_ctr + 1;
11116 l_rel_id_tbl(l_ctr) := del_rec.relationship_id;
11117 END LOOP;
11118 END LOOP;
11119 EXIT WHEN CSI_REL_CUR%NOTFOUND;
11120 END LOOP;
11121 --
11122 IF CSI_REL_CUR%ISOPEN THEN
11123 CLOSE CSI_REL_CUR;
11124 END IF;
11125 --
11126 IF l_rel_id_tbl.count > 0 THEN
11127 FORALL j in l_rel_id_tbl.FIRST .. l_rel_id_tbl.LAST
11128 DELETE FROM CSI_II_RELATIONSHIPS_H
11129 WHERE relationship_id = l_rel_id_tbl(j);
11130 commit;
11131 --
11132 FORALL j in l_rel_id_tbl.FIRST .. l_rel_id_tbl.LAST
11133 DELETE FROM CSI_II_RELATIONSHIPS
11134 WHERE relationship_id = l_rel_id_tbl(j);
11135 commit;
11136 END IF;
11137 END Delete_Dup_Relationship;
11138 --
11139 PROCEDURE Call_Parallel_Expire
11140 (errbuf OUT NOCOPY VARCHAR2,
11141 retcode OUT NOCOPY NUMBER,
11142 p_process_code IN VARCHAR2
11143 ) IS
11144 --
11145 CURSOR EXP_CUR IS
11146 select instance_id,rowid
11147 from CSI_EXPIRE_INSTANCES_TEMP
11148 where process_code = p_process_code
11149 and processed_flag in ('E','R');
11150 --
11151 l_vld_org NUMBER;
11152 v_commit_count NUMBER := 0;
11153 --
11154 x_return_status VARCHAR2(1);
11155 x_msg_count NUMBER;
11156 x_msg_data VARCHAR2(2000);
11157 l_msg_index NUMBER;
11158 l_msg_count NUMBER;
11159 px_oks_txn_inst_tbl oks_ibint_pub.txn_instance_tbl;
11160 --
11161 Process_next EXCEPTION;
11162 BEGIN
11163 FOR exp IN EXP_CUR LOOP
11164 BEGIN
11165 Begin
11166 select last_vld_organization_id
11167 into l_vld_org
11168 from CSI_ITEM_INSTANCES
11169 where instance_id = exp.instance_id;
11170 Exception
11171 when no_data_found then
11172 Raise Process_next;
11173 End;
11174 --
11175 CSI_Item_Instance_Pvt.Call_to_Contracts
11176 ( p_transaction_type => 'TRM'
11177 ,p_instance_id => exp.instance_id
11178 ,p_new_instance_id => NULL
11179 ,p_vld_org_id => l_vld_org
11180 ,p_quantity => NULL
11181 ,p_party_account_id1 => NULL
11182 ,p_party_account_id2 => NULL
11183 ,p_oks_txn_inst_tbl => px_oks_txn_inst_tbl
11184 ,x_return_status => x_return_status
11185 ,x_msg_count => x_msg_count
11186 ,x_msg_data => x_msg_data
11187 );
11188 --
11189 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
11190 UPDATE CSI_EXPIRE_INSTANCES_TEMP
11191 set processed_flag = 'E',
11192 error_message = x_msg_data
11193 where rowid = exp.rowid;
11194 ELSE
11195 UPDATE CSI_EXPIRE_INSTANCES_TEMP
11196 set processed_flag = 'P',
11197 error_message = null
11198 where rowid = exp.rowid;
11199 END IF;
11200 --
11201 v_commit_count := v_commit_count + 1;
11202 IF v_commit_count = 500 THEN
11203 v_commit_count := 0;
11204 commit;
11205 END IF;
11206 EXCEPTION
11207 WHEN Process_next THEN
11208 NULL;
11209 END;
11210 END LOOP;
11211 commit;
11212 --
11213 IF px_oks_txn_inst_tbl.count > 0 THEN
11214 OKS_IBINT_PUB.IB_interface
11215 (
11216 P_Api_Version => 1.0,
11217 P_init_msg_list => fnd_api.g_true,
11218 P_single_txn_date_flag => 'Y',
11219 P_Batch_type => NULL,
11220 P_Batch_ID => NULL,
11221 P_OKS_Txn_Inst_tbl => px_oks_txn_inst_tbl,
11222 x_return_status => x_return_status,
11223 x_msg_count => x_msg_count,
11224 x_msg_data => x_msg_data
11225 );
11226 --
11227 END IF;
11228 END Call_Parallel_Expire;
11229 --
11230 PROCEDURE Expire_Non_Trackable_Instance IS
11231 CURSOR CSI_CUR IS
11232 select cii.instance_id,cii.inventory_item_id,cii.inv_master_organization_id
11233 from CSI_ITEM_INSTANCES cii
11237 select cii.instance_id,cii.inventory_item_id,cii.inv_master_organization_id,
11234 where nvl(cii.active_end_date,(sysdate+1)) > sysdate;
11235 --
11236 CURSOR REL_CUR IS
11238 cir.relationship_id
11239 from CSI_ITEM_INSTANCES cii,
11240 CSI_II_RELATIONSHIPS cir
11241 where nvl(cii.active_end_date,(sysdate+1)) > sysdate
11242 and cir.subject_id = cii.instance_id
11243 and cir.relationship_type_code = 'COMPONENT-OF'
11244 and nvl(cir.active_end_date,(sysdate+1)) > sysdate;
11245 --
11246 CURSOR CSI_MAT_ERROR IS
11247 select cii.transaction_error_id,
11248 mmt.inventory_item_id,mmt.organization_id
11249 from CSI_TXN_ERRORS cii,
11250 MTL_MATERIAL_TRANSACTIONS mmt
11251 where cii.processed_flag in ('E', 'R')
11252 and cii.inv_material_transaction_id is not null
11253 and mmt.transaction_id = cii.inv_material_transaction_id;
11254 --
11255 CURSOR CSI_NON_MAT_ERROR IS
11256 select transaction_error_id,source_id
11257 from CSI_TXN_ERRORS cii
11258 where cii.inv_material_transaction_id is null
11259 and cii.source_id is not null
11260 and cii.processed_flag in ('E', 'R');
11261 --
11262 v_commit_count NUMBER := 0;
11263 v_err_msg VARCHAR2(2000);
11264 v_txn_type_id NUMBER;
11265 v_txn_id NUMBER;
11266 v_user_id NUMBER := fnd_global.user_id;
11267 l_nl VARCHAR2(1);
11268 l_item_id NUMBER;
11269 l_org_id NUMBER;
11270 l_organization_id NUMBER;
11271 --
11272 TYPE NUMLIST IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
11273 l_upd_txn_tbl NUMLIST;
11274 l_upd_count NUMBER := 0;
11275 l_rel_count NUMBER := 0;
11276 l_rel_tbl NUMLIST;
11277 l_rel_code VARCHAR2(30) := 'COMPONENT-OF';
11278 l_ctr NUMBER := 0;
11279 l_inst_tbl NUMLIST;
11280 l_inst_hist_tbl NUMLIST;
11281 l_req_count NUMBER := 0;
11282 l_req_tbl NUMLIST;
11283 v_request_id NUMBER;
11284 l_child_tbl csi_datastructures_pub.ii_relationship_tbl;
11285 l_contracts_status VARCHAR2(3);
11286 l_ins_flag VARCHAR2(1) := 'N';
11287 --
11288 Type NumTabType is VARRAY(10000) of NUMBER;
11289 instance_id_mig NumTabType;
11290 inventory_item_id_mig NumTabType;
11291 mast_org_id_mig NumTabType;
11292 relationship_id_mig NumTabType;
11293 organization_id_mig NumTabType;
11294 txn_error_id_mig NumTabType;
11295 source_id_mig NumTabType;
11296 --
11297 MAX_BUFFER_SIZE NUMBER := 1000;
11298 INST_BUFFER_SIZE NUMBER := 1000;
11299 --
11300 comp_error EXCEPTION;
11301 Process_next EXCEPTION;
11302 BEGIN
11303 DELETE FROM CSI_EXPIRE_INSTANCES_TEMP
11304 WHERE processed_flag = 'P'
11305 AND process_code = 'EXPNL';
11306 commit;
11307 --
11308 -- Get the Transaction Type ID for Txn Type MIGRATED
11309 Begin
11310 select transaction_type_id
11311 into v_txn_type_id
11312 from CSI_TXN_TYPES
11313 where SOURCE_TRANSACTION_TYPE = 'DATA_CORRECTION';
11314 Exception
11315 when no_data_found then
11316 v_err_msg := 'Txn Type DATA_CORRECTION not defined in CSI_TXN_TYPES';
11317 Raise comp_error;
11318 when others then
11319 v_err_msg := 'Unable to get the ID for Txn Type DATA_CORRECTION from CSI_TXN_TYPES';
11320 Raise comp_error;
11321 End;
11322 -- End data the relationships
11323 OPEN REL_CUR;
11324 LOOP
11325 FETCH REL_CUR BULK COLLECT INTO
11326 instance_id_mig,
11327 inventory_item_id_mig,
11328 mast_org_id_mig,
11329 relationship_id_mig
11330 LIMIT MAX_BUFFER_SIZE;
11331 --
11332 FOR j in 1..instance_id_mig.count LOOP
11333 Begin
11334 Begin
11335 select nvl(comms_nl_trackable_flag,'N')
11336 into l_nl
11337 from MTL_SYSTEM_ITEMS
11338 where inventory_item_id = inventory_item_id_mig(j)
11339 and organization_id = mast_org_id_mig(j);
11340 Exception
11341 when no_data_found then
11342 Raise Process_next;
11343 End;
11344 IF l_nl <> 'Y' THEN
11345 l_rel_count := l_rel_count + 1;
11346 l_rel_tbl(l_rel_count) := relationship_id_mig(j);
11347 END IF;
11348 Exception
11349 when Process_next then
11350 null;
11351 End;
11352 END LOOP;
11353 EXIT WHEN REL_CUR%NOTFOUND;
11354 END LOOP;
11355 CLOSE REL_CUR;
11356 --
11357 IF REL_CUR%ISOPEN THEN
11358 CLOSE REL_CUR;
11359 END IF;
11360 -- Update the Relationship end_date.
11361 IF l_rel_tbl.count > 0 THEN
11362 FORALL i in l_rel_tbl.FIRST .. l_rel_tbl.LAST
11363 UPDATE CSI_II_RELATIONSHIPS
11367 commit;
11364 set active_end_date = sysdate
11365 where relationship_id = l_rel_tbl(i);
11366 --
11368 END IF;
11369 --
11370 select CSI_TRANSACTIONS_S.nextval
11371 into v_txn_id from dual;
11372 --
11373 OPEN CSI_CUR;
11374 LOOP
11375 FETCH CSI_CUR BULK COLLECT INTO
11376 instance_id_mig,
11377 inventory_item_id_mig,
11378 mast_org_id_mig
11379 LIMIT INST_BUFFER_SIZE;
11380 --
11381 l_ctr := 0;
11382 l_inst_tbl.DELETE;
11383 l_inst_hist_tbl.DELETE;
11384 --
11385 FOR i in 1 .. instance_id_mig.count LOOP
11386 Begin
11387 Begin
11388 select nvl(comms_nl_trackable_flag,'N')
11389 into l_nl
11390 from MTL_SYSTEM_ITEMS
11391 where inventory_item_id = inventory_item_id_mig(i)
11392 and organization_id = mast_org_id_mig(i);
11393 Exception
11394 when no_data_found then
11395 Raise Process_next;
11396 End;
11397 IF l_nl = 'Y' THEN
11398 Raise Process_next;
11399 END IF;
11400 --
11401 l_ctr := l_ctr + 1;
11402 l_inst_tbl(l_ctr) := instance_id_mig(i);
11403 --
11404 select CSI_ITEM_INSTANCES_H_S.nextval
11405 into l_inst_hist_tbl(l_ctr) from dual;
11406 --
11407 -- For this instance_id get the children
11408 l_child_tbl.DELETE;
11409 --
11410 Get_Children
11411 ( p_object_id => instance_id_mig(i),
11412 p_rel_tbl => l_child_tbl
11413 );
11414 --
11415 IF l_child_tbl.count > 0 THEN
11416 FOR rel_count in l_child_tbl.FIRST .. l_child_tbl.LAST LOOP
11417 l_ctr := l_ctr + 1;
11418 l_inst_tbl(l_ctr) := l_child_tbl(rel_count).subject_id;
11419 --
11420 select CSI_ITEM_INSTANCES_H_S.nextval
11421 into l_inst_hist_tbl(l_ctr) from dual;
11422 END LOOP;
11423 END IF;
11424 Exception
11425 when Process_next then
11426 null;
11427 End;
11428 END LOOP;
11429 IF l_inst_tbl.count > 0 THEN
11430 l_ins_flag := 'Y';
11431 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
11432 INSERT INTO CSI_EXPIRE_INSTANCES_TEMP
11433 ( INSTANCE_ID,
11434 PROCESSED_FLAG,
11435 PROCESS_CODE
11436 )
11437 VALUES
11438 ( l_inst_tbl(j),
11439 'R',
11440 'EXPNL'
11441 );
11442 -- Bulk Update Instances
11443 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
11444 UPDATE CSI_ITEM_INSTANCES
11445 set active_end_date = sysdate,
11446 instance_status_id = 1,
11447 last_update_date = sysdate,
11448 last_updated_by = v_user_id
11449 where instance_id = l_inst_tbl(j);
11450 --
11451 -- Tie the Transaction to the history
11452 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
11453 INSERT INTO CSI_ITEM_INSTANCES_H
11454 (
11455 INSTANCE_HISTORY_ID
11456 ,TRANSACTION_ID
11457 ,INSTANCE_ID
11458 ,CREATION_DATE
11459 ,LAST_UPDATE_DATE
11460 ,CREATED_BY
11461 ,LAST_UPDATED_BY
11462 ,LAST_UPDATE_LOGIN
11463 ,OBJECT_VERSION_NUMBER
11464 )
11465 VALUES
11466 (
11467 l_inst_hist_tbl(j)
11468 ,v_txn_id
11469 ,l_inst_tbl(j)
11470 ,SYSDATE
11471 ,SYSDATE
11472 ,v_user_id
11473 ,v_user_id
11474 ,-1
11475 ,1
11476 );
11477 END IF;
11478 commit;
11479 EXIT WHEN CSI_CUR%NOTFOUND;
11480 END LOOP;
11481 CLOSE CSI_CUR;
11482 -- Insert one record into CSI_TRANSACTIONS
11483 IF l_ins_flag = 'Y' THEN
11484 INSERT INTO CSI_TRANSACTIONS(
11485 TRANSACTION_ID
11486 ,TRANSACTION_DATE
11487 ,SOURCE_TRANSACTION_DATE
11488 ,SOURCE_HEADER_REF
11489 ,SOURCE_LINE_REF
11490 ,TRANSACTION_TYPE_ID
11491 ,CREATED_BY
11492 ,CREATION_DATE
11493 ,LAST_UPDATED_BY
11494 ,LAST_UPDATE_DATE
11495 ,LAST_UPDATE_LOGIN
11496 ,OBJECT_VERSION_NUMBER
11497 )
11498 VALUES(
11499 v_txn_id -- TRANSACTION_ID
11500 ,SYSDATE -- TRANSACTION_DATE
11501 ,SYSDATE -- SOURCE_TRANSACTION_DATE
11502 ,'COMMS_NL_TRACKABLE_FLAG got switched off' -- SOURCE_HEADER_REF
11503 ,'DATAFIX By Expire Non_NL Trackable' -- SOURCE_LINE_REF
11504 ,v_txn_type_id -- TRANSACTION_TYPE_ID
11508 ,sysdate
11505 ,v_user_id
11506 ,sysdate
11507 ,v_user_id
11509 ,-1
11510 ,1
11511 );
11512 END IF;
11513 commit;
11514 --
11515 IF CSI_CUR%ISOPEN THEN
11516 CLOSE CSI_CUR;
11517 END IF;
11518 -- Call Expire_Item_Instance wraper to Expire Contracts
11519 l_contracts_status := FND_PROFILE.VALUE('CSI_CONTRACTS_ENABLED');
11520 IF UPPER(l_contracts_status) = 'Y' THEN
11521 UPDATE CSI_TRANSACTIONS
11522 set contracts_invoked = 'Y'
11523 where transaction_id = v_txn_id;
11524 --
11525 v_request_id := 0;
11526 v_request_id := fnd_request.submit_request
11527 (
11528 'CSI'
11529 ,'CSIEXPIR'
11530 ,NULL
11531 ,SYSDATE
11532 ,FALSE
11533 ,'EXPNL'
11534 );
11535 commit;
11536 END IF; -- Contracts enabled check
11537 commit;
11538 -- Update the Relationship end_date back to null.
11539 IF l_rel_tbl.count > 0 THEN
11540 FORALL i in l_rel_tbl.FIRST .. l_rel_tbl.LAST
11541 UPDATE CSI_II_RELATIONSHIPS
11542 set active_end_date = null
11543 where relationship_id = l_rel_tbl(i);
11544 --
11545 commit;
11546 END IF;
11547 commit;
11548 --
11549 OPEN CSI_MAT_ERROR;
11550 LOOP
11551 FETCH CSI_MAT_ERROR BULK COLLECT INTO
11552 txn_error_id_mig,
11553 inventory_item_id_mig,
11554 organization_id_mig
11555 LIMIT MAX_BUFFER_SIZE;
11556 --
11557 FOR i in 1 .. txn_error_id_mig.count LOOP
11558 select comms_nl_trackable_flag
11559 into l_nl
11560 from MTL_SYSTEM_ITEMS msi,
11561 MTL_PARAMETERS mp
11562 where mp.organization_id = organization_id_mig(i)
11563 and msi.inventory_item_id = inventory_item_id_mig(i)
11564 and msi.organization_id = mp.master_organization_id;
11565 --
11566 IF nvl(l_nl,'N') <> 'Y' THEN
11567 l_upd_count := l_upd_count + 1;
11568 l_upd_txn_tbl(l_upd_count) := txn_error_id_mig(i);
11569 END IF;
11570 END LOOP;
11571 EXIT WHEN CSI_MAT_ERROR%NOTFOUND;
11572 END LOOP;
11573 CLOSE CSI_MAT_ERROR;
11574 --
11575 -- Perform a Bulk Update
11576 IF l_upd_txn_tbl.count > 0 THEN
11577 FORALL i in l_upd_txn_tbl.FIRST .. l_upd_txn_tbl.LAST
11578 UPDATE csi_txn_errors
11579 SET processed_flag = 'D',
11580 error_text = 'COMMS_NL_TRACKABLE_FLAG got switched off',
11581 last_update_date = sysdate
11582 WHERE transaction_error_id = l_upd_txn_tbl(i);
11583 commit;
11584 END IF;
11585 --
11586 --
11587 l_upd_txn_tbl.DELETE;
11588 l_upd_count := 0;
11589 --
11590 OPEN CSI_NON_MAT_ERROR;
11591 LOOP
11592 FETCH CSI_NON_MAT_ERROR BULK COLLECT INTO
11593 txn_error_id_mig,source_id_mig
11594 LIMIT MAX_BUFFER_SIZE;
11595 --
11596 FOR i in 1 .. txn_error_id_mig.count LOOP
11597 BEGIN
11598 Begin
11599 select oel.inventory_item_id,oel.org_id
11600 into l_item_id, l_org_id
11601 from OE_ORDER_LINES_ALL oel
11602 where oel.line_id = source_id_mig(i);
11603
11604 l_organization_id := oe_sys_parameters.value(
11605 param_name => 'MASTER_ORGANIZATION_ID',
11606 p_org_id => l_org_id);
11607
11608 Exception
11609 when no_data_found then
11610 Raise Process_next;
11611 End;
11612 --
11613 Begin
11614 select comms_nl_trackable_flag
11615 into l_nl
11616 from MTL_SYSTEM_ITEMS msi,
11617 MTL_PARAMETERS mp
11618 where mp.organization_id = l_organization_id
11619 and msi.inventory_item_id = l_item_id
11620 and msi.organization_id = mp.master_organization_id;
11621 Exception
11622 when no_data_found then
11623 Raise Process_next;
11624 End;
11625 --
11626 IF nvl(l_nl,'N') <> 'Y' THEN
11627 l_upd_count := l_upd_count + 1;
11628 l_upd_txn_tbl(l_upd_count) := txn_error_id_mig(i);
11629 END IF;
11630 EXCEPTION
11631 WHEN Process_next then
11632 NULL;
11633 END;
11634 END LOOP;
11635 EXIT WHEN CSI_NON_MAT_ERROR%NOTFOUND;
11636 END LOOP;
11637 CLOSE CSI_NON_MAT_ERROR;
11638 -- Perform a Bulk Update
11639 IF l_upd_txn_tbl.count > 0 THEN
11640 FORALL i in l_upd_txn_tbl.FIRST .. l_upd_txn_tbl.LAST
11641 UPDATE CSI_TXN_ERRORS
11642 set processed_flag = 'D',
11643 error_text = 'COMMS_NL_TRACKABLE_FLAG got switched off',
11644 last_update_date = sysdate
11645 where transaction_error_id = l_upd_txn_tbl(i);
11646 commit;
11650 CLOSE CSI_NON_MAT_ERROR;
11647 END IF;
11648 --
11649 IF CSI_NON_MAT_ERROR%ISOPEN THEN
11651 END IF;
11652 commit;
11653 EXCEPTION
11654 WHEN comp_error then
11655 NULL;
11656 END Expire_Non_Trackable_Instance;
11657 --
11658 -- The following procedure identifies the instances that got a srl/lot number without the
11659 -- respective control and nullify the srl/lot number.
11660 -- The history will be populated with the old srl/lot number and new value will be null.
11661 -- For Inventory instances, we just expire them
11662 --
11663 PROCEDURE Update_No_ctl_Srl_Lot_Inst IS
11664 /* commenting the following cursors for the bug 5989350 ,Since there is
11665 no need to nullify the serial and lot number for the instances
11666 which are already shipped to customers */
11667 /* CURSOR CSI_SRL_CUR IS
11668 select cii.instance_id,cii.serial_number,
11669 cii.last_vld_organization_id,cii.inventory_item_id
11670 from CSI_ITEM_INSTANCES cii
11671 where cii.serial_number is not null
11672 and cii.last_vld_organization_id is not null
11673 and cii.inv_organization_id is null
11674 and cii.inv_subinventory_name is null; -- to filter Inventory instances
11675 --
11676 CURSOR CSI_LOT_CUR IS
11677 select cii.instance_id,cii.lot_number,
11678 cii.last_vld_organization_id,cii.inventory_item_id
11679 from CSI_ITEM_INSTANCES cii
11680 where cii.lot_number is not null
11681 and cii.last_vld_organization_id is not null
11682 and cii.inv_organization_id is null
11683 and cii.inv_subinventory_name is null; -- to filter Inventory instances
11684 --
11685 */
11686 CURSOR INV_CSI_SRL_CUR IS
11687 select cii.instance_id,cii.serial_number,
11688 cii.last_vld_organization_id,cii.inventory_item_id
11689 from CSI_ITEM_INSTANCES cii
11690 where cii.serial_number is not null
11691 and cii.last_vld_organization_id is not null
11692 and cii.location_type_code = 'INVENTORY'
11693 and cii.instance_usage_code = 'IN_INVENTORY'
11694 and nvl(cii.active_end_date,(sysdate+1)) > sysdate
11695 and cii.inv_organization_id is not null
11696 and cii.inv_subinventory_name is not null; -- to handle Inventory instances
11697 --
11698 CURSOR INV_CSI_LOT_CUR IS
11699 select cii.instance_id,cii.lot_number,
11700 cii.last_vld_organization_id,cii.inventory_item_id
11701 from CSI_ITEM_INSTANCES cii
11702 where cii.lot_number is not null
11703 and cii.last_vld_organization_id is not null
11704 and cii.inv_organization_id is not null
11705 and cii.location_type_code = 'INVENTORY'
11706 and cii.instance_usage_code = 'IN_INVENTORY'
11707 and nvl(cii.active_end_date,(sysdate+1)) > sysdate
11708 and cii.inv_subinventory_name is not null; -- to handle Inventory instances
11709 --
11710 v_commit_count NUMBER := 0;
11711 v_err_msg VARCHAR2(2000);
11712 v_txn_type_id NUMBER;
11713 v_srl_txn_id NUMBER;
11714 v_lot_txn_id NUMBER;
11715 v_user_id NUMBER := fnd_global.user_id;
11716 v_srl_ctl NUMBER;
11717 v_lot_ctl NUMBER;
11718 --
11719 TYPE NUMLIST IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
11720 TYPE T_V30 IS TABLE OF VARCHAR2(30) INDEX BY BINARY_INTEGER;
11721 TYPE T_V80 IS TABLE OF VARCHAR2(80) INDEX BY BINARY_INTEGER;
11722 --
11723 l_ctr NUMBER := 0;
11724 l_inst_tbl NUMLIST;
11725 l_srl_tbl T_V30;
11726 l_lot_tbl T_V80;
11727 l_inst_hist_tbl NUMLIST;
11728 l_srl_ins_flag VARCHAR2(1) := 'N';
11729 l_lot_ins_flag VARCHAR2(1) := 'N';
11730 --
11731 Type NumTabType is VARRAY(10000) of NUMBER;
11732 Type V30TabType is VARRAY(10000) of VARCHAR2(30);
11733 Type V80TabType is VARRAY(10000) of VARCHAR2(80); --bnarayan added for lot number change
11734 --
11735 instance_id_mig NumTabType;
11736 vld_org_id_mig NumTabType;
11737 inventory_item_id_mig NumTabType;
11738 serial_number_mig V30TabType;
11739 lot_number_mig V80TabType;
11740 relationship_id_mig NumTabType;
11741 organization_id_mig NumTabType;
11742 --
11743 MAX_BUFFER_SIZE NUMBER := 1000;
11744 INST_BUFFER_SIZE NUMBER := 1000;
11745 --
11746 comp_error EXCEPTION;
11747 BEGIN
11748 -- Get the Transaction Type ID for Txn Type DATA_CORRECTION
11749 Begin
11750 select transaction_type_id
11751 into v_txn_type_id
11752 from CSI_TXN_TYPES
11753 where SOURCE_TRANSACTION_TYPE = 'DATA_CORRECTION';
11754 Exception
11755 when no_data_found then
11756 v_err_msg := 'Txn Type DATA_CORRECTION not defined in CSI_TXN_TYPES';
11757 Raise comp_error;
11758 when others then
11759 v_err_msg := 'Unable to get the ID for Txn Type DATA_CORRECTION from CSI_TXN_TYPES';
11760 Raise comp_error;
11761 End;
11762 --
11763 select CSI_TRANSACTIONS_S.nextval
11764 into v_srl_txn_id from dual;
11765 --
11766 select CSI_TRANSACTIONS_S.nextval
11767 into v_lot_txn_id from dual;
11771 which are already shipped to customers */
11768 --
11769 /* commenting the following cursors for the bug 5989350 ,Since there is
11770 no need to nullify the serial and lot number for the instances
11772 /*OPEN CSI_SRL_CUR;
11773 LOOP
11774 FETCH CSI_SRL_CUR BULK COLLECT INTO
11775 instance_id_mig,
11776 serial_number_mig,
11777 vld_org_id_mig,
11778 inventory_item_id_mig
11779 LIMIT INST_BUFFER_SIZE;
11780 --
11781 l_ctr := 0;
11782 l_inst_tbl.DELETE;
11783 l_srl_tbl.DELETE;
11784 l_inst_hist_tbl.DELETE;
11785 --
11786 FOR i in 1 .. instance_id_mig.count LOOP
11787 v_srl_ctl := null;
11788 Begin
11789 select serial_number_control_code
11790 into v_srl_ctl
11791 from MTL_SYSTEM_ITEMS
11792 where inventory_item_id = inventory_item_id_mig(i)
11793 and organization_id = vld_org_id_mig(i);
11794 Exception
11795 when others then
11796 v_srl_ctl := null;
11797 End;
11798 IF nvl(v_srl_ctl,1) = 1 THEN
11799 l_ctr := l_ctr + 1;
11800 l_inst_tbl(l_ctr) := instance_id_mig(i);
11801 l_srl_tbl(l_ctr) := serial_number_mig(i);
11802 --
11803 select CSI_ITEM_INSTANCES_H_S.nextval
11804 into l_inst_hist_tbl(l_ctr) from dual;
11805 END IF;
11806 --
11807 END LOOP;
11808 IF l_inst_tbl.count > 0 THEN
11809 -- Bulk Update Instances
11810 l_srl_ins_flag := 'Y';
11811 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
11812 UPDATE CSI_ITEM_INSTANCES
11813 set serial_number = null,
11814 mfg_serial_number_flag = 'N',
11815 last_update_date = sysdate,
11816 last_updated_by = v_user_id
11817 where instance_id = l_inst_tbl(j);
11818 --
11819 -- Tie the Transaction to the history
11820 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
11821 INSERT INTO CSI_ITEM_INSTANCES_H
11822 (
11823 INSTANCE_HISTORY_ID
11824 ,TRANSACTION_ID
11825 ,INSTANCE_ID
11826 ,OLD_SERIAL_NUMBER
11827 ,NEW_SERIAL_NUMBER
11828 ,CREATION_DATE
11829 ,LAST_UPDATE_DATE
11830 ,CREATED_BY
11831 ,LAST_UPDATED_BY
11832 ,LAST_UPDATE_LOGIN
11833 ,OBJECT_VERSION_NUMBER
11834 )
11835 VALUES
11836 (
11837 l_inst_hist_tbl(j)
11838 ,v_srl_txn_id
11839 ,l_inst_tbl(j)
11840 ,l_srl_tbl(j)
11841 ,NULL
11842 ,SYSDATE
11843 ,SYSDATE
11844 ,v_user_id
11845 ,v_user_id
11846 ,-1
11847 ,1
11848 );
11849 END IF;
11850 commit;
11851 EXIT WHEN CSI_SRL_CUR%NOTFOUND;
11852 END LOOP;
11853 commit;
11854 CLOSE CSI_SRL_CUR;
11855 --
11856 OPEN CSI_LOT_CUR;
11857 LOOP
11858 FETCH CSI_LOT_CUR BULK COLLECT INTO
11859 instance_id_mig,
11860 lot_number_mig,
11861 vld_org_id_mig,
11862 inventory_item_id_mig
11863 LIMIT INST_BUFFER_SIZE;
11864 --
11865 l_ctr := 0;
11866 l_inst_tbl.DELETE;
11867 l_lot_tbl.DELETE;
11868 l_inst_hist_tbl.DELETE;
11869 --
11870 FOR i in 1 .. instance_id_mig.count LOOP
11871 v_lot_ctl := null;
11872 Begin
11873 select lot_control_code
11874 into v_lot_ctl
11875 from MTL_SYSTEM_ITEMS
11876 where inventory_item_id = inventory_item_id_mig(i)
11877 and organization_id = vld_org_id_mig(i);
11878 Exception
11879 when others then
11880 v_lot_ctl := null;
11881 End;
11882 IF nvl(v_lot_ctl,1) = 1 THEN
11883 l_ctr := l_ctr + 1;
11884 l_inst_tbl(l_ctr) := instance_id_mig(i);
11885 l_lot_tbl(l_ctr) := lot_number_mig(i);
11886 --
11887 select CSI_ITEM_INSTANCES_H_S.nextval
11888 into l_inst_hist_tbl(l_ctr) from dual;
11889 END IF;
11890 END LOOP;
11891 --
11892 IF l_inst_tbl.count > 0 THEN
11893 l_lot_ins_flag := 'Y';
11894 -- Bulk Update Instances
11895 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
11896 UPDATE CSI_ITEM_INSTANCES
11897 set lot_number = null,
11898 last_update_date = sysdate,
11899 last_updated_by = v_user_id
11900 where instance_id = l_inst_tbl(j);
11901 --
11902 -- Tie the Transaction to the history
11903 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
11904 INSERT INTO CSI_ITEM_INSTANCES_H
11905 (
11906 INSTANCE_HISTORY_ID
11907 ,TRANSACTION_ID
11908 ,INSTANCE_ID
11909 ,OLD_LOT_NUMBER
11910 ,NEW_LOT_NUMBER
11911 ,CREATION_DATE
11912 ,LAST_UPDATE_DATE
11913 ,CREATED_BY
11914 ,LAST_UPDATED_BY
11915 ,LAST_UPDATE_LOGIN
11919 (
11916 ,OBJECT_VERSION_NUMBER
11917 )
11918 VALUES
11920 l_inst_hist_tbl(j)
11921 ,v_lot_txn_id
11922 ,l_inst_tbl(j)
11923 ,l_lot_tbl(j)
11924 ,NULL
11925 ,SYSDATE
11926 ,SYSDATE
11927 ,v_user_id
11928 ,v_user_id
11929 ,-1
11930 ,1
11931 );
11932 END IF;
11933 commit;
11934 EXIT WHEN CSI_LOT_CUR%NOTFOUND;
11935 END LOOP;
11936 commit;
11937 CLOSE CSI_LOT_CUR;*/
11938 --
11939 OPEN INV_CSI_SRL_CUR;
11940 LOOP
11941 FETCH INV_CSI_SRL_CUR BULK COLLECT INTO
11942 instance_id_mig,
11943 serial_number_mig,
11944 vld_org_id_mig,
11945 inventory_item_id_mig
11946 LIMIT INST_BUFFER_SIZE;
11947 --
11948 l_ctr := 0;
11949 l_inst_tbl.DELETE;
11950 l_inst_hist_tbl.DELETE;
11951 --
11952 FOR i in 1 .. instance_id_mig.count LOOP
11953 v_srl_ctl := null;
11954 Begin
11955 select serial_number_control_code
11956 into v_srl_ctl
11957 from MTL_SYSTEM_ITEMS
11958 where inventory_item_id = inventory_item_id_mig(i)
11959 and organization_id = vld_org_id_mig(i);
11960 Exception
11961 when others then
11962 v_srl_ctl := null;
11963 End;
11964 IF nvl(v_srl_ctl,1) = 1 THEN
11965 l_ctr := l_ctr + 1;
11966 l_inst_tbl(l_ctr) := instance_id_mig(i);
11967 --
11968 select CSI_ITEM_INSTANCES_H_S.nextval
11969 into l_inst_hist_tbl(l_ctr) from dual;
11970 END IF;
11971 END LOOP;
11972 IF l_inst_tbl.count > 0 THEN
11973 -- Bulk Update Instances
11974 l_srl_ins_flag := 'Y';
11975 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
11976 UPDATE CSI_ITEM_INSTANCES
11977 set active_end_date = sysdate,
11978 instance_status_id = 1,
11979 last_update_date = sysdate,
11980 last_updated_by = v_user_id
11981 where instance_id = l_inst_tbl(j);
11982 --
11983 -- Tie the Transaction to the history
11984 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
11985 INSERT INTO CSI_ITEM_INSTANCES_H
11986 (
11987 INSTANCE_HISTORY_ID
11988 ,TRANSACTION_ID
11989 ,INSTANCE_ID
11990 ,CREATION_DATE
11991 ,LAST_UPDATE_DATE
11992 ,CREATED_BY
11993 ,LAST_UPDATED_BY
11994 ,LAST_UPDATE_LOGIN
11995 ,OBJECT_VERSION_NUMBER
11996 )
11997 VALUES
11998 (
11999 l_inst_hist_tbl(j)
12000 ,v_srl_txn_id
12001 ,l_inst_tbl(j)
12002 ,SYSDATE
12003 ,SYSDATE
12004 ,v_user_id
12005 ,v_user_id
12006 ,-1
12007 ,1
12008 );
12009 END IF;
12010 commit;
12011 EXIT WHEN INV_CSI_SRL_CUR%NOTFOUND;
12012 END LOOP;
12013 commit;
12014 CLOSE INV_CSI_SRL_CUR;
12015 --
12016 OPEN INV_CSI_LOT_CUR;
12017 LOOP
12018 FETCH INV_CSI_LOT_CUR BULK COLLECT INTO
12019 instance_id_mig,
12020 lot_number_mig,
12021 vld_org_id_mig,
12022 inventory_item_id_mig
12023 LIMIT INST_BUFFER_SIZE;
12024 --
12025 l_ctr := 0;
12026 l_inst_tbl.DELETE;
12027 l_inst_hist_tbl.DELETE;
12028 --
12029 FOR i in 1 .. instance_id_mig.count LOOP
12030 v_lot_ctl := null;
12031 Begin
12032 select lot_control_code
12033 into v_lot_ctl
12034 from MTL_SYSTEM_ITEMS
12035 where inventory_item_id = inventory_item_id_mig(i)
12036 and organization_id = vld_org_id_mig(i);
12037 Exception
12038 when others then
12039 v_lot_ctl := null;
12040 End;
12041 IF nvl(v_lot_ctl,1) = 1 THEN
12042 l_ctr := l_ctr + 1;
12043 l_inst_tbl(l_ctr) := instance_id_mig(i);
12044 --
12045 select CSI_ITEM_INSTANCES_H_S.nextval
12046 into l_inst_hist_tbl(l_ctr) from dual;
12047 END IF;
12048 END LOOP;
12049 --
12050 IF l_inst_tbl.count > 0 THEN
12051 l_lot_ins_flag := 'Y';
12052 -- Bulk Update Instances
12053 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
12054 UPDATE CSI_ITEM_INSTANCES
12055 set active_end_date = sysdate,
12056 instance_status_id = 1,
12057 last_update_date = sysdate,
12058 last_updated_by = v_user_id
12059 where instance_id = l_inst_tbl(j);
12060 --
12061 -- Tie the Transaction to the history
12062 FORALL j in l_inst_tbl.FIRST .. l_inst_tbl.LAST
12063 INSERT INTO CSI_ITEM_INSTANCES_H
12064 (
12065 INSTANCE_HISTORY_ID
12066 ,TRANSACTION_ID
12067 ,INSTANCE_ID
12068 ,CREATION_DATE
12069 ,LAST_UPDATE_DATE
12070 ,CREATED_BY
12071 ,LAST_UPDATED_BY
12072 ,LAST_UPDATE_LOGIN
12073 ,OBJECT_VERSION_NUMBER
12074 )
12075 VALUES
12076 (
12080 ,SYSDATE
12077 l_inst_hist_tbl(j)
12078 ,v_lot_txn_id
12079 ,l_inst_tbl(j)
12081 ,SYSDATE
12082 ,v_user_id
12083 ,v_user_id
12084 ,-1
12085 ,1
12086 );
12087 END IF;
12088 commit;
12089 EXIT WHEN INV_CSI_LOT_CUR%NOTFOUND;
12090 END LOOP;
12091 commit;
12092 CLOSE INV_CSI_LOT_CUR;
12093 --
12094 -- Insert one record into CSI_TRANSACTIONS
12095 IF l_srl_ins_flag = 'Y' THEN
12096 INSERT INTO CSI_TRANSACTIONS(
12097 TRANSACTION_ID
12098 ,TRANSACTION_DATE
12099 ,SOURCE_TRANSACTION_DATE
12100 ,SOURCE_HEADER_REF
12101 ,SOURCE_LINE_REF
12102 ,TRANSACTION_TYPE_ID
12103 ,CREATED_BY
12104 ,CREATION_DATE
12105 ,LAST_UPDATED_BY
12106 ,LAST_UPDATE_DATE
12107 ,LAST_UPDATE_LOGIN
12108 ,OBJECT_VERSION_NUMBER
12109 )
12110 VALUES(
12111 v_srl_txn_id -- TRANSACTION_ID
12112 ,SYSDATE -- TRANSACTION_DATE
12113 ,SYSDATE -- SOURCE_TRANSACTION_DATE
12114 ,'Serial or Lot Control got switched off' -- SOURCE_HEADER_REF
12115 ,'DATAFIX By Update_No_ctl_Srl_Lot_Inst' -- SOURCE_LINE_REF
12116 ,v_txn_type_id -- TRANSACTION_TYPE_ID
12117 ,v_user_id
12118 ,sysdate
12119 ,v_user_id
12120 ,sysdate
12121 ,-1
12122 ,1
12123 );
12124 END IF;
12125 --
12126 IF l_lot_ins_flag = 'Y' THEN
12127 INSERT INTO CSI_TRANSACTIONS(
12128 TRANSACTION_ID
12129 ,TRANSACTION_DATE
12130 ,SOURCE_TRANSACTION_DATE
12131 ,SOURCE_HEADER_REF
12132 ,SOURCE_LINE_REF
12133 ,TRANSACTION_TYPE_ID
12134 ,CREATED_BY
12135 ,CREATION_DATE
12136 ,LAST_UPDATED_BY
12137 ,LAST_UPDATE_DATE
12138 ,LAST_UPDATE_LOGIN
12139 ,OBJECT_VERSION_NUMBER
12140 )
12141 VALUES(
12142 v_lot_txn_id -- TRANSACTION_ID
12143 ,SYSDATE -- TRANSACTION_DATE
12144 ,SYSDATE -- SOURCE_TRANSACTION_DATE
12145 ,'Serial or Lot Control got switched off' -- SOURCE_HEADER_REF
12146 ,'DATAFIX By Update_No_ctl_Srl_Lot_Inst' -- SOURCE_LINE_REF
12147 ,v_txn_type_id -- TRANSACTION_TYPE_ID
12148 ,v_user_id
12149 ,sysdate
12150 ,v_user_id
12151 ,sysdate
12152 ,-1
12153 ,1
12154 );
12155 END IF;
12156 commit;
12157 EXCEPTION
12158 when comp_error then
12159 null;
12160 END Update_No_ctl_Srl_Lot_Inst;
12161 --
12162 -- This following Procedure identifies the failed shipping Txn and Bumpup or Create the
12163 -- necessary Shipping subinventory.
12164 -- We also consider WIP issues that need to be bumped up.
12165 PROCEDURE Create_or_Update_Shipping_Inst IS
12166 CURSOR CSI_CUR IS
12167 select cii.transaction_error_id,cii.inv_material_transaction_id,
12168 null,null,null,null,null,null
12169 from csi_txn_errors cii
12170 where cii.processed_flag in ('E', 'R')
12171 and cii.inv_material_transaction_id is not null;
12172 --
12173 CURSOR LOT_CUR(p_txn_id in number) IS
12174 select lot_number,ABS(primary_quantity) transaction_quantity
12175 from mtl_transaction_lot_numbers
12176 where transaction_id = p_txn_id;
12177 --
12178 v_txn_id NUMBER;
12179 l_upg_profile VARCHAR2(30) := fnd_Profile.value('CSI_UPGRADING_FROM_RELEASE');
12180 v_freeze_date DATE;
12181 v_txn_type_id NUMBER;
12182 v_nl_trackable VARCHAR2(1);
12183 v_mast_org_id NUMBER;
12184 v_location_id NUMBER;
12185 v_ins_condition_id NUMBER;
12186 v_mfg_srl_flag VARCHAR2(1);
12187 v_ins_status_id NUMBER;
12188 v_instance_id NUMBER;
12189 v_ins_history_id NUMBER;
12190 v_created_by NUMBER := fnd_global.user_id;
12191 v_last_updated_by NUMBER := fnd_global.user_id;
12192 v_ins_ou_id NUMBER;
12193 v_ins_ou_history_id NUMBER;
12194 v_ins_party_id NUMBER;
12195 v_ins_party_history_id NUMBER;
12196 v_party_id NUMBER;
12197 v_source_reference_id NUMBER;
12198 v_err_msg VARCHAR2(2000);
12199 v_exists VARCHAR2(1);
12200 v_ins_qty NUMBER;
12201 v_srl_ctl NUMBER;
12202 v_lot_ctl NUMBER;
12203 v_pri_uom VARCHAR2(3);
12204 --
12205 Type NumTabType is VARRAY(10000) of NUMBER;
12206 txn_error_id_mig NumTabType;
12207 mat_txn_id_mig NumTabType;
12208 organization_id_mig NumTabType;
12209 inventory_item_id_mig NumTabType;
12210 locator_id_mig NumTabType;
12211 quantity_mig NumTabType;
12212 --
12213 Type V3Type is VARRAY(10000) of VARCHAR2(3);
12217 subinv_mig V10Type;
12214 revision_mig V3Type;
12215 --
12216 Type V10Type is VARRAY(10000) of VARCHAR2(10);
12218 --
12219 MAX_BUFFER_SIZE NUMBER := 1000;
12220 --
12221 Comp_error EXCEPTION;
12222 Process_next EXCEPTION;
12223 BEGIN
12224 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
12225 csi_gen_utility_pvt.populate_install_param_rec;
12226 END IF;
12227 --
12228 v_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
12229 --
12230 -- Get the Transaction Type ID for Txn Type MIGRATED
12231 Begin
12232 select transaction_type_id
12233 into v_txn_type_id
12234 from CSI_TXN_TYPES
12235 where SOURCE_TRANSACTION_TYPE = 'DATA_CORRECTION';
12236 Exception
12237 when no_data_found then
12238 v_err_msg := 'Txn Type DATA_CORRECTION not defined in CSI_TXN_TYPES';
12239 Raise comp_error;
12240 when others then
12241 v_err_msg := 'Unable to get the ID for Txn Type DATA_CORRECTION from CSI_TXN_TYPES';
12242 Raise comp_error;
12243 End;
12244 --
12245 -- Get the LATEST Status ID. This will be used for all INV records.
12246 Begin
12247 select instance_status_id
12248 into v_ins_status_id
12249 from CSI_INSTANCE_STATUSES
12250 where name = 'Latest';
12251 Exception
12252 when no_data_found then
12253 v_err_msg := 'Status ID not found in CSI for Latest Status';
12254 Raise comp_error;
12255 when too_many_rows then
12256 v_err_msg := 'Too many rows fouund in CSI for Latest Status';
12257 Raise comp_error;
12258 when others then
12259 v_err_msg := 'Error in getting the Status ID in CSI for Latest Status';
12260 Raise comp_error;
12261 End;
12262 -- Get the Internal Party ID
12263 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
12264 csi_gen_utility_pvt.populate_install_param_rec;
12265 END IF;
12266 --
12267 v_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
12268 --
12269 if v_party_id is null then
12270 v_err_msg := 'Internal Party ID not found in CSI_INSTALL_PARAMETERS';
12271 Raise comp_error;
12272 end if;
12273 --
12274 OPEN CSI_CUR;
12275 LOOP
12276 FETCH CSI_CUR BULK COLLECT INTO
12277 txn_error_id_mig,
12278 mat_txn_id_mig,
12279 inventory_item_id_mig,
12280 revision_mig,
12281 organization_id_mig,
12282 subinv_mig,
12283 locator_id_mig,
12284 quantity_mig
12285 LIMIT MAX_BUFFER_SIZE;
12286 FOR i in 1..txn_error_id_mig.count LOOP
12287 Begin
12288 Begin
12289 select inventory_item_id,organization_id,revision,
12290 subinventory_code,locator_id,abs(primary_quantity) transaction_quantity
12291 into inventory_item_id_mig(i),organization_id_mig(i),revision_mig(i),
12292 subinv_mig(i),locator_id_mig(i),quantity_mig(i)
12293 from MTL_MATERIAL_TRANSACTIONS
12294 where transaction_id = mat_txn_id_mig(i)
12295 and ( (transaction_type_id = 33) OR
12296 (transaction_source_type_id = 5 AND transaction_quantity < 0) );
12297 Exception
12298 when others then
12299 Raise Process_next;
12300 End;
12301 Begin
12302 select primary_uom_code,serial_number_control_code,lot_control_code
12303 into v_pri_uom,v_srl_ctl,v_lot_ctl
12304 from MTL_SYSTEM_ITEMS
12305 where inventory_item_id = inventory_item_id_mig(i)
12306 and organization_id = organization_id_mig(i);
12307 Exception
12308 when no_data_found then
12309 Raise Process_next;
12310 End;
12311 --
12312 IF v_srl_ctl <> 1 THEN
12313 Raise Process_next;
12314 END IF;
12315 --
12316 -- Get the Master Organization ID
12317 Begin
12318 select master_organization_id
12319 into v_mast_org_id
12320 from MTL_PARAMETERS
12321 where organization_id = organization_id_mig(i);
12322 Exception
12323 when no_data_found then
12324 Raise Process_next;
12325 End;
12326 --
12327 v_nl_trackable := 'N';
12328 Begin
12329 select comms_nl_trackable_flag
12330 into v_nl_trackable
12331 from MTL_SYSTEM_ITEMS
12332 where inventory_item_id = inventory_item_id_mig(i)
12333 and organization_id = v_mast_org_id;
12334 Exception
12335 when no_data_found then
12336 Raise Process_next;
12337 End;
12338 --
12339 IF NVL(v_nl_trackable,'N') <> 'Y' THEN
12340 Update CSI_TXN_ERRORS
12341 set processed_flag = 'D'
12342 ,error_text = 'COMMS_NL_TRACKABLE_FLAG got switched off'
12343 ,last_update_date = sysdate
12344 where transaction_error_id = txn_error_id_mig(i);
12345 --
12346 Raise Process_next;
12350 v_exists := 'N';
12347 END IF;
12348 --
12349 IF v_lot_ctl = 1 THEN
12351 Begin
12352 select quantity,instance_id
12353 into v_ins_qty,v_instance_id
12354 from CSI_ITEM_INSTANCES
12355 where inventory_item_id = inventory_item_id_mig(i)
12356 and inv_organization_id = organization_id_mig(i)
12357 and serial_number is null
12358 and lot_number is null
12359 and location_type_code = 'INVENTORY'
12360 and instance_usage_code = 'IN_INVENTORY'
12361 and inv_subinventory_name = subinv_mig(i)
12362 and nvl(inv_locator_id,-999) = nvl(locator_id_mig(i),-999)
12363 and nvl(inventory_revision,'$#$') = nvl(revision_mig(i),'$#$');
12364 v_exists := 'Y';
12365 Exception
12366 when no_data_found then
12367 v_exists := 'N';
12368 when too_many_rows then
12369 Raise Process_next;
12370 End;
12371 --
12372 Begin
12373 select CSI_TRANSACTIONS_S.nextval
12374 into v_txn_id
12375 from DUAL;
12376 End;
12377 --
12378 Begin
12379 INSERT INTO CSI_TRANSACTIONS(
12380 TRANSACTION_ID
12381 ,TRANSACTION_DATE
12382 ,SOURCE_TRANSACTION_DATE
12383 ,SOURCE_HEADER_REF
12384 ,TRANSACTION_TYPE_ID
12385 ,CREATED_BY
12386 ,CREATION_DATE
12387 ,LAST_UPDATED_BY
12388 ,LAST_UPDATE_DATE
12389 ,LAST_UPDATE_LOGIN
12390 ,OBJECT_VERSION_NUMBER
12391 )
12392 VALUES(
12393 v_txn_id -- TRANSACTION_ID
12394 ,SYSDATE -- TRANSACTION_DATE
12395 ,SYSDATE -- SOURCE_TRANSACTION_DATE
12396 ,'DATAFIX by STAGING Bump' -- SOURCE_HEADER_REF
12397 ,v_txn_type_id -- TRANSACTION_TYPE_ID
12398 ,v_created_by
12399 ,sysdate
12400 ,v_last_updated_by
12401 ,sysdate
12402 ,-1
12403 ,1
12404 );
12405 Exception
12406 when others then
12407 v_err_msg := 'Error while Inserting into CSI_TRANSACTIONS '||substr(sqlerrm,1,1000);
12408 raise_application_error(-20000, v_err_msg );
12409 Raise;
12410 End;
12411 --
12412 IF v_exists = 'Y' THEN
12413 UPDATE CSI_ITEM_INSTANCES
12414 set quantity = quantity + quantity_mig(i),
12415 active_end_date = null,
12416 instance_status_id = v_ins_status_id,
12417 last_update_date = sysdate,
12418 last_updated_by = v_last_updated_by,
12419 last_vld_organization_id = organization_id_mig(i)
12420 where instance_id = v_instance_id;
12421 --
12422 -- Tie the Transaction to the history
12423 INSERT INTO CSI_ITEM_INSTANCES_H
12424 (
12425 INSTANCE_HISTORY_ID
12426 ,TRANSACTION_ID
12427 ,INSTANCE_ID
12428 ,CREATION_DATE
12429 ,LAST_UPDATE_DATE
12430 ,CREATED_BY
12431 ,LAST_UPDATED_BY
12432 ,LAST_UPDATE_LOGIN
12433 ,OBJECT_VERSION_NUMBER
12434 )
12435 VALUES
12436 (
12437 CSI_ITEM_INSTANCES_H_S.nextval
12438 ,v_txn_id
12439 ,v_instance_id
12440 ,SYSDATE
12441 ,SYSDATE
12442 ,v_created_by
12443 ,v_last_updated_by
12444 ,-1
12445 ,1
12446 );
12447 --
12448 Update CSI_TXN_ERRORS
12449 set processed_flag = 'R',
12450 last_update_date = sysdate
12451 where transaction_error_id = txn_error_id_mig(i);
12452 --
12453 Raise Process_next;
12454 END IF;
12455 -- If instance is not found then Create the Instance
12456 -- Get the Location ID from MTL_SECONDARY_INVENTORIES
12457 v_location_id := NULL;
12458 Begin
12459 select location_id
12460 into v_location_id
12461 from MTL_SECONDARY_INVENTORIES
12462 where organization_id = organization_id_mig(i)
12463 and secondary_inventory_name = subinv_mig(i);
12464 Exception
12465 when no_data_found then
12466 Raise Process_next;
12467 End;
12468 -- Get the Location ID from HR_ORGANIZATION_UNITS
12469 IF v_location_id IS NULL THEN
12470 Begin
12471 select location_id
12472 into v_location_id
12473 from HR_ORGANIZATION_UNITS
12474 where organization_id = organization_id_mig(i);
12475 Exception
12476 when no_data_found then
12477 Raise Process_next;
12478 End;
12479 END IF;
12480 --
12481 Begin
12482 select csi_item_instances_s.nextval
12483 into v_instance_id
12484 from DUAL;
12485 End;
12486 --
12487 -- Insert into CSI_ITEM_INSTANCES
12488 Begin
12489 INSERT INTO CSI_ITEM_INSTANCES(
12490 INSTANCE_ID
12491 ,INSTANCE_NUMBER
12492 ,EXTERNAL_REFERENCE
12493 ,INVENTORY_ITEM_ID
12494 ,INVENTORY_REVISION
12495 ,INV_MASTER_ORGANIZATION_ID
12496 ,QUANTITY
12497 ,UNIT_OF_MEASURE
12501 ,MERCHANT_VIEW_FLAG
12498 ,ACCOUNTING_CLASS_CODE
12499 ,INSTANCE_STATUS_ID
12500 ,CUSTOMER_VIEW_FLAG
12502 ,SELLABLE_FLAG
12503 ,SYSTEM_ID
12504 ,INSTANCE_TYPE_CODE
12505 ,ACTIVE_START_DATE
12506 ,ACTIVE_END_DATE
12507 ,LOCATION_TYPE_CODE
12508 ,LOCATION_ID
12509 ,INV_ORGANIZATION_ID
12510 ,INV_SUBINVENTORY_NAME
12511 ,INV_LOCATOR_ID
12512 ,INSTALL_DATE
12513 ,MANUALLY_CREATED_FLAG
12514 ,CREATION_COMPLETE_FLAG
12515 ,COMPLETENESS_FLAG
12516 ,CREATED_BY
12517 ,CREATION_DATE
12518 ,LAST_UPDATED_BY
12519 ,LAST_UPDATE_DATE
12520 ,LAST_UPDATE_LOGIN
12521 ,OBJECT_VERSION_NUMBER
12522 ,SECURITY_GROUP_ID
12523 ,INSTANCE_USAGE_CODE
12524 ,OWNER_PARTY_SOURCE_TABLE
12525 ,OWNER_PARTY_ID
12526 ,LAST_VLD_ORGANIZATION_ID
12527 )
12528 VALUES(
12529 v_instance_id -- INSTANCE_ID
12530 ,v_instance_id -- INSTANCE_NUMBER
12531 ,NULL -- EXTERNAL_REFERENCE
12532 ,inventory_item_id_mig(i) -- INVENTORY_ITEM_ID
12533 ,revision_mig(i) -- INVENTORY_REVISION
12534 ,v_mast_org_id -- INV_MASTER_ORGANIZATION_ID
12535 ,quantity_mig(i) -- QUANTITY
12536 ,v_pri_uom -- UNIT_OF_MEASURE (PRIMARY)
12537 ,'INV' -- ACCOUNTING_CLASS_CODE
12538 ,v_ins_status_id -- INSTANCE_STATUS_ID
12539 ,'N' -- CUSTOMER_VIEW_FLAG
12540 ,'Y' -- MERCHANT_VIEW_FLAG
12541 ,'Y' -- SELLABLE_FLAG
12542 ,NULL -- SYSTEM_ID
12543 ,NULL -- INSTANCE_TYPE_CODE
12544 ,SYSDATE -- ACTIVE_START_DATE
12545 ,NULL -- ACTIVE_END_DATE
12546 ,'INVENTORY' -- LOCATION_TYPE_CODE
12547 ,v_location_id -- LOCATION_ID
12548 ,organization_id_mig(i) -- INV_ORGANIZATION_ID
12549 ,subinv_mig(i) -- INV_SUBINVENTORY_NAME
12550 ,locator_id_mig(i) -- INV_LOCATOR_ID
12551 ,NULL -- INSTALL_DATE
12552 ,'N' -- MANUALLY_CREATED_FLAG
12553 ,'Y' -- CREATION_COMPLETE_FLAG
12554 ,'Y' -- COMPLETENESS_FLAG
12555 ,v_created_by -- CREATED_BY
12556 ,sysdate -- CREATION_DATE
12557 ,v_last_updated_by -- LAST_UPDATED_BY
12558 ,sysdate -- LAST_UPDATE_DATE
12559 ,-1 -- LAST_UPDATE_LOGIN
12560 ,1 -- OBJECT_VERSION_NUMBER
12561 ,NULL -- SECURITY_GROUP_ID
12562 ,'IN_INVENTORY' -- INSTANCE_USAGE_CODE
12563 ,'HZ_PARTIES' -- OWNER_PARTY_SOURCE_TABLE
12564 ,v_party_id -- OWNER_PARTY_ID
12565 ,organization_id_mig(i) -- LAST_VLD_ORGANIZATION_ID
12566 );
12567 Exception
12568 when others then
12569 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
12570 ||' into CSI_ITEM_INSTANCES '||SUBSTR(sqlerrm,1,1000);
12571 raise_application_error(-20000, v_err_msg );
12572 Raise;
12573 End;
12574 -- Use the same instance record to create the history
12575 Begin
12576 select CSI_ITEM_INSTANCES_H_S.nextval
12577 into v_ins_history_id
12578 from DUAL;
12579 End;
12580 --
12581 Begin
12582 INSERT INTO CSI_ITEM_INSTANCES_H(
12583 INSTANCE_HISTORY_ID
12584 ,INSTANCE_ID
12585 ,TRANSACTION_ID
12586 ,OLD_INSTANCE_NUMBER
12587 ,NEW_INSTANCE_NUMBER
12588 ,OLD_EXTERNAL_REFERENCE
12589 ,NEW_EXTERNAL_REFERENCE
12590 ,OLD_INVENTORY_ITEM_ID
12591 ,NEW_INVENTORY_ITEM_ID
12592 ,OLD_INVENTORY_REVISION
12593 ,NEW_INVENTORY_REVISION
12594 ,OLD_INV_MASTER_ORGANIZATION_ID
12595 ,NEW_INV_MASTER_ORGANIZATION_ID
12596 ,OLD_QUANTITY
12597 ,NEW_QUANTITY
12598 ,OLD_UNIT_OF_MEASURE
12599 ,NEW_UNIT_OF_MEASURE
12600 ,OLD_ACCOUNTING_CLASS_CODE
12601 ,NEW_ACCOUNTING_CLASS_CODE
12602 ,OLD_INSTANCE_STATUS_ID
12603 ,NEW_INSTANCE_STATUS_ID
12604 ,OLD_CUSTOMER_VIEW_FLAG
12605 ,NEW_CUSTOMER_VIEW_FLAG
12606 ,OLD_MERCHANT_VIEW_FLAG
12607 ,NEW_MERCHANT_VIEW_FLAG
12608 ,OLD_SELLABLE_FLAG
12609 ,NEW_SELLABLE_FLAG
12610 ,OLD_SYSTEM_ID
12611 ,NEW_SYSTEM_ID
12612 ,OLD_INSTANCE_TYPE_CODE
12613 ,NEW_INSTANCE_TYPE_CODE
12614 ,OLD_ACTIVE_START_DATE
12615 ,NEW_ACTIVE_START_DATE
12616 ,OLD_ACTIVE_END_DATE
12617 ,NEW_ACTIVE_END_DATE
12618 ,OLD_LOCATION_TYPE_CODE
12622 ,OLD_INV_ORGANIZATION_ID
12619 ,NEW_LOCATION_TYPE_CODE
12620 ,OLD_LOCATION_ID
12621 ,NEW_LOCATION_ID
12623 ,NEW_INV_ORGANIZATION_ID
12624 ,OLD_INV_SUBINVENTORY_NAME
12625 ,NEW_INV_SUBINVENTORY_NAME
12626 ,OLD_INV_LOCATOR_ID
12627 ,NEW_INV_LOCATOR_ID
12628 ,OLD_COMPLETENESS_FLAG
12629 ,NEW_COMPLETENESS_FLAG
12630 ,CREATED_BY
12631 ,CREATION_DATE
12632 ,LAST_UPDATED_BY
12633 ,LAST_UPDATE_DATE
12634 ,LAST_UPDATE_LOGIN
12635 ,OBJECT_VERSION_NUMBER
12636 ,SECURITY_GROUP_ID
12637 ,FULL_DUMP_FLAG
12638 ,OLD_INST_USAGE_CODE
12639 ,NEW_INST_USAGE_CODE
12640 ,OLD_LAST_VLD_ORGANIZATION_ID
12641 ,NEW_LAST_VLD_ORGANIZATION_ID
12642 )
12643 VALUES(
12644 v_ins_history_id -- INSTANCE_HISTORY_ID
12645 ,v_instance_id -- INSTANCE_ID
12646 ,v_txn_id -- TRANSACTION_ID
12647 ,NULL -- OLD_INSTANCE_NUMBER
12648 ,v_instance_id -- NEW_INSTANCE_NUMBER
12649 ,NULL -- OLD_EXTERNAL_REFERENCE
12650 ,NULL -- NEW_EXTERNAL_REFERENCE
12651 ,NULL -- OLD_INVENTORY_ITEM_ID
12652 ,inventory_item_id_mig(i) -- NEW_INVENTORY_ITEM_ID
12653 ,NULL -- OLD_INVENTORY_REVISION
12654 ,revision_mig(i) -- NEW_INVENTORY_REVISION
12655 ,NULL -- OLD_INV_MASTER_ORGANIZATION_ID
12656 ,v_mast_org_id -- NEW_INV_MASTER_ORGANIZATION_ID
12657 ,NULL -- OLD_QUANTITY
12658 ,quantity_mig(i) -- NEW_QUANTITY
12659 ,NULL -- OLD_UNIT_OF_MEASURE
12660 ,v_pri_uom -- NEW_UNIT_OF_MEASURE
12661 ,NULL -- OLD_ACCOUNTING_CLASS_CODE
12662 ,'INV' -- NEW_ACCOUNTING_CLASS_CODE
12663 ,NULL -- OLD_INSTANCE_STATUS_ID
12664 ,v_ins_status_id -- NEW_INSTANCE_STATUS_ID
12665 ,NULL -- OLD_CUSTOMER_VIEW_FLAG
12666 ,'N' -- NEW_CUSTOMER_VIEW_FLAG
12667 ,NULL -- OLD_MERCHANT_VIEW_FLAG
12668 ,'Y' -- NEW_MERCHANT_VIEW_FLAG
12669 ,NULL -- OLD_SELLABLE_FLAG
12670 ,NULL -- NEW_SELLABLE_FLAG
12671 ,NULL -- OLD_SYSTEM_ID
12672 ,NULL -- NEW_SYSTEM_ID
12673 ,NULL -- OLD_INSTANCE_TYPE_CODE
12674 ,NULL -- NEW_INSTANCE_TYPE_CODE
12675 ,NULL -- OLD_ACTIVE_START_DATE
12676 ,SYSDATE -- NEW_ACTIVE_START_DATE
12677 ,NULL -- OLD_ACTIVE_END_DATE
12678 ,NULL -- NEW_ACTIVE_END_DATE
12679 ,NULL -- OLD_LOCATION_TYPE_CODE
12680 ,'INVENTORY' -- NEW_LOCATION_TYPE_CODE
12681 ,NULL -- OLD_LOCATION_ID
12682 ,v_location_id -- NEW_LOCATION_ID
12683 ,NULL -- OLD_INV_ORGANIZATION_ID
12684 ,organization_id_mig(i) -- NEW_INV_ORGANIZATION_ID
12685 ,NULL -- OLD_INV_SUBINVENTORY_NAME
12686 ,subinv_mig(i) -- NEW_INV_SUBINVENTORY_NAME
12687 ,NULL -- OLD_INV_LOCATOR_ID
12688 ,locator_id_mig(i) -- NEW_INV_LOCATOR_ID
12689 ,NULL -- OLD_COMPLETENESS_FLAG
12690 ,'Y' -- NEW_COMPLETENESS_FLAG
12691 ,v_created_by -- CREATED_BY
12692 ,sysdate -- CREATION_DATE
12693 ,v_last_updated_by -- LAST_UPDATED_BY
12694 ,sysdate -- LAST_UPDATE_DATE
12695 ,-1 -- LAST_UPDATE_LOGIN
12696 ,1 -- OBJECT_VERSION_NUMBER
12697 ,NULL -- SECURITY_GROUP_ID
12698 ,'N' -- FULL_DUMP_FLAG
12699 ,NULL -- OLD_INST_USAGE_CODE
12703 );
12700 ,'IN_INVENTORY' -- NEW_INST_USAGE_CODE
12701 ,NULL -- OLD_LAST_VLD_ORGANIZATION_ID
12702 ,organization_id_mig(i) -- NEW_LAST_VLD_ORGANIZATION_ID
12704 Exception
12705 when others then
12706 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
12707 ||' into CSI_ITEM_INSTANCES_H Using the Same Instance '||SUBSTR(sqlerrm,1,1000);
12708 raise_application_error(-20000, v_err_msg );
12709 Raise;
12710 End;
12711 --
12712 Begin
12713 select CSI_I_PARTIES_S.nextval
12714 into v_ins_party_id
12715 from DUAL;
12716 End;
12717 Begin
12718 INSERT INTO CSI_I_PARTIES(
12719 INSTANCE_PARTY_ID
12720 ,INSTANCE_ID
12721 ,PARTY_SOURCE_TABLE
12722 ,PARTY_ID
12723 ,RELATIONSHIP_TYPE_CODE
12724 ,CONTACT_FLAG
12725 ,CONTACT_IP_ID
12726 ,ACTIVE_START_DATE
12727 ,ACTIVE_END_DATE
12728 ,CREATED_BY
12729 ,CREATION_DATE
12730 ,LAST_UPDATED_BY
12731 ,LAST_UPDATE_DATE
12732 ,LAST_UPDATE_LOGIN
12733 ,OBJECT_VERSION_NUMBER
12734 ,SECURITY_GROUP_ID
12735 )
12736 VALUES(
12737 v_ins_party_id -- INSTANCE_PARTY_ID
12738 ,v_instance_id -- INSTANCE_ID
12739 ,'HZ_PARTIES' -- PARTY_SOURCE_TABLE
12740 ,v_party_id -- PARTY_ID
12741 ,'OWNER' -- RELATIONSHIP_TYPE_CODE
12742 ,'N' -- CONTACT_FLAG
12743 ,NULL -- CONTACT_IP_ID
12744 ,SYSDATE -- ACTIVE_START_DATE
12745 ,NULL -- ACTIVE_END_DATE
12746 ,v_created_by -- CREATED_BY
12747 ,sysdate -- CREATION_DATE
12748 ,v_last_updated_by -- LAST_UPDATED_BY
12749 ,sysdate -- LAST_UPDATE_DATE
12750 ,-1 -- LAST_UPDATE_LOGIN
12751 ,1 -- OBJECT_VERSION_NUMBER
12752 ,NULL -- SECURITY_GROUP_ID
12753 );
12754 Exception
12755 when others then
12756 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
12757 ||' into CSI_I_PARTIES '||SUBSTR(sqlerrm,1,1000);
12758 raise_application_error(-20000, v_err_msg );
12759 Raise;
12760 End;
12761 -- Insert into CSI_I_PARTIES_H
12762 Begin
12763 select CSI_I_PARTIES_H_S.nextval
12764 into v_ins_party_history_id
12765 from DUAL;
12766 End;
12767 -- Insert into CSI_I_PARTIES_H
12768 Begin
12769 INSERT INTO CSI_I_PARTIES_H(
12770 INSTANCE_PARTY_HISTORY_ID
12771 ,INSTANCE_PARTY_ID
12772 ,TRANSACTION_ID
12773 ,OLD_PARTY_SOURCE_TABLE
12774 ,NEW_PARTY_SOURCE_TABLE
12775 ,OLD_PARTY_ID
12776 ,NEW_PARTY_ID
12777 ,OLD_RELATIONSHIP_TYPE_CODE
12778 ,NEW_RELATIONSHIP_TYPE_CODE
12779 ,OLD_CONTACT_FLAG
12780 ,NEW_CONTACT_FLAG
12781 ,OLD_CONTACT_IP_ID
12782 ,NEW_CONTACT_IP_ID
12783 ,OLD_ACTIVE_START_DATE
12784 ,NEW_ACTIVE_START_DATE
12785 ,OLD_ACTIVE_END_DATE
12786 ,NEW_ACTIVE_END_DATE
12787 ,FULL_DUMP_FLAG
12788 ,CREATED_BY
12789 ,CREATION_DATE
12790 ,LAST_UPDATED_BY
12791 ,LAST_UPDATE_DATE
12792 ,LAST_UPDATE_LOGIN
12793 ,OBJECT_VERSION_NUMBER
12794 ,SECURITY_GROUP_ID
12795 )
12796 VALUES(
12797 v_ins_party_history_id -- INSTANCE_PARTY_HISTORY_ID
12798 ,v_ins_party_id -- INSTANCE_PARTY_ID
12799 ,v_txn_id -- TRANSACTION_ID
12800 ,NULL -- OLD_PARTY_SOURCE_TABLE
12801 ,'HZ_PARTIES' -- NEW_PARTY_SOURCE_TABLE
12802 ,NULL -- OLD_PARTY_ID
12803 ,v_party_id -- NEW_PARTY_ID
12804 ,NULL -- OLD_RELATIONSHIP_TYPE_CODE
12805 ,'OWNER' -- NEW_RELATIONSHIP_TYPE_CODE
12806 ,NULL -- OLD_CONTACT_FLAG
12807 ,'N' -- NEW_CONTACT_FLAG
12808 ,NULL -- OLD_CONTACT_IP_ID
12809 ,NULL -- NEW_CONTACT_IP_ID
12810 ,NULL -- OLD_ACTIVE_START_DATE
12811 ,SYSDATE -- NEW_ACTIVE_START_DATE
12812 ,NULL -- OLD_ACTIVE_END_DATE
12813 ,NULL -- NEW_ACTIVE_END_DATE
12814 ,'N' -- FULL_DUMP_FLAG
12815 ,v_created_by
12816 ,sysdate
12817 ,v_last_updated_by
12818 ,sysdate
12819 ,-1
12820 ,1
12821 ,NULL
12822 );
12823 Exception
12824 when others then
12828 Raise;
12825 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
12826 ||' into CSI_I_PARTIES_H using the same Instance '||SUBSTR(sqlerrm,1,1000);
12827 raise_application_error(-20000, v_err_msg );
12829 End;
12830 ELSE -- Lot controlled item
12831 FOR lot_rec in LOT_CUR(mat_txn_id_mig(i)) LOOP
12832 v_exists := 'N';
12833 Begin
12834 select quantity,instance_id
12835 into v_ins_qty,v_instance_id
12836 from CSI_ITEM_INSTANCES
12837 where inventory_item_id = inventory_item_id_mig(i)
12838 and inv_organization_id = organization_id_mig(i)
12839 and serial_number is null
12840 and location_type_code = 'INVENTORY'
12841 and instance_usage_code = 'IN_INVENTORY'
12842 and inv_subinventory_name = subinv_mig(i)
12843 and nvl(inv_locator_id,-999) = nvl(locator_id_mig(i),-999)
12844 and nvl(inventory_revision,'$#$') = nvl(revision_mig(i),'$#$')
12845 and lot_number = lot_rec.lot_number;
12846 v_exists := 'Y';
12847 Exception
12848 when no_data_found then
12849 v_exists := 'N';
12850 when too_many_rows then
12851 Raise Process_next;
12852 End;
12853 --
12854 Begin
12855 select CSI_TRANSACTIONS_S.nextval
12856 into v_txn_id
12857 from DUAL;
12858 End;
12859 --
12860 Begin
12861 INSERT INTO CSI_TRANSACTIONS(
12862 TRANSACTION_ID
12863 ,TRANSACTION_DATE
12864 ,SOURCE_TRANSACTION_DATE
12865 ,SOURCE_HEADER_REF
12866 ,TRANSACTION_TYPE_ID
12867 ,CREATED_BY
12868 ,CREATION_DATE
12869 ,LAST_UPDATED_BY
12870 ,LAST_UPDATE_DATE
12871 ,LAST_UPDATE_LOGIN
12872 ,OBJECT_VERSION_NUMBER
12873 )
12874 VALUES(
12875 v_txn_id -- TRANSACTION_ID
12876 ,SYSDATE -- TRANSACTION_DATE
12877 ,SYSDATE -- SOURCE_TRANSACTION_DATE
12878 ,'DATAFIX By STAGING Bump' -- SOURCE_HEADER_REF
12879 ,v_txn_type_id -- TRANSACTION_TYPE_ID
12880 ,v_created_by
12881 ,sysdate
12882 ,v_last_updated_by
12883 ,sysdate
12884 ,-1
12885 ,1
12886 );
12887 Exception
12888 when others then
12889 v_err_msg := 'Error while Inserting into CSI_TRANSACTIONS '||substr(sqlerrm,1,1000);
12890 raise_application_error(-20000, v_err_msg );
12891 Raise;
12892 End;
12893 --
12894 IF v_exists = 'Y' THEN
12895 UPDATE CSI_ITEM_INSTANCES
12896 set quantity = quantity + lot_rec.transaction_quantity,
12897 active_end_date = null,
12898 instance_status_id = v_ins_status_id,
12899 last_update_date = sysdate,
12900 last_updated_by = v_last_updated_by,
12901 last_vld_organization_id = organization_id_mig(i)
12902 where instance_id = v_instance_id;
12903 --
12904 -- Tie the Transaction to the history
12905 INSERT INTO CSI_ITEM_INSTANCES_H
12906 (
12907 INSTANCE_HISTORY_ID
12908 ,TRANSACTION_ID
12909 ,INSTANCE_ID
12910 ,CREATION_DATE
12911 ,LAST_UPDATE_DATE
12912 ,CREATED_BY
12913 ,LAST_UPDATED_BY
12914 ,LAST_UPDATE_LOGIN
12915 ,OBJECT_VERSION_NUMBER
12916 )
12917 VALUES
12918 (
12919 CSI_ITEM_INSTANCES_H_S.nextval
12920 ,v_txn_id
12921 ,v_instance_id
12922 ,SYSDATE
12923 ,SYSDATE
12924 ,v_created_by
12925 ,v_last_updated_by
12926 ,-1
12927 ,1
12928 );
12929 --
12930 Update CSI_TXN_ERRORS
12931 set processed_flag = 'R',
12932 last_update_date = sysdate
12933 where transaction_error_id = txn_error_id_mig(i);
12934 --
12935 Raise Process_next;
12936 END IF;
12937 -- If instance not found then Create the Instance
12938 -- Get the Location ID from MTL_SECONDARY_INVENTORIES
12939 v_location_id := NULL;
12940 Begin
12941 select location_id
12942 into v_location_id
12943 from MTL_SECONDARY_INVENTORIES
12944 where organization_id = organization_id_mig(i)
12945 and secondary_inventory_name = subinv_mig(i);
12946 Exception
12947 when no_data_found then
12948 Raise Process_next;
12949 End;
12950 -- Get the Location ID from HR_ORGANIZATION_UNITS
12951 IF v_location_id IS NULL THEN
12952 Begin
12953 select location_id
12954 into v_location_id
12955 from HR_ORGANIZATION_UNITS
12956 where organization_id = organization_id_mig(i);
12957 Exception
12958 when no_data_found then
12959 Raise Process_next;
12960 End;
12961 END IF;
12962 --
12963 Begin
12964 select csi_item_instances_s.nextval
12965 into v_instance_id
12966 from DUAL;
12967 End;
12968 --
12969 -- Insert into CSI_ITEM_INSTANCES
12970 Begin
12971 INSERT INTO CSI_ITEM_INSTANCES(
12972 INSTANCE_ID
12973 ,INSTANCE_NUMBER
12974 ,EXTERNAL_REFERENCE
12975 ,INVENTORY_ITEM_ID
12976 ,INVENTORY_REVISION
12977 ,INV_MASTER_ORGANIZATION_ID
12981 ,UNIT_OF_MEASURE
12978 ,MFG_SERIAL_NUMBER_FLAG
12979 ,LOT_NUMBER
12980 ,QUANTITY
12982 ,ACCOUNTING_CLASS_CODE
12983 ,INSTANCE_STATUS_ID
12984 ,CUSTOMER_VIEW_FLAG
12985 ,MERCHANT_VIEW_FLAG
12986 ,SELLABLE_FLAG
12987 ,SYSTEM_ID
12988 ,INSTANCE_TYPE_CODE
12989 ,ACTIVE_START_DATE
12990 ,ACTIVE_END_DATE
12991 ,LOCATION_TYPE_CODE
12992 ,LOCATION_ID
12993 ,INV_ORGANIZATION_ID
12994 ,INV_SUBINVENTORY_NAME
12995 ,INV_LOCATOR_ID
12996 ,INSTALL_DATE
12997 ,MANUALLY_CREATED_FLAG
12998 ,CREATION_COMPLETE_FLAG
12999 ,COMPLETENESS_FLAG
13000 ,CREATED_BY
13001 ,CREATION_DATE
13002 ,LAST_UPDATED_BY
13003 ,LAST_UPDATE_DATE
13004 ,LAST_UPDATE_LOGIN
13005 ,OBJECT_VERSION_NUMBER
13006 ,SECURITY_GROUP_ID
13007 ,INSTANCE_USAGE_CODE
13008 ,OWNER_PARTY_SOURCE_TABLE
13009 ,OWNER_PARTY_ID
13010 ,LAST_VLD_ORGANIZATION_ID
13011 )
13012 VALUES(
13013 v_instance_id -- INSTANCE_ID
13014 ,v_instance_id -- INSTANCE_NUMBER
13015 ,NULL -- EXTERNAL_REFERENCE
13016 ,inventory_item_id_mig(i) -- INVENTORY_ITEM_ID
13017 ,revision_mig(i) -- INVENTORY_REVISION
13018 ,v_mast_org_id -- INV_MASTER_ORGANIZATION_ID
13019 ,'Y' -- MFG_SERIAL_NUMBER_FLAG
13020 ,lot_rec.lot_number -- LOT_NUMBER
13021 ,lot_rec.transaction_quantity -- QUANTITY
13022 ,v_pri_uom -- UNIT_OF_MEASURE (PRIMARY)
13023 ,'INV' -- ACCOUNTING_CLASS_CODE
13024 ,v_ins_status_id -- INSTANCE_STATUS_ID
13025 ,'N' -- CUSTOMER_VIEW_FLAG
13026 ,'Y' -- MERCHANT_VIEW_FLAG
13027 ,'Y' -- SELLABLE_FLAG
13028 ,NULL -- SYSTEM_ID
13029 ,NULL -- INSTANCE_TYPE_CODE
13030 ,SYSDATE -- ACTIVE_START_DATE
13031 ,NULL -- ACTIVE_END_DATE
13032 ,'INVENTORY' -- LOCATION_TYPE_CODE
13033 ,v_location_id -- LOCATION_ID
13034 ,organization_id_mig(i) -- INV_ORGANIZATION_ID
13035 ,subinv_mig(i) -- INV_SUBINVENTORY_NAME
13036 ,locator_id_mig(i) -- INV_LOCATOR_ID
13037 ,NULL -- INSTALL_DATE
13038 ,'N' -- MANUALLY_CREATED_FLAG
13039 ,'Y' -- CREATION_COMPLETE_FLAG
13040 ,'Y' -- COMPLETENESS_FLAG
13041 ,v_created_by -- CREATED_BY
13042 ,sysdate -- CREATION_DATE
13043 ,v_last_updated_by -- LAST_UPDATED_BY
13044 ,sysdate -- LAST_UPDATE_DATE
13045 ,-1 -- LAST_UPDATE_LOGIN
13046 ,1 -- OBJECT_VERSION_NUMBER
13047 ,NULL -- SECURITY_GROUP_ID
13048 ,'IN_INVENTORY' -- INSTANCE_USAGE_CODE
13049 ,'HZ_PARTIES' -- OWNER_PARTY_SOURCE_TABLE
13050 ,v_party_id -- OWNER_PARTY_ID
13051 ,organization_id_mig(i) -- LAST_VLD_ORGANIZATION_ID
13052 );
13053 Exception
13054 when others then
13055 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
13056 ||' into CSI_ITEM_INSTANCES '||SUBSTR(sqlerrm,1,1000);
13057 raise_application_error(-20000, v_err_msg );
13058 Raise;
13059 End;
13060 -- Use the same instance record to create the history
13061 Begin
13062 select CSI_ITEM_INSTANCES_H_S.nextval
13063 into v_ins_history_id
13064 from DUAL;
13065 End;
13066 --
13067 Begin
13068 INSERT INTO CSI_ITEM_INSTANCES_H(
13069 INSTANCE_HISTORY_ID
13070 ,INSTANCE_ID
13071 ,TRANSACTION_ID
13072 ,OLD_INSTANCE_NUMBER
13073 ,NEW_INSTANCE_NUMBER
13074 ,OLD_EXTERNAL_REFERENCE
13075 ,NEW_EXTERNAL_REFERENCE
13076 ,OLD_INVENTORY_ITEM_ID
13077 ,NEW_INVENTORY_ITEM_ID
13078 ,OLD_INVENTORY_REVISION
13079 ,NEW_INVENTORY_REVISION
13080 ,OLD_INV_MASTER_ORGANIZATION_ID
13081 ,NEW_INV_MASTER_ORGANIZATION_ID
13082 ,OLD_MFG_SERIAL_NUMBER_FLAG
13083 ,NEW_MFG_SERIAL_NUMBER_FLAG
13084 ,OLD_LOT_NUMBER
13085 ,NEW_LOT_NUMBER
13086 ,OLD_QUANTITY
13087 ,NEW_QUANTITY
13088 ,OLD_UNIT_OF_MEASURE
13089 ,NEW_UNIT_OF_MEASURE
13090 ,OLD_ACCOUNTING_CLASS_CODE
13091 ,NEW_ACCOUNTING_CLASS_CODE
13092 ,OLD_INSTANCE_STATUS_ID
13093 ,NEW_INSTANCE_STATUS_ID
13094 ,OLD_CUSTOMER_VIEW_FLAG
13095 ,NEW_CUSTOMER_VIEW_FLAG
13096 ,OLD_MERCHANT_VIEW_FLAG
13097 ,NEW_MERCHANT_VIEW_FLAG
13098 ,OLD_SELLABLE_FLAG
13099 ,NEW_SELLABLE_FLAG
13100 ,OLD_SYSTEM_ID
13101 ,NEW_SYSTEM_ID
13102 ,OLD_INSTANCE_TYPE_CODE
13103 ,NEW_INSTANCE_TYPE_CODE
13104 ,OLD_ACTIVE_START_DATE
13105 ,NEW_ACTIVE_START_DATE
13106 ,OLD_ACTIVE_END_DATE
13107 ,NEW_ACTIVE_END_DATE
13111 ,NEW_LOCATION_ID
13108 ,OLD_LOCATION_TYPE_CODE
13109 ,NEW_LOCATION_TYPE_CODE
13110 ,OLD_LOCATION_ID
13112 ,OLD_INV_ORGANIZATION_ID
13113 ,NEW_INV_ORGANIZATION_ID
13114 ,OLD_INV_SUBINVENTORY_NAME
13115 ,NEW_INV_SUBINVENTORY_NAME
13116 ,OLD_INV_LOCATOR_ID
13117 ,NEW_INV_LOCATOR_ID
13118 ,OLD_COMPLETENESS_FLAG
13119 ,NEW_COMPLETENESS_FLAG
13120 ,CREATED_BY
13121 ,CREATION_DATE
13122 ,LAST_UPDATED_BY
13123 ,LAST_UPDATE_DATE
13124 ,LAST_UPDATE_LOGIN
13125 ,OBJECT_VERSION_NUMBER
13126 ,SECURITY_GROUP_ID
13127 ,FULL_DUMP_FLAG
13128 ,OLD_INST_USAGE_CODE
13129 ,NEW_INST_USAGE_CODE
13130 ,OLD_LAST_VLD_ORGANIZATION_ID
13131 ,NEW_LAST_VLD_ORGANIZATION_ID
13132 )
13133 VALUES(
13134 v_ins_history_id -- INSTANCE_HISTORY_ID
13135 ,v_instance_id -- INSTANCE_ID
13136 ,v_txn_id -- TRANSACTION_ID
13137 ,NULL -- OLD_INSTANCE_NUMBER
13138 ,v_instance_id -- NEW_INSTANCE_NUMBER
13139 ,NULL -- OLD_EXTERNAL_REFERENCE
13140 ,NULL -- NEW_EXTERNAL_REFERENCE
13141 ,NULL -- OLD_INVENTORY_ITEM_ID
13142 ,inventory_item_id_mig(i) -- NEW_INVENTORY_ITEM_ID
13143 ,NULL -- OLD_INVENTORY_REVISION
13144 ,revision_mig(i) -- NEW_INVENTORY_REVISION
13145 ,NULL -- OLD_INV_MASTER_ORGANIZATION_ID
13146 ,v_mast_org_id -- NEW_INV_MASTER_ORGANIZATION_ID
13147 ,NULL -- OLD_MFG_SERIAL_NUMBER_FLAG
13148 ,'Y' -- NEW_MFG_SERIAL_NUMBER_FLAG
13149 ,NULL -- OLD_LOT_NUMBER
13150 ,lot_rec.lot_number -- NEW_LOT_NUMBER
13151 ,NULL -- OLD_QUANTITY
13152 ,lot_rec.transaction_quantity -- NEW_QUANTITY
13153 ,NULL -- OLD_UNIT_OF_MEASURE
13154 ,v_pri_uom -- NEW_UNIT_OF_MEASURE
13155 ,NULL -- OLD_ACCOUNTING_CLASS_CODE
13156 ,'INV' -- NEW_ACCOUNTING_CLASS_CODE
13157 ,NULL -- OLD_INSTANCE_STATUS_ID
13158 ,v_ins_status_id -- NEW_INSTANCE_STATUS_ID
13159 ,NULL -- OLD_CUSTOMER_VIEW_FLAG
13160 ,'N' -- NEW_CUSTOMER_VIEW_FLAG
13161 ,NULL -- OLD_MERCHANT_VIEW_FLAG
13162 ,'Y' -- NEW_MERCHANT_VIEW_FLAG
13163 ,NULL -- OLD_SELLABLE_FLAG
13164 ,NULL -- NEW_SELLABLE_FLAG
13165 ,NULL -- OLD_SYSTEM_ID
13166 ,NULL -- NEW_SYSTEM_ID
13167 ,NULL -- OLD_INSTANCE_TYPE_CODE
13168 ,NULL -- NEW_INSTANCE_TYPE_CODE
13169 ,NULL -- OLD_ACTIVE_START_DATE
13170 ,SYSDATE -- NEW_ACTIVE_START_DATE
13171 ,NULL -- OLD_ACTIVE_END_DATE
13172 ,NULL -- NEW_ACTIVE_END_DATE
13173 ,NULL -- OLD_LOCATION_TYPE_CODE
13174 ,'INVENTORY' -- NEW_LOCATION_TYPE_CODE
13175 ,NULL -- OLD_LOCATION_ID
13176 ,v_location_id -- NEW_LOCATION_ID
13177 ,NULL -- OLD_INV_ORGANIZATION_ID
13178 ,organization_id_mig(i) -- NEW_INV_ORGANIZATION_ID
13179 ,NULL -- OLD_INV_SUBINVENTORY_NAME
13180 ,subinv_mig(i) -- NEW_INV_SUBINVENTORY_NAME
13181 ,NULL -- OLD_INV_LOCATOR_ID
13182 ,locator_id_mig(i) -- NEW_INV_LOCATOR_ID
13183 ,NULL -- OLD_COMPLETENESS_FLAG
13184 ,'Y' -- NEW_COMPLETENESS_FLAG
13185 ,v_created_by -- CREATED_BY
13186 ,sysdate -- CREATION_DATE
13187 ,v_last_updated_by -- LAST_UPDATED_BY
13188 ,sysdate -- LAST_UPDATE_DATE
13189 ,-1 -- LAST_UPDATE_LOGIN
13190 ,1 -- OBJECT_VERSION_NUMBER
13191 ,NULL -- SECURITY_GROUP_ID
13195 ,NULL -- OLD_LAST_VLD_ORGANIZATION_ID
13192 ,'N' -- FULL_DUMP_FLAG
13193 ,NULL -- OLD_INST_USAGE_CODE
13194 ,'IN_INVENTORY' -- NEW_INST_USAGE_CODE
13196 ,organization_id_mig(i) -- NEW_LAST_VLD_ORGANIZATION_ID
13197 );
13198 Exception
13199 when others then
13200 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
13201 ||' into CSI_ITEM_INSTANCES_H Using the Same Instance '||SUBSTR(sqlerrm,1,1000);
13202 raise_application_error(-20000, v_err_msg );
13203 Raise;
13204 End;
13205 --
13206 Begin
13207 select CSI_I_PARTIES_S.nextval
13208 into v_ins_party_id
13209 from DUAL;
13210 End;
13211 Begin
13212 INSERT INTO CSI_I_PARTIES(
13213 INSTANCE_PARTY_ID
13214 ,INSTANCE_ID
13215 ,PARTY_SOURCE_TABLE
13216 ,PARTY_ID
13217 ,RELATIONSHIP_TYPE_CODE
13218 ,CONTACT_FLAG
13219 ,CONTACT_IP_ID
13220 ,ACTIVE_START_DATE
13221 ,ACTIVE_END_DATE
13222 ,CREATED_BY
13223 ,CREATION_DATE
13224 ,LAST_UPDATED_BY
13225 ,LAST_UPDATE_DATE
13226 ,LAST_UPDATE_LOGIN
13227 ,OBJECT_VERSION_NUMBER
13228 ,SECURITY_GROUP_ID
13229 )
13230 VALUES(
13231 v_ins_party_id -- INSTANCE_PARTY_ID
13232 ,v_instance_id -- INSTANCE_ID
13233 ,'HZ_PARTIES' -- PARTY_SOURCE_TABLE
13234 ,v_party_id -- PARTY_ID
13235 ,'OWNER' -- RELATIONSHIP_TYPE_CODE
13236 ,'N' -- CONTACT_FLAG
13237 ,NULL -- CONTACT_IP_ID
13238 ,SYSDATE -- ACTIVE_START_DATE
13239 ,NULL -- ACTIVE_END_DATE
13240 ,v_created_by -- CREATED_BY
13241 ,sysdate -- CREATION_DATE
13242 ,v_last_updated_by -- LAST_UPDATED_BY
13243 ,sysdate -- LAST_UPDATE_DATE
13244 ,-1 -- LAST_UPDATE_LOGIN
13245 ,1 -- OBJECT_VERSION_NUMBER
13246 ,NULL -- SECURITY_GROUP_ID
13247 );
13248 Exception
13249 when others then
13250 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
13251 ||' into CSI_I_PARTIES '||SUBSTR(sqlerrm,1,1000);
13252 raise_application_error(-20000, v_err_msg );
13253 Raise;
13254 End;
13255 -- Insert into CSI_I_PARTIES_H
13256 Begin
13257 select CSI_I_PARTIES_H_S.nextval
13258 into v_ins_party_history_id
13259 from DUAL;
13260 End;
13261 -- Insert into CSI_I_PARTIES_H
13262 Begin
13263 INSERT INTO CSI_I_PARTIES_H(
13264 INSTANCE_PARTY_HISTORY_ID
13265 ,INSTANCE_PARTY_ID
13266 ,TRANSACTION_ID
13267 ,OLD_PARTY_SOURCE_TABLE
13268 ,NEW_PARTY_SOURCE_TABLE
13269 ,OLD_PARTY_ID
13270 ,NEW_PARTY_ID
13271 ,OLD_RELATIONSHIP_TYPE_CODE
13272 ,NEW_RELATIONSHIP_TYPE_CODE
13273 ,OLD_CONTACT_FLAG
13274 ,NEW_CONTACT_FLAG
13275 ,OLD_CONTACT_IP_ID
13276 ,NEW_CONTACT_IP_ID
13277 ,OLD_ACTIVE_START_DATE
13278 ,NEW_ACTIVE_START_DATE
13279 ,OLD_ACTIVE_END_DATE
13280 ,NEW_ACTIVE_END_DATE
13281 ,FULL_DUMP_FLAG
13282 ,CREATED_BY
13283 ,CREATION_DATE
13284 ,LAST_UPDATED_BY
13285 ,LAST_UPDATE_DATE
13286 ,LAST_UPDATE_LOGIN
13287 ,OBJECT_VERSION_NUMBER
13288 ,SECURITY_GROUP_ID
13289 )
13290 VALUES(
13291 v_ins_party_history_id -- INSTANCE_PARTY_HISTORY_ID
13292 ,v_ins_party_id -- INSTANCE_PARTY_ID
13293 ,v_txn_id -- TRANSACTION_ID
13294 ,NULL -- OLD_PARTY_SOURCE_TABLE
13295 ,'HZ_PARTIES' -- NEW_PARTY_SOURCE_TABLE
13296 ,NULL -- OLD_PARTY_ID
13297 ,v_party_id -- NEW_PARTY_ID
13298 ,NULL -- OLD_RELATIONSHIP_TYPE_CODE
13299 ,'OWNER' -- NEW_RELATIONSHIP_TYPE_CODE
13300 ,NULL -- OLD_CONTACT_FLAG
13301 ,'N' -- NEW_CONTACT_FLAG
13302 ,NULL -- OLD_CONTACT_IP_ID
13303 ,NULL -- NEW_CONTACT_IP_ID
13304 ,NULL -- OLD_ACTIVE_START_DATE
13305 ,SYSDATE -- NEW_ACTIVE_START_DATE
13306 ,NULL -- OLD_ACTIVE_END_DATE
13307 ,NULL -- NEW_ACTIVE_END_DATE
13308 ,'N' -- FULL_DUMP_FLAG
13309 ,v_created_by
13310 ,sysdate
13311 ,v_last_updated_by
13312 ,sysdate
13313 ,-1
13314 ,1
13315 ,NULL
13316 );
13317 Exception
13318 when others then
13319 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
13320 ||' into CSI_I_PARTIES_H using the same Instance '||SUBSTR(sqlerrm,1,1000);
13324 END LOOP;
13321 raise_application_error(-20000, v_err_msg );
13322 Raise;
13323 End;
13325 END IF; -- Lot control check
13326 Update csi_txn_errors
13327 set processed_flag = 'R',
13328 last_update_date = sysdate
13329 where transaction_error_id = txn_error_id_mig(i);
13330 --
13331 Exception
13332 when process_next then
13333 null;
13334 End;
13335 END LOOP;
13336 commit;
13337 EXIT WHEN CSI_CUR%NOTFOUND;
13338 END LOOP;
13339 commit;
13340 CLOSE CSI_CUR;
13341 EXCEPTION
13342 When comp_error then
13343 null;
13344 END Create_or_Update_Shipping_Inst;
13345 --
13346 PROCEDURE fix_srlsoi_returned_serials
13347 IS
13348
13349 TYPE NumTabType is varray(1000) of number;
13350 TYPE VarTabType is varray(1000) of varchar2(80);
13351
13352 l_serial_number_tab VarTabType;
13353 l_item_id_tab NumTabType;
13354 l_organization_id_tab NumTabType;
13355 l_lot_code_tab NumTabType;
13356
13357 MAX_BUFFER_SIZE number := 1000;
13358
13359 l_last_mtl_txn_id number;
13360 l_last_mtl_action_id number;
13361 l_last_mtl_source_type_id number;
13362 l_last_mtl_type_id number;
13363 l_last_rma_processed varchar2(1);
13364
13365 l_change_owner_flag varchar2(1);
13366 l_owner_party_id number;
13367 l_owner_account_id number;
13368 l_internal_party_id number;
13369
13370 l_txn_rec csi_datastructures_pub.transaction_rec;
13371 l_instance_rec csi_datastructures_pub.instance_rec;
13372 l_parties_tbl csi_datastructures_pub.party_tbl;
13373 l_pty_accts_tbl csi_datastructures_pub.party_account_tbl;
13374
13375 l_error_message varchar2(2000);
13376
13377 l_msg_count number;
13378 l_msg_data varchar2(2000);
13379 l_return_status varchar2(1) := fnd_api.g_ret_sts_success;
13380
13381 CURSOR soisrl_cur IS
13382 SELECT msn.serial_number,
13383 msn.inventory_item_id,
13384 msn.current_organization_id,
13385 msi.lot_control_code
13386 FROM mtl_serial_numbers msn,
13387 mtl_system_items msi
13388 WHERE msn.current_status = 1 -- predefined state (for rma'ed serials)
13389 AND msi.inventory_item_id = msn.inventory_item_id
13390 AND msi.organization_id = msn.current_organization_id
13391 AND msi.serial_number_control_code = 6 -- serialized at so issue
13392 AND nvl(msi.comms_nl_trackable_flag, 'N') = 'Y';
13393
13394 BEGIN
13395
13396 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
13397 csi_gen_utility_pvt.populate_install_param_rec;
13398 END IF;
13399 --
13400 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
13401 --
13402 l_txn_rec.transaction_id := fnd_api.g_miss_num;
13403 l_txn_rec.transaction_type_id := correction_txn_type_id;
13404 l_txn_rec.source_header_ref := 'DATAFIX';
13405 l_txn_rec.source_line_ref := 'SRLSOI RETURNED FIX';
13406 l_txn_rec.source_transaction_date := sysdate;
13407 l_txn_rec.transaction_date := sysdate;
13408
13409 OPEN soisrl_cur;
13410 LOOP
13411
13412 FETCH soisrl_cur BULK COLLECT
13413 INTO l_serial_number_tab,
13414 l_item_id_tab,
13415 l_organization_id_tab,
13416 l_lot_code_tab
13417 LIMIT MAX_BUFFER_SIZE;
13418
13419 FOR l_ind IN 1 .. l_serial_number_tab.COUNT
13420 LOOP
13421
13422 l_last_mtl_txn_id := null;
13423
13424 FOR all_txn_rec IN all_txn_cur(
13425 p_serial_number => l_serial_number_tab(l_ind),
13426 p_item_id => l_item_id_tab(l_ind))
13427 LOOP
13428 l_last_mtl_txn_id := all_txn_rec.mtl_txn_id;
13429 l_last_mtl_action_id := all_txn_rec.mtl_action_id;
13430 l_last_mtl_source_type_id := all_txn_rec.mtl_source_type_id;
13431 l_last_mtl_type_id := all_txn_rec.mtl_type_id;
13432 EXIT;
13433 END LOOP;
13434
13435 IF l_last_mtl_txn_id is not null AND l_last_mtl_type_id = 15 THEN
13436 BEGIN
13437 SELECT 'Y'
13438 INTO l_last_rma_processed
13439 FROM sys.dual
13440 WHERE exists
13441 (SELECT '1' FROM csi_transactions
13442 WHERE inv_material_transaction_id = l_last_mtl_txn_id);
13443 EXCEPTION
13444 WHEN no_data_found THEN
13445 l_last_rma_processed := 'N';
13446 END;
13447
13448 IF l_last_rma_processed = 'Y' THEN
13449
13450 BEGIN
13451
13452 SELECT instance_id,
13453 object_version_number,
13454 location_type_code,
13455 instance_usage_code
13456 INTO l_instance_rec.instance_id,
13460 FROM csi_item_instances
13457 l_instance_rec.object_version_number,
13458 l_instance_rec.location_type_code,
13459 l_instance_rec.instance_usage_code
13461 WHERE inventory_item_id = l_item_id_tab(l_ind)
13462 AND serial_number = l_serial_number_tab(l_ind);
13463
13464 IF l_instance_rec.instance_usage_code <> 'RETURNED' OR
13465 l_instance_rec.location_type_code <> 'INVENTORY'
13466 THEN
13467
13468 csi_process_txn_pvt.check_and_break_relation(
13469 p_instance_id => l_instance_rec.instance_id,
13470 p_csi_txn_rec => l_txn_rec,
13471 x_return_status => l_return_status);
13472
13473 get_rma_owner(
13474 p_serial_number => l_serial_number_tab(l_ind),
13475 p_inventory_item_id => l_item_id_tab(l_ind),
13476 p_organization_id => l_organization_id_tab(l_ind),
13477 x_change_owner_flag => l_change_owner_flag,
13478 x_owner_party_id => l_owner_party_id,
13479 x_owner_account_id => l_owner_account_id);
13480
13481 FOR inv_rec IN inv_cur (l_last_mtl_txn_id)
13482 LOOP
13483
13484 -- build instance rec
13485 SELECT object_version_number
13486 INTO l_instance_rec.object_version_number
13487 FROM csi_item_instances
13488 WHERE instance_id = l_instance_rec.instance_id;
13489
13490 l_instance_rec.location_type_code := 'INVENTORY';
13491 l_instance_rec.instance_usage_code := 'RETURNED';
13492 l_instance_rec.inv_organization_id := inv_rec.organization_id;
13493 l_instance_rec.inv_subinventory_name := inv_rec.subinv_code;
13494 l_instance_rec.inv_locator_id := inv_rec.locator_id;
13495 l_instance_rec.active_end_date := null;
13496
13497 get_lot_number(
13498 p_lot_code => l_lot_code_tab(l_ind),
13499 p_mtl_txn_id => l_last_mtl_txn_id,
13500 p_serial_number => l_serial_number_tab(l_ind),
13501 x_lot_number => l_instance_rec.lot_number);
13502
13503 l_instance_rec.inventory_revision := inv_rec.revision;
13504 l_instance_rec.vld_organization_id := inv_rec.organization_id;
13505 l_instance_rec.object_version_number := 1.0;
13506
13507 SELECT nvl(mssi.location_id, haou.location_id)
13508 INTO l_instance_rec.location_id
13509 FROM mtl_secondary_inventories mssi,
13510 hr_all_organization_units haou
13511 WHERE mssi.organization_id = l_instance_rec.inv_organization_id
13512 AND mssi.secondary_inventory_name = l_instance_rec.inv_subinventory_name
13513 AND haou.organization_id = mssi.organization_id;
13514
13515 END LOOP;
13516
13517 IF l_change_owner_flag = 'Y' THEN
13518 l_instance_rec.active_end_date := sysdate;
13519
13520 -- build internal party record
13521 l_parties_tbl(1).instance_party_id := fnd_api.g_miss_num;
13522 l_parties_tbl(1).party_source_table := 'HZ_PARTIES';
13523 l_parties_tbl(1).party_id := l_internal_party_id;
13524 l_parties_tbl(1).relationship_type_code := 'OWNER';
13525 l_parties_tbl(1).contact_flag := 'N';
13526 l_parties_tbl(1).object_version_number := 1.0;
13527
13528 END IF;
13529
13530 log(' serial :'||l_serial_number_tab(l_ind)||' Change Owner :'||l_change_owner_flag);
13531
13532 update_instance(
13533 p_txn_rec => l_txn_rec,
13534 p_instance_rec => l_instance_rec,
13535 p_parties_tbl => l_parties_tbl,
13536 p_pty_accts_tbl => l_pty_accts_tbl,
13537 x_return_status => l_return_status,
13538 x_error_message => l_error_message);
13539
13540 END IF;
13541
13542 EXCEPTION
13543 WHEN no_data_found THEN
13544 null;
13545 WHEN too_many_rows THEN
13546 log('too many instances for item '||l_item_id_tab(l_ind)||
13547 ' serial '||l_serial_number_tab(l_ind));
13548 END;
13549 END IF;
13550 END IF;
13551
13552 IF mod(l_ind, 100) = 0 THEN
13553 commit;
13554 END IF;
13555
13556 END LOOP;
13557
13558 EXIT when soisrl_cur%NOTFOUND;
13559
13560 END LOOP;
13561
13562 IF soisrl_cur%ISOPEN THEN
13563 CLOSE soisrl_cur;
13564 END IF;
13565
13566 EXCEPTION
13567 WHEN others THEN
13568 log('Error(O): fix_srlsoi_returned_serials '||sqlerrm);
13569 close soisrl_cur;
13570 END fix_srlsoi_returned_serials;
13571
13572
13576 , moq.inventory_item_id inventory_item_id
13573 PROCEDURE IB_INV_Synch_Non_srl IS
13574 CURSOR INV_ONH_BAL_CUR IS
13575 select moq.organization_id organization_id
13577 , moq.revision revision
13578 , moq.subinventory_code subinventory_code
13579 , moq.locator_id locator_id
13580 , moq.lot_number lot_number
13581 , msi.primary_uom_code primary_uom_code
13582 , sum(moq.transaction_quantity) onhand_qty
13583 from
13584 mtl_system_items msi
13585 , mtl_onhand_quantities moq
13586 where msi.inventory_item_id = moq.inventory_item_id
13587 and msi.organization_id = moq.organization_id
13588 and msi.serial_number_control_code in (1,6) -- No Serial control and at SO Issue Items
13589 group by
13590 moq.organization_id
13591 , moq.inventory_item_id
13592 , moq.revision
13593 , moq.subinventory_code
13594 , moq.locator_id
13595 , moq.lot_number
13596 , msi.primary_uom_code;
13597 --
13598 v_txn_id NUMBER;
13599 v_freeze_date DATE;
13600 v_txn_type_id NUMBER;
13601 l_upg_profile VARCHAR2(30) := fnd_Profile.value('CSI_UPGRADING_FROM_RELEASE');
13602 v_mast_org_id NUMBER;
13603 v_nl_trackable VARCHAR2(1);
13604 v_location_id NUMBER;
13605 v_ins_condition_id NUMBER;
13606 v_mfg_srl_flag VARCHAR2(1);
13607 v_ins_status_id NUMBER;
13608 v_instance_id NUMBER;
13609 v_end_date DATE;
13610 v_ins_history_id NUMBER;
13611 v_created_by NUMBER := fnd_global.user_id;
13612 v_last_updated_by NUMBER := fnd_global.user_id;
13613 v_ins_ou_id NUMBER;
13614 v_ins_ou_history_id NUMBER;
13615 v_ins_party_id NUMBER;
13616 v_ins_party_history_id NUMBER;
13617 v_party_id NUMBER;
13618 v_source_reference_id NUMBER;
13619 v_err_msg VARCHAR2(2000);
13620 v_exists VARCHAR2(1);
13621 v_ins_qty NUMBER;
13622 v_ins_obj_nbr NUMBER;
13623 l_error_count NUMBER := 0;
13624 --
13625 Type NumTabType is VARRAY(10000) of NUMBER;
13626 organization_id_mig NumTabType;
13627 inventory_item_id_mig NumTabType;
13628 locator_id_mig NumTabType;
13629 quantity_mig NumTabType;
13630 --
13631 Type V3Type is VARRAY(10000) of VARCHAR2(3);
13632 uom_code_mig V3Type;
13633 revision_mig V3Type;
13634 --
13635 Type V10Type is VARRAY(10000) of VARCHAR2(10);
13636 subinv_mig V10Type;
13637 --
13638 Type V80Type is VARRAY(10000) of VARCHAR2(80);
13639 lot_mig V80Type;
13640 --
13641 MAX_BUFFER_SIZE NUMBER := 1000;
13642 x_return_status VARCHAR2(1);
13643 --
13644 process_next EXCEPTION;
13645 comp_error EXCEPTION;
13646 --
13647 BEGIN
13648 csi_t_gen_utility_pvt.build_file_name(
13649 p_file_segment1 => 'csinonsy',
13650 p_file_segment2 => to_char(sysdate, 'hh24miss'));
13651 --
13652 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
13653 csi_gen_utility_pvt.populate_install_param_rec;
13654 END IF;
13655 --
13656 v_freeze_date := csi_datastructures_pub.g_install_param_rec.freeze_date;
13657 --
13658 -- Get the Transaction Type ID for Txn Type MIGRATED
13659 Begin
13660 select transaction_type_id
13661 into v_txn_type_id
13662 from CSI_TXN_TYPES
13663 where SOURCE_TRANSACTION_TYPE = 'DATA_CORRECTION';
13664 Exception
13665 when no_data_found then
13666 v_err_msg := 'Txn Type DATA_CORRECTION not defined in CSI_TXN_TYPES';
13667 Raise comp_error;
13668 when others then
13669 v_err_msg := 'Unable to get the ID for Txn Type DATA_CORRECTION from CSI_TXN_TYPES';
13670 Raise comp_error;
13671 End;
13672 --
13673 -- Get the LATEST Status ID. This will be used for all INV records.
13674 Begin
13675 select instance_status_id
13676 into v_ins_status_id
13677 from CSI_INSTANCE_STATUSES
13678 where name = 'Latest';
13679 Exception
13680 when no_data_found then
13681 v_err_msg := 'Status ID not found in CSI for Latest Status';
13682 Raise comp_error;
13683 when too_many_rows then
13684 v_err_msg := 'Too many rows fouund in CSI for Latest Status';
13685 Raise comp_error;
13686 when others then
13687 v_err_msg := 'Error in getting the Status ID in CSI for Latest Status';
13688 Raise comp_error;
13689 End;
13690 -- Get the Internal Party ID
13691 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
13692 csi_gen_utility_pvt.populate_install_param_rec;
13696 --
13693 END IF;
13694 --
13695 v_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
13697 if v_party_id is null then
13698 v_err_msg := 'Internal Party ID not found in CSI_INSTALL_PARAMETERS';
13699 Raise comp_error;
13700 end if;
13701 --
13702 --
13703 OPEN INV_ONH_BAL_CUR;
13704 LOOP
13705 FETCH INV_ONH_BAL_CUR BULK COLLECT INTO
13706 organization_id_mig,
13707 inventory_item_id_mig,
13708 revision_mig,
13709 subinv_mig,
13710 locator_id_mig,
13711 lot_mig,
13712 uom_code_mig,
13713 quantity_mig
13714 LIMIT MAX_BUFFER_SIZE;
13715 --
13716 FOR i in 1 .. organization_id_mig.count LOOP
13717 Begin
13718 -- Assign NULL to all variables getting values from sequence. This is used at the later stage
13719 -- to delete the records if the Insert fails. Assigning NULL will ensure that we do not delete
13720 -- wrong set of previous records if the insert fails for the next.
13721 v_txn_id := -99999;
13722 v_instance_id := -99999;
13723 v_ins_history_id := -99999;
13724 v_ins_ou_id := -99999;
13725 v_ins_ou_history_id := -99999;
13726 v_ins_party_id := -99999;
13727 v_ins_party_history_id := -99999;
13728 --
13729 -- Get the Master Organization ID
13730 Begin
13731 select master_organization_id
13732 into v_mast_org_id
13733 from MTL_PARAMETERS
13734 where organization_id = organization_id_mig(i);
13735 Exception
13736 when no_data_found then
13737 Raise Process_next;
13738 End;
13739 -- Check for IB trackable
13740 v_nl_trackable := 'N';
13741 Begin
13742 select comms_nl_trackable_flag
13743 into v_nl_trackable
13744 from MTL_SYSTEM_ITEMS
13745 where inventory_item_id = inventory_item_id_mig(i)
13746 and organization_id = v_mast_org_id;
13747 Exception
13748 when no_data_found then
13749 Raise Process_next;
13750 End;
13751 -- Ignore if not Trackable
13752 IF NVL(v_nl_trackable,'N') <> 'Y' THEN
13753 Raise Process_next;
13754 END IF; -- nl_trackable check
13755 --
13756 -- Check if there are any errors in CSI_TXN_ERRORS
13757 l_error_count := 0;
13758 Begin
13759 select count(*)
13760 into l_error_count
13761 from CSI_TXN_ERRORS cii,
13762 MTL_MATERIAL_TRANSACTIONS mmt
13763 where cii.inv_material_transaction_id is not null
13764 and cii.inv_material_transaction_id = mmt.transaction_id
13765 and cii.processed_flag in ('E','R')
13766 and mmt.inventory_item_id = inventory_item_id_mig(i)
13767 and mmt.organization_id = organization_id_mig(i);
13768 End;
13769 --
13770 IF nvl(l_error_count,0) > 0 THEN
13771 v_err_msg := 'Unable to Synch Item ID '||to_char(inventory_item_id_mig(i))||
13772 ' Under Organization '||to_char(organization_id_mig(i));
13773 Out(v_err_msg);
13774 Raise Process_next;
13775 END IF;
13776 -- Get the Location ID from MTL_SECONDARY_INVENTORIES
13777 Begin
13778 select location_id
13779 into v_location_id
13780 from MTL_SECONDARY_INVENTORIES
13781 where organization_id = organization_id_mig(i)
13782 and secondary_inventory_name = subinv_mig(i);
13783 Exception
13784 when no_data_found then
13785 Raise Process_next;
13786 End;
13787 -- Get the Location ID from HR_ORGANIZATION_UNITS
13788 IF v_location_id IS NULL THEN
13789 Begin
13790 select location_id
13791 into v_location_id
13792 from HR_ORGANIZATION_UNITS
13793 where organization_id = organization_id_mig(i);
13794 Exception
13795 when no_data_found then
13796 Raise Process_next;
13797 End;
13798 END IF;
13799 --
13800 if lot_mig(i) is not NULL then
13801 v_mfg_srl_flag := 'Y';
13802 else
13803 v_mfg_srl_flag := NULL;
13804 end if;
13805 --
13806 v_exists := 'N';
13807 v_end_date := NULL;
13808 Begin
13809 select quantity,instance_id,active_end_date
13810 into v_ins_qty,v_instance_id,v_end_date
13811 from CSI_ITEM_INSTANCES
13812 where inventory_item_id = inventory_item_id_mig(i)
13813 and inv_organization_id = organization_id_mig(i)
13814 and serial_number is null
13815 and location_type_code = 'INVENTORY'
13816 and instance_usage_code = 'IN_INVENTORY'
13817 and inv_subinventory_name = subinv_mig(i)
13818 and nvl(inv_locator_id,-999) = nvl(locator_id_mig(i),-999)
13819 and nvl(inventory_revision,'$#$') = nvl(revision_mig(i),'$#$')
13820 and nvl(lot_number,'$#$') = nvl(lot_mig(i),'$#$');
13821 v_exists := 'Y';
13822 Exception
13823 when no_data_found then
13824 v_exists := 'N';
13825 when too_many_rows then
13826 Raise Process_next;
13827 End;
13828 --
13829 IF v_exists = 'Y' THEN
13830 IF v_ins_qty <> quantity_mig(i) OR
13834 ,active_end_date = decode(quantity_mig(i),0,sysdate,null)
13831 NVL(v_end_date,(sysdate+1)) <= sysdate THEN
13832 UPDATE CSI_ITEM_INSTANCES
13833 set quantity = quantity_mig(i)
13835 ,instance_status_id = decode(quantity_mig(i),0,1,v_ins_status_id)
13836 ,last_update_date = sysdate
13837 ,last_updated_by = v_last_updated_by
13838 ,last_vld_organization_id = organization_id_mig(i)
13839 where instance_id = v_instance_id;
13840 --
13841 Begin
13842 select CSI_TRANSACTIONS_S.nextval
13843 into v_txn_id
13844 from DUAL;
13845 End;
13846 --
13847 Begin
13848 INSERT INTO CSI_TRANSACTIONS(
13849 TRANSACTION_ID
13850 ,TRANSACTION_DATE
13851 ,SOURCE_TRANSACTION_DATE
13852 ,SOURCE_HEADER_REF
13853 ,TRANSACTION_TYPE_ID
13854 ,CREATED_BY
13855 ,CREATION_DATE
13856 ,LAST_UPDATED_BY
13857 ,LAST_UPDATE_DATE
13858 ,LAST_UPDATE_LOGIN
13859 ,OBJECT_VERSION_NUMBER
13860 )
13861 VALUES(
13862 v_txn_id -- TRANSACTION_ID
13863 ,SYSDATE -- TRANSACTION_DATE
13864 ,SYSDATE -- SOURCE_TRANSACTION_DATE
13865 ,'DATAFIX By IB-INV Synch' -- SOURCE_HEADER_REF
13866 ,v_txn_type_id -- TRANSACTION_TYPE_ID
13867 ,v_created_by
13868 ,sysdate
13869 ,v_last_updated_by
13870 ,sysdate
13871 ,-1
13872 ,1
13873 );
13874 Exception
13875 when others then
13876 v_err_msg := 'Error while Inserting into CSI_TRANSACTIONS '||substr(sqlerrm,1,1000);
13877 raise_application_error(-20000, v_err_msg );
13878 Raise;
13879 End;
13880 -- Tie the Transaction with the instance history
13881 INSERT INTO CSI_ITEM_INSTANCES_H
13882 (
13883 INSTANCE_HISTORY_ID
13884 ,TRANSACTION_ID
13885 ,INSTANCE_ID
13886 ,OLD_QUANTITY
13887 ,NEW_QUANTITY
13888 ,CREATION_DATE
13889 ,LAST_UPDATE_DATE
13890 ,CREATED_BY
13891 ,LAST_UPDATED_BY
13892 ,LAST_UPDATE_LOGIN
13893 ,OBJECT_VERSION_NUMBER
13894 )
13895 VALUES
13896 (
13897 CSI_ITEM_INSTANCES_H_S.nextval
13898 ,v_txn_id
13899 ,v_instance_id
13900 ,v_ins_qty
13901 ,quantity_mig(i)
13902 ,SYSDATE
13903 ,SYSDATE
13904 ,v_created_by
13905 ,v_last_updated_by
13906 ,-1
13907 ,1
13908 );
13909 END IF;
13910 Raise Process_next;
13911 END IF; -- Check for instance existance
13912 --
13913 -- If instance is not found then create the INV instance
13914 -- For each record, we insert a record into CSI_TRANSACTIONS. This Transaction ID will be used
13915 -- to populate the History Record.
13916 Begin
13917 select CSI_TRANSACTIONS_S.nextval
13918 into v_txn_id
13919 from DUAL;
13920 End;
13921 --
13922 Begin
13923 INSERT INTO CSI_TRANSACTIONS(
13924 TRANSACTION_ID
13925 ,TRANSACTION_DATE
13926 ,SOURCE_TRANSACTION_DATE
13927 ,SOURCE_HEADER_REF
13928 ,TRANSACTION_TYPE_ID
13929 ,CREATED_BY
13930 ,CREATION_DATE
13931 ,LAST_UPDATED_BY
13932 ,LAST_UPDATE_DATE
13933 ,LAST_UPDATE_LOGIN
13934 ,OBJECT_VERSION_NUMBER
13935 )
13936 VALUES(
13937 v_txn_id -- TRANSACTION_ID
13938 ,SYSDATE -- TRANSACTION_DATE
13939 ,SYSDATE -- SOURCE_TRANSACTION_DATE
13940 ,'DATAFIX By IB-INV Synch' -- SOURCE_HEADER_REF
13941 ,v_txn_type_id -- TRANSACTION_TYPE_ID
13942 ,v_created_by
13943 ,sysdate
13944 ,v_last_updated_by
13945 ,sysdate
13946 ,-1
13947 ,1
13948 );
13949 Exception
13950 when others then
13951 v_err_msg := 'Error while Inserting into CSI_TRANSACTIONS '||substr(sqlerrm,1,1000);
13952 raise_application_error(-20000, v_err_msg );
13953 Raise;
13954 End;
13955 --
13956 Begin
13957 select csi_item_instances_s.nextval
13958 into v_instance_id
13959 from DUAL;
13960 End;
13961 --
13962 -- Insert into CSI_ITEM_INSTANCES
13963 Begin
13964 INSERT INTO CSI_ITEM_INSTANCES(
13965 INSTANCE_ID
13966 ,INSTANCE_NUMBER
13967 ,EXTERNAL_REFERENCE
13968 ,INVENTORY_ITEM_ID
13969 ,INVENTORY_REVISION
13970 ,INV_MASTER_ORGANIZATION_ID
13971 ,MFG_SERIAL_NUMBER_FLAG
13972 ,LOT_NUMBER
13973 ,QUANTITY
13974 ,UNIT_OF_MEASURE
13975 ,ACCOUNTING_CLASS_CODE
13976 ,INSTANCE_CONDITION_ID
13977 ,INSTANCE_STATUS_ID
13978 ,CUSTOMER_VIEW_FLAG
13979 ,MERCHANT_VIEW_FLAG
13980 ,SELLABLE_FLAG
13981 ,SYSTEM_ID
13982 ,INSTANCE_TYPE_CODE
13983 ,ACTIVE_START_DATE
13984 ,ACTIVE_END_DATE
13985 ,LOCATION_TYPE_CODE
13986 ,LOCATION_ID
13990 ,PA_PROJECT_ID
13987 ,INV_ORGANIZATION_ID
13988 ,INV_SUBINVENTORY_NAME
13989 ,INV_LOCATOR_ID
13991 ,PA_PROJECT_TASK_ID
13992 ,IN_TRANSIT_ORDER_LINE_ID
13993 ,WIP_JOB_ID
13994 ,PO_ORDER_LINE_ID
13995 ,LAST_OE_ORDER_LINE_ID
13996 ,LAST_OE_RMA_LINE_ID
13997 ,LAST_PO_PO_LINE_ID
13998 ,LAST_OE_PO_NUMBER
13999 ,LAST_WIP_JOB_ID
14000 ,LAST_PA_PROJECT_ID
14001 ,LAST_PA_TASK_ID
14002 ,LAST_OE_AGREEMENT_ID
14003 ,INSTALL_DATE
14004 ,MANUALLY_CREATED_FLAG
14005 ,RETURN_BY_DATE
14006 ,ACTUAL_RETURN_DATE
14007 ,CREATION_COMPLETE_FLAG
14008 ,COMPLETENESS_FLAG
14009 ,CREATED_BY
14010 ,CREATION_DATE
14011 ,LAST_UPDATED_BY
14012 ,LAST_UPDATE_DATE
14013 ,LAST_UPDATE_LOGIN
14014 ,OBJECT_VERSION_NUMBER
14015 ,SECURITY_GROUP_ID
14016 ,INSTANCE_USAGE_CODE
14017 ,OWNER_PARTY_SOURCE_TABLE
14018 ,OWNER_PARTY_ID
14019 ,LAST_VLD_ORGANIZATION_ID
14020 )
14021 VALUES(
14022 v_instance_id -- INSTANCE_ID
14023 ,v_instance_id -- INSTANCE_NUMBER
14024 ,NULL -- EXTERNAL_REFERENCE
14025 ,INVENTORY_ITEM_ID_mig(i) -- INVENTORY_ITEM_ID
14026 ,revision_mig(i) -- INVENTORY_REVISION
14027 ,v_mast_org_id -- INV_MASTER_ORGANIZATION_ID
14028 ,v_mfg_srl_flag -- MFG_SERIAL_NUMBER_FLAG
14029 ,LOT_mig(i) -- LOT_NUMBER
14030 ,quantity_mig(i) -- QUANTITY
14031 ,uom_code_mig(i) -- UNIT_OF_MEASURE (PRIMARY)
14032 ,'INV' -- ACCOUNTING_CLASS_CODE
14033 ,v_ins_condition_id -- INSTANCE_CONDITION_ID
14034 ,v_ins_status_id -- INSTANCE_STATUS_ID
14035 ,'N' -- CUSTOMER_VIEW_FLAG
14036 ,'Y' -- MERCHANT_VIEW_FLAG
14037 ,'Y' -- SELLABLE_FLAG
14038 ,NULL -- SYSTEM_ID
14039 ,NULL -- INSTANCE_TYPE_CODE
14040 ,SYSDATE -- ACTIVE_START_DATE
14041 ,NULL -- ACTIVE_END_DATE
14042 ,'INVENTORY' -- LOCATION_TYPE_CODE
14043 ,v_location_id -- LOCATION_ID
14044 ,ORGANIZATION_ID_mig(i) -- INV_ORGANIZATION_ID
14045 ,subinv_mig(i) -- INV_SUBINVENTORY_NAME
14046 ,LOCATOR_ID_mig(i) -- INV_LOCATOR_ID
14047 ,NULL -- PA_PROJECT_ID
14048 ,NULL -- PA_PROJECT_TASK_ID
14049 ,NULL -- IN_TRANSIT_ORDER_LINE_ID
14050 ,NULL -- WIP_JOB_ID
14051 ,NULL -- PO_ORDER_LINE_ID
14052 ,NULL -- LAST_OE_ORDER_LINE_ID
14053 ,NULL -- LAST_OE_RMA_LINE_ID
14054 ,NULL -- LAST_PO_PO_LINE_ID
14055 ,NULL -- LAST_OE_PO_NUMBER
14056 ,NULL -- LAST_WIP_JOB_ID
14057 ,NULL -- LAST_PA_PROJECT_ID
14058 ,NULL -- LAST_PA_TASK_ID
14059 ,NULL -- LAST_OE_AGREEMENT_ID
14060 ,NULL -- INSTALL_DATE
14061 ,'N' -- MANUALLY_CREATED_FLAG
14062 ,NULL -- RETURN_BY_DATE
14063 ,NULL -- ACTUAL_RETURN_DATE
14064 ,'Y' -- CREATION_COMPLETE_FLAG
14065 ,'Y' -- COMPLETENESS_FLAG
14066 ,v_created_by -- CREATED_BY
14067 ,sysdate -- CREATION_DATE
14068 ,v_last_updated_by -- LAST_UPDATED_BY
14069 ,sysdate -- LAST_UPDATE_DATE
14070 ,-1 -- LAST_UPDATE_LOGIN
14071 ,1 -- OBJECT_VERSION_NUMBER
14072 ,NULL -- SECURITY_GROUP_ID
14073 ,'IN_INVENTORY' -- INSTANCE_USAGE_CODE
14074 ,'HZ_PARTIES' -- OWNER_PARTY_SOURCE_TABLE
14075 ,v_party_id -- OWNER_PARTY_ID
14076 ,ORGANIZATION_ID_mig(i) -- LAST_VLD_ORGANIZATION_ID
14077 );
14078 Exception
14079 when others then
14080 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
14081 ||' into CSI_ITEM_INSTANCES '||SUBSTR(sqlerrm,1,1000);
14082 raise_application_error(-20000, v_err_msg );
14083 Raise;
14084 End;
14085 -- Use the same instance record to create the history
14086 Begin
14087 select CSI_ITEM_INSTANCES_H_S.nextval
14088 into v_ins_history_id
14089 from DUAL;
14090 End;
14091 --
14092 Begin
14096 ,TRANSACTION_ID
14093 INSERT INTO CSI_ITEM_INSTANCES_H(
14094 INSTANCE_HISTORY_ID
14095 ,INSTANCE_ID
14097 ,OLD_INSTANCE_NUMBER
14098 ,NEW_INSTANCE_NUMBER
14099 ,OLD_EXTERNAL_REFERENCE
14100 ,NEW_EXTERNAL_REFERENCE
14101 ,OLD_INVENTORY_ITEM_ID
14102 ,NEW_INVENTORY_ITEM_ID
14103 ,OLD_INVENTORY_REVISION
14104 ,NEW_INVENTORY_REVISION
14105 ,OLD_INV_MASTER_ORGANIZATION_ID
14106 ,NEW_INV_MASTER_ORGANIZATION_ID
14107 ,OLD_MFG_SERIAL_NUMBER_FLAG
14108 ,NEW_MFG_SERIAL_NUMBER_FLAG
14109 ,OLD_LOT_NUMBER
14110 ,NEW_LOT_NUMBER
14111 ,OLD_QUANTITY
14112 ,NEW_QUANTITY
14113 ,OLD_UNIT_OF_MEASURE
14114 ,NEW_UNIT_OF_MEASURE
14115 ,OLD_ACCOUNTING_CLASS_CODE
14116 ,NEW_ACCOUNTING_CLASS_CODE
14117 ,OLD_INSTANCE_CONDITION_ID
14118 ,NEW_INSTANCE_CONDITION_ID
14119 ,OLD_INSTANCE_STATUS_ID
14120 ,NEW_INSTANCE_STATUS_ID
14121 ,OLD_CUSTOMER_VIEW_FLAG
14122 ,NEW_CUSTOMER_VIEW_FLAG
14123 ,OLD_MERCHANT_VIEW_FLAG
14124 ,NEW_MERCHANT_VIEW_FLAG
14125 ,OLD_SELLABLE_FLAG
14126 ,NEW_SELLABLE_FLAG
14127 ,OLD_SYSTEM_ID
14128 ,NEW_SYSTEM_ID
14129 ,OLD_INSTANCE_TYPE_CODE
14130 ,NEW_INSTANCE_TYPE_CODE
14131 ,OLD_ACTIVE_START_DATE
14132 ,NEW_ACTIVE_START_DATE
14133 ,OLD_ACTIVE_END_DATE
14134 ,NEW_ACTIVE_END_DATE
14135 ,OLD_LOCATION_TYPE_CODE
14136 ,NEW_LOCATION_TYPE_CODE
14137 ,OLD_LOCATION_ID
14138 ,NEW_LOCATION_ID
14139 ,OLD_INV_ORGANIZATION_ID
14140 ,NEW_INV_ORGANIZATION_ID
14141 ,OLD_INV_SUBINVENTORY_NAME
14142 ,NEW_INV_SUBINVENTORY_NAME
14143 ,OLD_INV_LOCATOR_ID
14144 ,NEW_INV_LOCATOR_ID
14145 ,OLD_PA_PROJECT_ID
14146 ,NEW_PA_PROJECT_ID
14147 ,OLD_PA_PROJECT_TASK_ID
14148 ,NEW_PA_PROJECT_TASK_ID
14149 ,OLD_IN_TRANSIT_ORDER_LINE_ID
14150 ,NEW_IN_TRANSIT_ORDER_LINE_ID
14151 ,OLD_WIP_JOB_ID
14152 ,NEW_WIP_JOB_ID
14153 ,OLD_PO_ORDER_LINE_ID
14154 ,NEW_PO_ORDER_LINE_ID
14155 ,OLD_COMPLETENESS_FLAG
14156 ,NEW_COMPLETENESS_FLAG
14157 ,CREATED_BY
14158 ,CREATION_DATE
14159 ,LAST_UPDATED_BY
14160 ,LAST_UPDATE_DATE
14161 ,LAST_UPDATE_LOGIN
14162 ,OBJECT_VERSION_NUMBER
14163 ,SECURITY_GROUP_ID
14164 ,FULL_DUMP_FLAG
14165 ,OLD_INST_USAGE_CODE
14166 ,NEW_INST_USAGE_CODE
14167 ,OLD_LAST_VLD_ORGANIZATION_ID
14168 ,NEW_LAST_VLD_ORGANIZATION_ID
14169 )
14170 VALUES(
14171 v_ins_history_id -- INSTANCE_HISTORY_ID
14172 ,v_instance_id -- INSTANCE_ID
14173 ,v_txn_id -- TRANSACTION_ID
14174 ,NULL -- OLD_INSTANCE_NUMBER
14175 ,v_instance_id -- NEW_INSTANCE_NUMBER
14176 ,NULL -- OLD_EXTERNAL_REFERENCE
14177 ,NULL -- NEW_EXTERNAL_REFERENCE
14178 ,NULL -- OLD_INVENTORY_ITEM_ID
14179 ,INVENTORY_ITEM_ID_mig(i) -- NEW_INVENTORY_ITEM_ID
14180 ,NULL -- OLD_INVENTORY_REVISION
14181 ,revision_mig(i) -- NEW_INVENTORY_REVISION
14182 ,NULL -- OLD_INV_MASTER_ORGANIZATION_ID
14183 ,v_mast_org_id -- NEW_INV_MASTER_ORGANIZATION_ID
14184 ,NULL -- OLD_MFG_SERIAL_NUMBER_FLAG
14185 ,v_mfg_srl_flag -- NEW_MFG_SERIAL_NUMBER_FLAG
14186 ,NULL -- OLD LOT
14187 ,LOT_mig(i) -- NEW LOT
14188 ,NULL -- OLD_QUANTITY
14189 ,quantity_mig(i) -- NEW_QUANTITY
14190 ,NULL -- OLD_UNIT_OF_MEASURE
14191 ,uom_code_mig(i) -- NEW_UNIT_OF_MEASURE
14192 ,NULL -- OLD_ACCOUNTING_CLASS_CODE
14193 ,'INV' -- NEW_ACCOUNTING_CLASS_CODE
14194 ,NULL -- OLD_INSTANCE_CONDITION_ID
14195 ,v_ins_condition_id -- NEW_INSTANCE_CONDITION_ID
14196 ,NULL -- OLD_INSTANCE_STATUS_ID
14197 ,v_ins_status_id -- NEW_INSTANCE_STATUS_ID
14198 ,NULL -- OLD_CUSTOMER_VIEW_FLAG
14199 ,'N' -- NEW_CUSTOMER_VIEW_FLAG
14200 ,NULL -- OLD_MERCHANT_VIEW_FLAG
14201 ,'Y' -- NEW_MERCHANT_VIEW_FLAG
14202 ,NULL -- OLD_SELLABLE_FLAG
14206 ,NULL -- OLD_INSTANCE_TYPE_CODE
14203 ,NULL -- NEW_SELLABLE_FLAG
14204 ,NULL -- OLD_SYSTEM_ID
14205 ,NULL -- NEW_SYSTEM_ID
14207 ,NULL -- NEW_INSTANCE_TYPE_CODE
14208 ,NULL -- OLD_ACTIVE_START_DATE
14209 ,SYSDATE -- NEW_ACTIVE_START_DATE
14210 ,NULL -- OLD_ACTIVE_END_DATE
14211 ,NULL -- NEW_ACTIVE_END_DATE
14212 ,NULL -- OLD_LOCATION_TYPE_CODE
14213 ,'INVENTORY' -- NEW_LOCATION_TYPE_CODE
14214 ,NULL -- OLD_LOCATION_ID
14215 ,v_location_id -- NEW_LOCATION_ID
14216 ,NULL -- OLD_INV_ORGANIZATION_ID
14217 ,ORGANIZATION_ID_mig(i) -- NEW_INV_ORGANIZATION_ID
14218 ,NULL -- OLD_INV_SUBINVENTORY_NAME
14219 ,subinv_mig(i) -- NEW_INV_SUBINVENTORY_NAME
14220 ,NULL -- OLD_INV_LOCATOR_ID
14221 ,LOCATOR_ID_mig(i) -- NEW_INV_LOCATOR_ID
14222 ,NULL -- OLD_PA_PROJECT_ID
14223 ,NULL -- NEW_PA_PROJECT_ID
14224 ,NULL -- OLD_PA_PROJECT_TASK_ID
14225 ,NULL -- NEW_PA_PROJECT_TASK_ID
14226 ,NULL -- OLD_IN_TRANSIT_ORDER_LINE_ID
14227 ,NULL -- NEW_IN_TRANSIT_ORDER_LINE_ID
14228 ,NULL -- OLD_WIP_JOB_ID
14229 ,NULL -- NEW_WIP_JOB_ID
14230 ,NULL -- OLD_PO_ORDER_LINE_ID
14231 ,NULL -- NEW_PO_ORDER_LINE_ID
14232 ,NULL -- OLD_COMPLETENESS_FLAG
14233 ,'Y' -- NEW_COMPLETENESS_FLAG
14234 ,v_created_by -- CREATED_BY
14235 ,sysdate -- CREATION_DATE
14236 ,v_last_updated_by -- LAST_UPDATED_BY
14237 ,sysdate -- LAST_UPDATE_DATE
14238 ,-1 -- LAST_UPDATE_LOGIN
14239 ,1 -- OBJECT_VERSION_NUMBER
14240 ,NULL -- SECURITY_GROUP_ID
14241 ,'N' -- FULL_DUMP_FLAG
14242 ,NULL -- OLD_INST_USAGE_CODE
14243 ,'IN_INVENTORY' -- NEW_INST_USAGE_CODE
14244 ,NULL -- OLD_LAST_VLD_ORGANIZATION_ID
14245 ,ORGANIZATION_ID_mig(i) -- NEW_LAST_VLD_ORGANIZATION_ID
14246 );
14247 Exception
14248 when others then
14249 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
14250 ||' into CSI_ITEM_INSTANCES_H Using the Same Instance '||SUBSTR(sqlerrm,1,1000);
14251 raise_application_error(-20000, v_err_msg );
14252 Raise;
14253 End;
14254 --
14255 Begin
14256 select CSI_I_PARTIES_S.nextval
14257 into v_ins_party_id
14258 from DUAL;
14259 End;
14260 Begin
14261 INSERT INTO CSI_I_PARTIES(
14262 INSTANCE_PARTY_ID
14263 ,INSTANCE_ID
14264 ,PARTY_SOURCE_TABLE
14265 ,PARTY_ID
14266 ,RELATIONSHIP_TYPE_CODE
14267 ,CONTACT_FLAG
14268 ,CONTACT_IP_ID
14269 ,ACTIVE_START_DATE
14270 ,ACTIVE_END_DATE
14271 ,CREATED_BY
14272 ,CREATION_DATE
14273 ,LAST_UPDATED_BY
14274 ,LAST_UPDATE_DATE
14275 ,LAST_UPDATE_LOGIN
14276 ,OBJECT_VERSION_NUMBER
14277 ,SECURITY_GROUP_ID
14278 )
14279 VALUES(
14280 v_ins_party_id -- INSTANCE_PARTY_ID
14281 ,v_instance_id -- INSTANCE_ID
14282 ,'HZ_PARTIES' -- PARTY_SOURCE_TABLE
14283 ,v_party_id -- PARTY_ID
14284 ,'OWNER' -- RELATIONSHIP_TYPE_CODE
14285 ,'N' -- CONTACT_FLAG
14286 ,NULL -- CONTACT_IP_ID
14287 ,SYSDATE -- ACTIVE_START_DATE
14288 ,NULL -- ACTIVE_END_DATE
14289 ,v_created_by -- CREATED_BY
14290 ,sysdate -- CREATION_DATE
14291 ,v_last_updated_by -- LAST_UPDATED_BY
14292 ,sysdate -- LAST_UPDATE_DATE
14293 ,-1 -- LAST_UPDATE_LOGIN
14297 Exception
14294 ,1 -- OBJECT_VERSION_NUMBER
14295 ,NULL -- SECURITY_GROUP_ID
14296 );
14298 when others then
14299 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
14300 ||' into CSI_I_PARTIES '||SUBSTR(sqlerrm,1,1000);
14301 raise_application_error(-20000, v_err_msg );
14302 Raise;
14303 End;
14304 -- Insert into CSI_I_PARTIES_H
14305 Begin
14306 select CSI_I_PARTIES_H_S.nextval
14307 into v_ins_party_history_id
14308 from DUAL;
14309 End;
14310 -- Insert into CSI_I_PARTIES_H
14311 Begin
14312 INSERT INTO CSI_I_PARTIES_H(
14313 INSTANCE_PARTY_HISTORY_ID
14314 ,INSTANCE_PARTY_ID
14315 ,TRANSACTION_ID
14316 ,OLD_PARTY_SOURCE_TABLE
14317 ,NEW_PARTY_SOURCE_TABLE
14318 ,OLD_PARTY_ID
14319 ,NEW_PARTY_ID
14320 ,OLD_RELATIONSHIP_TYPE_CODE
14321 ,NEW_RELATIONSHIP_TYPE_CODE
14322 ,OLD_CONTACT_FLAG
14323 ,NEW_CONTACT_FLAG
14324 ,OLD_CONTACT_IP_ID
14325 ,NEW_CONTACT_IP_ID
14326 ,OLD_ACTIVE_START_DATE
14327 ,NEW_ACTIVE_START_DATE
14328 ,OLD_ACTIVE_END_DATE
14329 ,NEW_ACTIVE_END_DATE
14330 ,FULL_DUMP_FLAG
14331 ,CREATED_BY
14332 ,CREATION_DATE
14333 ,LAST_UPDATED_BY
14334 ,LAST_UPDATE_DATE
14335 ,LAST_UPDATE_LOGIN
14336 ,OBJECT_VERSION_NUMBER
14337 ,SECURITY_GROUP_ID
14338 )
14339 VALUES(
14340 v_ins_party_history_id -- INSTANCE_PARTY_HISTORY_ID
14341 ,v_ins_party_id -- INSTANCE_PARTY_ID
14342 ,v_txn_id -- TRANSACTION_ID
14343 ,NULL -- OLD_PARTY_SOURCE_TABLE
14344 ,'HZ_PARTIES' -- NEW_PARTY_SOURCE_TABLE
14345 ,NULL -- OLD_PARTY_ID
14346 ,v_party_id -- NEW_PARTY_ID
14347 ,NULL -- OLD_RELATIONSHIP_TYPE_CODE
14348 ,'OWNER' -- NEW_RELATIONSHIP_TYPE_CODE
14349 ,NULL -- OLD_CONTACT_FLAG
14350 ,'N' -- NEW_CONTACT_FLAG
14351 ,NULL -- OLD_CONTACT_IP_ID
14352 ,NULL -- NEW_CONTACT_IP_ID
14353 ,NULL -- OLD_ACTIVE_START_DATE
14354 ,SYSDATE -- NEW_ACTIVE_START_DATE
14355 ,NULL -- OLD_ACTIVE_END_DATE
14356 ,NULL -- NEW_ACTIVE_END_DATE
14357 ,'N' -- FULL_DUMP_FLAG
14358 ,v_created_by
14359 ,sysdate
14360 ,v_last_updated_by
14361 ,sysdate
14362 ,-1
14363 ,1
14364 ,NULL
14365 );
14366 Exception
14367 when others then
14368 v_err_msg := 'Unable to Insert Item ID '||to_char(inventory_item_id_mig(i))
14369 ||' into CSI_I_PARTIES_H using the same Instance '||SUBSTR(sqlerrm,1,1000);
14370 raise_application_error(-20000, v_err_msg );
14371 Raise;
14372 End;
14373 Exception
14374 when process_next then
14375 null;
14376 when others then
14377 v_err_msg := substr(sqlerrm,1,1000);
14378 raise_application_error(-20000, v_err_msg );
14379 Raise;
14380 End;
14381 END LOOP; -- for loop
14382 commit;
14383 EXIT WHEN INV_ONH_BAL_CUR%NOTFOUND;
14384 END LOOP; -- Open loop
14385 commit;
14386 CLOSE INV_ONH_BAL_CUR;
14387 EXCEPTION
14388 when comp_error then
14389 null;
14390 END IB_INV_Synch_Non_srl;
14391
14392 --
14393 PROCEDURE mark_error_transactions IS
14394 CURSOR CSI_CUR IS
14395 SELECT cii.transaction_error_id,
14396 mmt.inventory_item_id,
14397 mmt.organization_id,
14398 mmt.transaction_action_id,
14399 mmt.transaction_source_type_id,
14400 mmt.transaction_id
14401 FROM csi_txn_errors cii,
14402 mtl_material_transactions mmt
14403 WHERE cii.processed_flag in ('E', 'R')
14404 AND cii.inv_material_transaction_id is not null
14405 AND mmt.transaction_id = cii.inv_material_transaction_id;
14406
14407 TYPE NumTabType is varray(10000) of number;
14408
14409 txn_error_id NumTabType;
14410 item_id NumTabType;
14411 inv_org_id NumTabType;
14412 mmt_action_id NumTabType;
14413 mmt_source_type_id NumTabType;
14414 mat_txn_id NumTabType;
14415 --
14416 max_buffer_size number := 1000;
14417 --
14418 l_user_id number := fnd_global.user_id;
14419 v_srl_ctl number;
14420 v_txn_type_id number;
14421 v_lot_ctl number;
14422 l_ctr number := 0;
14423 --
14424
14425 TYPE numlist is TABLE of number INDEX BY binary_integer;
14426 l_upd_txn_tbl numlist;
14427 --
14428 process_next exception;
14432
14429 comp_error exception;
14430
14431 BEGIN
14433 -- Get the Transaction Type ID for Txn Type MIGRATED
14434 BEGIN
14435 SELECT transaction_type_id
14436 INTO v_txn_type_id
14437 FROM csi_txn_types
14438 WHERE source_transaction_type = 'DATA_CORRECTION';
14439 EXCEPTION
14440 WHEN no_data_found THEN
14441 RAISE comp_error;
14442 WHEN others THEN
14443 RAISE comp_error;
14444 END;
14445 --
14446
14447 OPEN CSI_CUR;
14448 LOOP
14449 FETCH CSI_CUR BULK COLLECT INTO
14450 txn_error_id,
14451 item_id,
14452 inv_org_id,
14453 mmt_action_id,
14454 mmt_source_type_id,
14455 mat_txn_id
14456 LIMIT MAX_BUFFER_SIZE;
14457 --
14458 FOR i in 1 .. txn_error_id.count
14459 LOOP
14460 BEGIN
14461
14462 -- skip wip errors
14463 IF mmt_source_type_id(i) = 5 THEN
14464 RAISE process_next;
14465 END IF;
14466
14467 -- skip shipment and RMA errors
14468 IF (mmt_action_id(i) = 1 AND mmt_source_type_id(i) = 2) -- Sales Order Issue
14469 OR
14470 (mmt_action_id(i) = 27 AND mmt_source_type_id(i) = 12) -- RMA Receipt
14471 THEN
14472 RAISE process_next;
14473 END IF;
14474
14475 --
14476 BEGIN
14477 SELECT serial_number_control_code,
14478 lot_control_code
14479 INTO v_srl_ctl,
14480 v_lot_ctl
14481 FROM mtl_system_items
14482 WHERE inventory_item_id = item_id(i)
14483 AND organization_id = inv_org_id(i);
14484 EXCEPTION
14485 WHEN no_data_found THEN
14486 RAISE process_next;
14487 END;
14488
14489 --
14490 IF v_srl_ctl not in (1, 6) THEN
14491 RAISE process_next;
14492 END IF;
14493 --
14494
14495 IF v_srl_ctl = 6 THEN
14496
14497 -- skip iso shipments for srlsoi items
14498 IF (mmt_action_id(i) = 21 AND mmt_source_type_id(i) = 8) -- Int Order Intr Ship
14499 OR
14500 (mmt_action_id(i) = 12 AND mmt_source_type_id(i) = 7) -- Int Req Intr Rcpt
14501 OR
14502 (mmt_action_id(i) = 3 AND mmt_source_type_id(i) = 8) -- Int Order Direct Ship
14503 OR
14504 (mmt_action_id(i) = 1 AND mmt_source_type_id(i) = 8) -- Internal order issue
14505 THEN
14506 RAISE process_next;
14507 END IF;
14508 END IF;
14509
14510 l_ctr := l_ctr + 1;
14511 l_upd_txn_tbl(l_ctr) := txn_error_id(i);
14512
14513 EXCEPTION
14514 WHEN process_next THEN
14515 null;
14516 END;
14517 END LOOP;
14518
14519 EXIT WHEN csi_cur%notfound;
14520
14521 END LOOP;
14522
14523 CLOSE csi_cur;
14524 --
14525 IF l_upd_txn_tbl.count > 0 THEN
14526 FORALL i in l_upd_txn_tbl.FIRST .. l_upd_txn_tbl.LAST
14527 UPDATE csi_txn_errors
14528 SET processed_flag = 'D',
14529 error_text = 'Data fix done - mark_error_transactions',
14530 last_update_date = sysdate
14531 WHERE transaction_error_id = l_upd_txn_tbl(i);
14532 commit;
14533 END IF;
14534 EXCEPTION
14535 WHEN comp_error THEN
14536 null;
14537 END mark_error_transactions;
14538
14539 --
14540 PROCEDURE Reverse_IB_INV_Synch IS
14541 CURSOR CSI_CUR IS
14542 select cii.instance_id,cii.inventory_item_id,cii.inv_organization_id,
14543 cii.inv_subinventory_name,cii.inv_locator_id,
14544 cii.inventory_revision,cii.lot_number,cii.quantity
14545 from CSI_ITEM_INSTANCES cii,
14546 MTL_SYSTEM_ITEMS msi
14547 where cii.location_type_code = 'INVENTORY'
14548 and cii.instance_usage_code = 'IN_INVENTORY'
14549 and cii.serial_number is NULL
14550 and msi.inventory_item_id = cii.inventory_item_id
14551 and msi.organization_id = cii.inv_master_organization_id
14552 and nvl(msi.comms_nl_trackable_flag,'N') = 'Y';
14553 --
14554 v_qty NUMBER;
14555 l_txn_id NUMBER;
14556 l_user_id NUMBER := fnd_global.user_id;
14557 l_error_count NUMBER;
14558 l_ins_flag VARCHAR2(1) := 'N';
14559 v_txn_type_id NUMBER;
14560 v_err_msg VARCHAR2(2000);
14561 --
14562 Type NumTabType is VARRAY(10000) of NUMBER;
14563 instance_id_mig NumTabType;
14564 organization_id_mig NumTabType;
14565 inventory_item_id_mig NumTabType;
14566 locator_id_mig NumTabType;
14567 quantity_mig NumTabType;
14568 --
14569 Type V3Type is VARRAY(10000) of VARCHAR2(3);
14570 revision_mig V3Type;
14571 --
14572 Type V10Type is VARRAY(10000) of VARCHAR2(10);
14573 subinv_mig V10Type;
14574 --
14575 Type V80Type is VARRAY(10000) of VARCHAR2(80);
14576 lot_mig V80Type;
14577 --
14581 comp_error EXCEPTION;
14578 MAX_BUFFER_SIZE NUMBER := 1000;
14579 --
14580 process_next EXCEPTION;
14582 BEGIN
14583 csi_t_gen_utility_pvt.build_file_name(
14584 p_file_segment1 => 'csinonsy',
14585 p_file_segment2 => to_char(sysdate, 'hh24miss'));
14586 --
14587 -- Get the Transaction Type ID for Txn Type MIGRATED
14588 Begin
14589 select transaction_type_id
14590 into v_txn_type_id
14591 from CSI_TXN_TYPES
14592 where SOURCE_TRANSACTION_TYPE = 'DATA_CORRECTION';
14593 Exception
14594 when no_data_found then
14595 Raise comp_error;
14596 when others then
14597 Raise comp_error;
14598 End;
14599 select CSI_TRANSACTIONS_S.nextval
14600 into l_txn_id from dual;
14601 --
14602 OPEN CSI_CUR;
14603 LOOP
14604 FETCH CSI_CUR BULK COLLECT INTO
14605 instance_id_mig,
14606 inventory_item_id_mig,
14607 organization_id_mig,
14608 subinv_mig,
14609 locator_id_mig,
14610 revision_mig,
14611 lot_mig,
14612 quantity_mig
14613 LIMIT MAX_BUFFER_SIZE;
14614 --
14615 FOR i in 1 .. instance_id_mig.count LOOP
14616 Begin
14617 l_error_count := 0;
14618 Begin
14619 select count(*)
14620 into l_error_count
14621 from CSI_TXN_ERRORS cii,
14622 MTL_MATERIAL_TRANSACTIONS mmt
14623 where cii.inv_material_transaction_id is not null
14624 and cii.inv_material_transaction_id = mmt.transaction_id
14625 and cii.processed_flag in ('E','R')
14626 and mmt.inventory_item_id = inventory_item_id_mig(i)
14627 and mmt.organization_id = organization_id_mig(i);
14628 End;
14629 --
14630 IF nvl(l_error_count,0) > 0 THEN
14631 v_err_msg := 'Unable to Reverse Synch Item ID '||to_char(inventory_item_id_mig(i))||
14632 ' Under Organization '||to_char(organization_id_mig(i));
14633 Out(v_err_msg);
14634 Raise Process_next;
14635 END IF;
14636 --
14637 v_qty := 0;
14638 Begin
14639 select NVL(sum(transaction_quantity),0)
14640 into v_qty
14641 from MTL_ONHAND_QUANTITIES
14642 where inventory_item_id = inventory_item_id_mig(i)
14643 and organization_id = organization_id_mig(i)
14644 and subinventory_code = subinv_mig(i)
14645 and nvl(locator_id,-999) = nvl(locator_id_mig(i),-999)
14646 and nvl(revision,'$#$') = nvl(revision_mig(i),'$#$')
14647 and nvl(lot_number,'$#$') = nvl(lot_mig(i),'$#$');
14648 End;
14649 --
14650 IF v_qty <> quantity_mig(i) THEN
14651 l_ins_flag := 'Y';
14652 UPDATE CSI_ITEM_INSTANCES
14653 set quantity = v_qty,
14654 active_end_date = decode(v_qty,0,sysdate,active_end_date),
14655 instance_status_id = decode(v_qty,0,1,instance_status_id),
14656 last_update_date = sysdate,
14657 last_updated_by = l_user_id
14658 where instance_id = instance_id_mig(i);
14659 --
14660 -- Tie this instance with the transaction
14661 INSERT INTO CSI_ITEM_INSTANCES_H
14662 (
14663 INSTANCE_HISTORY_ID
14664 ,TRANSACTION_ID
14665 ,INSTANCE_ID
14666 ,CREATION_DATE
14667 ,LAST_UPDATE_DATE
14668 ,CREATED_BY
14669 ,LAST_UPDATED_BY
14670 ,LAST_UPDATE_LOGIN
14671 ,OBJECT_VERSION_NUMBER
14672 )
14673 VALUES
14674 (
14675 CSI_ITEM_INSTANCES_H_S.nextval
14676 ,l_txn_id
14677 ,instance_id_mig(i)
14678 ,SYSDATE
14679 ,SYSDATE
14680 ,l_user_id
14681 ,l_user_id
14682 ,-1
14683 ,1
14684 );
14685 END IF;
14686 Exception
14687 when Process_next then
14688 null;
14689 End;
14690 END LOOP; -- for loop
14691 commit;
14692 EXIT WHEN CSI_CUR%NOTFOUND;
14693 END LOOP;
14694 CLOSE CSI_CUR;
14695 --
14696 IF l_ins_flag = 'Y' THEN
14697 INSERT INTO CSI_TRANSACTIONS(
14698 TRANSACTION_ID
14699 ,TRANSACTION_DATE
14700 ,SOURCE_TRANSACTION_DATE
14701 ,SOURCE_HEADER_REF
14702 ,TRANSACTION_TYPE_ID
14703 ,CREATED_BY
14704 ,CREATION_DATE
14705 ,LAST_UPDATED_BY
14706 ,LAST_UPDATE_DATE
14707 ,LAST_UPDATE_LOGIN
14708 ,OBJECT_VERSION_NUMBER
14709 )
14710 VALUES(
14711 l_txn_id -- TRANSACTION_ID
14712 ,SYSDATE -- TRANSACTION_DATE
14713 ,SYSDATE -- SOURCE_TRANSACTION_DATE
14714 ,'Reverse Synch' -- SOURCE_HEADER_REF
14715 ,v_txn_type_id -- TRANSACTION_TYPE_ID
14716 ,l_user_id
14717 ,sysdate
14718 ,l_user_id
14719 ,sysdate
14720 ,-1
14721 ,1
14722 );
14723 END IF;
14724 --
14725 commit;
14726 EXCEPTION
14727 when comp_error then
14728 null;
14729 END Reverse_IB_INV_Synch;
14733 CURSOR all_item_cur IS
14730 --
14731 PROCEDURE get_nl_trackable_report
14732 IS
14734 SELECT m_msi.concatenated_segments,
14735 m_msi.comms_nl_trackable_flag,
14736 c_msi.comms_nl_trackable_flag,
14737 m_mp.organization_code,
14738 c_mp.organization_code
14739 FROM mtl_system_items_b c_msi, -- Child Items
14740 mtl_parameters c_mp, -- Child Parameters
14741 mtl_system_items_kfv m_msi, -- Master Items
14742 mtl_parameters m_mp -- Master Parameters
14743 WHERE m_mp.organization_id = m_mp.master_organization_id
14744 AND m_msi.organization_id = m_mp.organization_id
14745 AND m_msi.organization_id = c_mp.master_organization_id
14746 AND c_mp.master_organization_id = m_mp.organization_id
14747 AND c_msi.organization_id = c_mp.organization_id
14748 AND m_msi.organization_id <> c_mp.organization_id
14749 AND c_msi.organization_id <> m_msi.organization_id
14750 AND c_msi.inventory_item_id = m_msi.inventory_item_id
14751 AND nvl(m_msi.comms_nl_trackable_flag,'N') <> nvl(c_msi.comms_nl_trackable_flag,'N')
14752 AND EXISTS (SELECT 1 from HR_ALL_ORGANIZATION_UNITS haou
14753 WHERE date_to IS NULL
14754 AND haou.organization_id =m_msi.organization_id)
14755 AND EXISTS (SELECT 1 from HR_ALL_ORGANIZATION_UNITS haou
14756 WHERE date_to IS NULL
14757 AND haou.organization_id =c_msi.organization_id)
14758 ORDER BY m_msi.inventory_item_id;
14759 --
14760 l_printheader boolean := TRUE;
14761 l_printfooter boolean := FALSE;
14762
14763 v_msg varchar2(4000);
14764 --
14765 Type V1TabType is VARRAY(10000) of VARCHAR2(1);
14766 l_master_flag_mig V1TabType;
14767 l_child_flag_mig V1TabType;
14768 Type V3TabType is VARRAY(10000) of VARCHAR2(3);
14769 l_master_org_mig V3TabType;
14770 l_child_org_mig V3TabType;
14771 Type V240TabType is VARRAY(10000) of MTL_SYSTEM_ITEMS_KFV.CONCATENATED_SEGMENTS%TYPE;
14772 l_item_segment_mig V240TabType;
14773 --
14774 MAX_BUFFER_SIZE NUMBER := 1000;
14775 BEGIN
14776 OPEN ALL_ITEM_CUR;
14777 LOOP
14778 FETCH ALL_ITEM_CUR BULK COLLECT INTO
14779 l_item_segment_mig,
14780 l_master_flag_mig,
14781 l_child_flag_mig,
14782 l_master_org_mig,
14783 l_child_org_mig
14784 LIMIT MAX_BUFFER_SIZE;
14785 --
14786 FOR i in 1..l_item_segment_mig.count LOOP
14787 IF l_printheader THEN
14788 l_printheader := FALSE;
14789 l_printfooter := TRUE;
14790 out('-----------------------------------------------------------------------');
14791 out('Inconsistent IB trackable setting within master and child organizations');
14792 out('-----------------------------------------------------------------------');
14793 END IF;
14794 l_global_warning_flag := 'Y';
14795 v_msg := 'Item : '||l_item_segment_mig(i)||
14796 ' is set as '||l_master_flag_mig(i)||
14797 ' in Master Org '||l_master_org_mig(i)||
14798 ' and '|| l_child_flag_mig(i)||
14799 ' in Child Org '||l_child_org_mig(i);
14800 out(v_msg);
14801 END LOOP;
14802 EXIT WHEN ALL_ITEM_CUR%NOTFOUND;
14803 END LOOP;
14804 --
14805 IF ALL_ITEM_CUR%ISOPEN THEN
14806 CLOSE ALL_ITEM_CUR;
14807 END IF;
14808 --
14809 IF l_printfooter THEN
14810 out('***************************END OF REPORT**********************************');
14811 END IF;
14812 END get_nl_trackable_report;
14813 --
14814 PROCEDURE MERGE_NON_SRL_INV_INSTANCE IS
14815 CURSOR c1 IS
14816 SELECT /*+ parallel(a) parallel(c) */
14817 a.instance_id,
14818 a.inventory_item_id,
14819 a.location_type_code,
14820 a.location_id,
14821 a.inv_organization_id,
14822 a.inv_subinventory_name,
14823 a.instance_usage_code,
14824 a.quantity,
14825 a.active_end_date,
14826 a.inventory_revision,
14827 a.inv_locator_id,
14828 a.lot_number,
14829 a.owner_party_id
14830 FROM csi_item_instances a,
14831 mtl_system_items_b c
14832 WHERE a.ROWID > (SELECT MIN(b.ROWID)
14833 FROM csi_item_instances b
14834 WHERE b.inventory_item_id = a.inventory_item_id
14835 AND b.location_type_code = a.location_type_code
14836 -- AND b.location_id = a.location_id
14837 AND b.serial_number is null
14838 AND b.inv_organization_id = a.inv_organization_id
14839 AND b.inv_subinventory_name = a.inv_subinventory_name
14840 AND b.instance_usage_code = a.instance_usage_code
14841 AND nvl(b.inventory_revision,'$#$') = nvl(a.inventory_revision,'$#$')
14842 AND nvl(b.inv_locator_id,-999) = nvl(a.inv_locator_id,-999)
14843 AND nvl(b.lot_number,'$#$')= nvl(a.lot_number,'$#$')
14844 AND b.owner_party_id = a.owner_party_id
14845 AND b.location_type_code = 'INVENTORY'
14846 AND b.instance_usage_code = 'IN_INVENTORY')
14847 -- AND b.active_end_date IS NULL)
14848 -- AND a.active_end_date IS NULL
14849 AND a.inventory_item_id = c.inventory_item_id
14853
14850 AND a.inv_organization_id = c.organization_id
14851 AND a.serial_number is null
14852 AND c.serial_number_control_code IN (1,6);
14854 CURSOR c2 IS
14855 SELECT a.instance_id,
14856 a.inventory_item_id,
14857 a.location_type_code,
14858 a.location_id,
14859 a.inv_organization_id,
14860 a.inv_subinventory_name,
14861 a.instance_usage_code,
14862 a.quantity,
14863 a.active_end_date,
14864 a.inventory_revision,
14865 a.inv_locator_id,
14866 a.lot_number,
14867 a.owner_party_id
14868 FROM csi_item_instances a,
14869 mtl_system_items_b c
14870 WHERE a.ROWID = (SELECT MIN(b.ROWID)
14871 FROM csi_item_instances b
14872 WHERE b.inventory_item_id = a.inventory_item_id
14873 AND b.location_type_code = a.location_type_code
14874 -- AND b.location_id = a.location_id
14875 AND b.serial_number is null
14876 AND b.inv_organization_id = a.inv_organization_id
14877 AND b.inv_subinventory_name = a.inv_subinventory_name
14878 AND b.instance_usage_code = a.instance_usage_code
14879 AND nvl(b.inventory_revision,'$#$') = nvl(a.inventory_revision,'$#$')
14880 AND nvl(b.inv_locator_id,-999) = nvl(a.inv_locator_id,-999)
14881 AND nvl(b.lot_number,'$#$')= nvl(a.lot_number,'$#$')
14882 AND b.owner_party_id = a.owner_party_id
14883 AND b.location_type_code = 'INVENTORY'
14884 AND b.instance_usage_code = 'IN_INVENTORY')
14885 -- AND b.active_end_date IS NULL)
14886 AND a.inventory_item_id = c.inventory_item_id
14887 AND a.inv_organization_id = c.organization_id
14888 AND a.serial_number is null
14889 AND c.serial_number_control_code IN (1,6);
14890
14891 p_instance_tbl csi_datastructures_pub.instance_tbl;
14892 l_count NUMBER;
14893 m NUMBER;
14894 temp_quantity NUMBER;
14895 l_status_id NUMBER;
14896 l_active_end_date DATE;
14897 BEGIN
14898 m := 1;
14899 FOR i IN c1 LOOP
14900 p_instance_tbl(m).inventory_item_id :=i.inventory_item_id;
14901 p_instance_tbl(m).location_type_code :=i.location_type_code;
14902 p_instance_tbl(m).inv_organization_id :=i.inv_organization_id;
14903 p_instance_tbl(m).inv_subinventory_name :=i.inv_subinventory_name;
14904 p_instance_tbl(m).instance_usage_code :=i.instance_usage_code;
14905 p_instance_tbl(m).location_id :=i.location_id;
14906 p_instance_tbl(m).quantity:=i.quantity;
14907 p_instance_tbl(m).inventory_revision:=i.inventory_revision;
14908 p_instance_tbl(m).inv_locator_id:=i.inv_locator_id;
14909 p_instance_tbl(m).lot_number:=i.lot_number;
14910 p_instance_tbl(m).attribute1:=i.owner_party_id;
14911
14912 DELETE FROM csi_item_instances_h
14913 WHERE instance_id=i.instance_id;
14914 --
14915 DELETE FROM csi_i_parties_h
14916 WHERE instance_party_id in (select instance_party_id from csi_i_parties
14917 WHERE instance_id=i.instance_id);
14918 --
14919 DELETE FROM csi_i_parties
14920 WHERE instance_id=i.instance_id;
14921 --
14922 DELETE FROM csi_item_instances
14923 WHERE instance_id=i.instance_id;
14924
14925 m := m+1;
14926
14927 END LOOP;
14928 l_count:=p_instance_tbl.COUNT;
14929 IF l_count > 0 THEN
14930 FOR j IN c2 LOOP
14931 temp_quantity:=0;
14932 FOR k in 1..l_count
14933 LOOP
14934 IF p_instance_tbl(k).inventory_item_id =j.inventory_item_id
14935 AND p_instance_tbl(k).location_type_code =j.location_type_code
14936 AND p_instance_tbl(k).inv_organization_id =j.inv_organization_id
14937 AND p_instance_tbl(k).inv_subinventory_name =j.inv_subinventory_name
14938 AND p_instance_tbl(k).instance_usage_code =j.instance_usage_code
14939 -- AND p_instance_tbl(k).location_id =j.location_id
14940 AND nvl(p_instance_tbl(k).inventory_revision,'$#$')=nvl(j.inventory_revision,'$#$')
14941 AND nvl(p_instance_tbl(k).inv_locator_id,-999)=nvl(j.inv_locator_id,-999)
14942 AND nvl(p_instance_tbl(k).lot_number,'$#$')=nvl(j.lot_number,'$#$')
14943 AND p_instance_tbl(k).attribute1 = j.owner_party_id
14944 -- AND j.active_end_date IS NULL
14945 THEN
14946 temp_quantity:=temp_quantity+p_instance_tbl(k).quantity;
14947 END IF;
14948 END LOOP;
14949
14950 IF j.quantity + temp_quantity = 0 THEN
14951 l_status_id := 1;
14952 l_active_end_date := sysdate;
14953 ELSE
14954 l_status_id := 510;
14955 l_active_end_date := null;
14956 END IF;
14957 --
14958 UPDATE csi_item_instances
14959 SET quantity=j.quantity+temp_quantity,
14960 instance_status_id = l_status_id,
14961 active_end_date = l_active_end_date
14962 WHERE instance_id=j.instance_id;
14963
14964 END LOOP;
14965 END IF;
14966 commit;
14967 END MERGE_NON_SRL_INV_INSTANCE;
14968
14969 PROCEDURE get_non_srl_rma_report(
14973 l_ownership_override varchar2(1);
14970 p_show_instances IN varchar2)
14971 IS
14972
14974
14975 CURSOR CSI_ERROR IS
14976 SELECT cii.transaction_error_id,
14977 cii.inv_material_transaction_id,
14978 cii.error_text,
14979 mmt.inventory_item_id,
14980 mmt.organization_id,
14981 mmt.transaction_quantity,
14982 mmt.trx_source_line_id,
14983 mmt.revision
14984 FROM csi_txn_errors cii,
14985 mtl_material_transactions mmt
14986 WHERE cii.processed_flag = 'E'
14987 AND cii.inv_material_transaction_id is not null
14988 AND mmt.transaction_id = cii.inv_material_transaction_id
14989 AND mmt.transaction_type_id = 15; -- RMA
14990
14991 --
14992 CURSOR tld_cur(p_rma_line_id in number) is
14993 SELECT ctld.sub_type_id, ctld.instance_id
14994 FROM csi_t_transaction_lines ctl,
14995 csi_t_txn_line_details ctld
14996 WHERE ctl.source_transaction_table = 'OE_ORDER_LINES_ALL'
14997 AND ctl.source_transaction_id = p_rma_line_id
14998 AND ctld.transaction_line_id = ctl.transaction_line_id
14999 AND ctld.source_transaction_flag = 'Y';
15000
15001 --
15002 CURSOR lot_cur(p_txn_id in number) IS
15003 SELECT lot_number,transaction_quantity
15004 FROM mtl_transaction_lot_numbers
15005 WHERE transaction_id = p_txn_id;
15006
15007 --
15008 CURSOR csi_cur(
15009 p_item_id in number,
15010 p_chg_owner in varchar2,
15011 p_customer_id in number,
15012 p_revision in varchar2,
15013 p_lot_number in varchar2)
15014 IS
15015 SELECT instance_id,
15016 instance_number,
15017 last_vld_organization_id,
15018 quantity,
15019 lot_number,
15020 inventory_revision ,
15021 owner_party_account_id account_id,
15022 owner_party_id party_id
15023 FROM csi_item_instances,
15024 hz_parties
15025 WHERE inventory_item_id = p_item_id
15026 AND owner_party_account_id = decode(p_chg_owner,'Y',owner_party_account_id,p_customer_id)
15027 AND instance_usage_code = 'OUT_OF_ENTERPRISE'
15028 AND nvl(lot_number,'$#$') = nvl(p_lot_number,'$#$')
15029 AND nvl(inventory_revision,'$#$') = nvl(p_revision,'$#$')
15030 AND party_id = owner_party_id
15031 ORDER BY party_name asc, quantity desc;
15032 --
15033 l_ib_flag varchar2(1) := 'N';
15034 l_customer_id number;
15035 l_message varchar2(32767);
15036 l_srl_ctl number;
15037 l_lot_ctl number;
15038 l_rma_num varchar2(50) ;
15039 l_rma_line_num varchar2(50) ;
15040 l_loop_count number := 0;
15041 l_inst_ref number;
15042 l_org_code varchar2(30);
15043
15044 --
15045 l_item varchar2(240);
15046 l_customer_name varchar2(240);
15047 l_instances_found boolean := FALSE;
15048 Process_next exception;
15049
15050 FUNCTION get_customer(
15051 p_account_id IN number,
15052 p_party_id IN number)
15053 RETURN varchar2 IS
15054 l_customer_name varchar2(240);
15055 BEGIN
15056
15057 IF p_account_id is not null THEN
15058 SELECT hp.party_name
15059 INTO l_customer_name
15060 FROM hz_cust_accounts hca,
15061 hz_parties hp
15062 WHERE hca.cust_account_id = p_account_id
15063 AND hp.party_id = hca.party_id;
15064 ELSE
15065 IF p_party_id is not null THEN
15066 SELECT party_name
15067 INTO l_customer_name
15068 FROM hz_parties
15069 WHERE party_id = p_party_id;
15070 END IF;
15071 END IF;
15072
15073 return l_customer_name;
15074
15075 EXCEPTION
15076 WHEN others THEN
15077 return l_customer_name;
15078 END get_customer;
15079
15080 FUNCTION fill(
15081 p_column in varchar2,
15082 p_width in number,
15083 p_side in varchar2 default 'R')
15084 RETURN varchar2 is
15085 l_column varchar2(2000);
15086 l_width number;
15087 BEGIN
15088 l_width := p_width - 1;
15089 l_column := nvl(p_column, ' ');
15090 IF p_side = 'L' THEN
15091 return(lpad(l_column, l_width, ' ')||',');
15092 ELSIF p_side = 'R' THEN
15093 return(rpad(l_column, l_width, ' ')||',');
15094 END IF;
15095 END fill;
15096
15097 BEGIN
15098
15099 out(' ');
15100 out('********************************************************************************');
15101 out(' Non serialized RMAs without installation details ');
15102 out('********************************************************************************');
15103
15104 l_message := fill('MTLTxnID', 10)||
15105 fill('RMA#', 10)||
15106 fill('Line', 6)||
15107 fill('Instance', 10)||
15108 fill('Owner', 35)||
15112
15109 fill('Quantity', 9);
15110
15111 out(l_message);
15113 --
15114 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
15115 csi_gen_utility_pvt.populate_install_param_rec;
15116 END IF;
15117 --
15118 l_ownership_override := csi_datastructures_pub.g_install_param_rec.ownership_override_at_txn;
15119 --
15120 FOR csi_rec IN csi_error
15121 LOOP
15122
15123 BEGIN
15124
15125 SELECT concatenated_segments,
15126 serial_number_control_code,
15127 lot_control_code
15128 INTO l_item, l_srl_ctl,l_lot_ctl
15129 FROM mtl_system_items_kfv mtl
15130 WHERE mtl.inventory_item_id = csi_rec.inventory_item_id
15131 AND mtl.organization_id = csi_rec.organization_id;
15132
15133 SELECT comms_nl_trackable_flag,
15134 organization_code
15135 INTO l_ib_flag,
15136 l_org_code
15137 FROM mtl_system_items_b msi ,
15138 mtl_parameters mp
15139 WHERE msi.inventory_item_id = csi_rec.inventory_item_id
15140 AND msi.organization_id = mp.master_organization_id
15141 AND mp.organization_id = csi_rec.organization_id;
15142 --
15143 IF nvl(l_ib_flag, 'N') <> 'Y' THEN
15144 RAISE Process_next;
15145 END IF;
15146 --
15147
15148 SELECT nvl(line.sold_to_org_id, hdr.sold_to_org_id),
15149 hdr.order_number,
15150 line.line_number||'.'||line.shipment_number
15151 INTO l_customer_id,
15152 l_rma_num,
15153 l_rma_line_num
15154 FROM oe_order_lines_all line,
15155 oe_order_headers_all hdr
15156 WHERE line.line_id = csi_rec.trx_source_line_id
15157 AND hdr.header_id = line.header_id;
15158
15159 l_customer_name := get_customer(l_customer_id, null);
15160
15161 --
15162 IF l_srl_ctl = 1 THEN
15163 l_loop_count := 0;
15164 l_inst_ref := 0;
15165 FOR tld_rec in tld_cur(csi_rec.trx_source_line_id)
15166 LOOP
15167 IF nvl(tld_rec.instance_id, fnd_api.g_miss_num) = fnd_api.g_miss_num THEN
15168 l_inst_ref := 1;
15169 --
15170 END IF;
15171 l_loop_count := l_loop_count + 1;
15172 END LOOP;
15173
15174 IF ((l_loop_count = 0) OR (l_inst_ref = 1)) THEN
15175
15176 l_customer_name := null;
15177
15178 --
15179 IF l_lot_ctl = 1 THEN
15180
15181 l_instances_found := FALSE;
15182
15183 IF p_show_instances = 'Y' THEN
15184 FOR ins in csi_cur (csi_rec.inventory_item_id,l_ownership_override,
15185 l_customer_id,csi_rec.revision,null)
15186 LOOP
15187
15188 l_instances_found := TRUE;
15189
15190 IF csi_cur%rowcount = 1 THEN
15191 out('---------,---------,-----,---------,'||
15192 '----------------------------------,--------,');
15193 END IF;
15194
15195 l_customer_name := get_customer(ins.account_id, ins.party_id);
15196
15197 l_message := fill(csi_rec.inv_material_transaction_id, 10)||
15198 fill(l_rma_num, 10)||
15199 fill(l_rma_line_num, 6)||
15200 fill(ins.instance_number, 10)||
15201 fill(l_customer_name, 35)||
15202 fill(ins.quantity, 9);
15203 out(l_message);
15204 END LOOP;
15205 END IF;
15206
15207 IF NOT(l_instances_found) THEN
15208 out('---------,---------,-----,---------,'||
15209 '----------------------------------,--------,');
15210 l_message := fill(csi_rec.inv_material_transaction_id, 10)||
15211 fill(l_rma_num, 10)||
15212 fill(l_rma_line_num, 6);
15213 out(l_message);
15214 END IF;
15215
15216 ELSE
15217
15218 l_instances_found := FALSE;
15219
15220 IF p_show_instances = 'Y' THEN
15221
15222 FOR lot IN lot_cur(csi_rec.inv_material_transaction_id)
15223 LOOP
15224
15225 FOR ins in CSI_CUR (csi_rec.inventory_item_id, l_ownership_override,l_customer_id
15226 ,csi_rec.revision,lot.lot_number)
15227 LOOP
15228
15229 l_instances_found := TRUE;
15230
15231 IF csi_cur%rowcount = 1 THEN
15232 out('---------,---------,-----,---------,'||
15233 '----------------------------------,--------,');
15234 END IF;
15235
15236 l_customer_name := get_customer(ins.account_id, ins.party_id);
15237
15238 l_message := fill(csi_rec.inv_material_transaction_id, 10)||
15239 fill(l_rma_num, 10)||
15240 fill(l_rma_line_num, 6)||
15241 fill(ins.instance_number, 10)||
15245 END LOOP;
15242 fill(l_customer_name, 35)||
15243 fill(ins.quantity, 9);
15244 out(l_message);
15246 END LOOP;
15247 END IF;
15248
15249 IF NOT(l_instances_found) THEN
15250 out('---------,---------,-----,---------,'||
15251 '----------------------------------,--------,');
15252 l_message := fill(csi_rec.inv_material_transaction_id, 10)||
15253 fill(l_rma_num, 10)||
15254 fill(l_rma_line_num, 6);
15255 out(l_message);
15256 END IF;
15257
15258 END IF;
15259 END IF;
15260 END IF;
15261 EXCEPTION
15262 WHEN Process_next then
15263 null;
15264 END;
15265
15266 END LOOP;
15267 commit;
15268 EXCEPTION
15269 WHEN others THEN
15270 out(' Error in report:'||sqlerrm);
15271 END get_non_srl_rma_report;
15272
15273 PROCEDURE check_org_uniqueness IS
15274 CURSOR uniq_cur IS
15275 SELECT a.instance_id,
15276 a.serial_number,
15277 a.inventory_item_id inst_item_id,
15278 d.inventory_item_id serial_item_id,
15279 d.current_status,
15280 d.current_organization_id,
15281 a.manually_created_flag,
15282 a.instance_usage_code,
15283 a.location_type_code,
15284 a.active_end_date
15285 FROM csi_item_instances a,
15286 mtl_serial_numbers d,
15287 mtl_parameters e
15288 WHERE a.serial_number is not null
15289 AND d.serial_number = a.serial_number
15290 AND d.inventory_item_id <> a.inventory_item_id
15291 AND e.organization_id = nvl(a.last_vld_organization_id, a.inv_master_organization_id)
15292 AND e.serial_number_type = 3;
15293 BEGIN
15294 csi_t_gen_utility_pvt.build_file_name(
15295 p_file_segment1 => 'csisrlun',
15296 p_file_segment2 => to_char(sysdate, 'hh24miss'));
15297 --
15298 FOR uniq_rec IN uniq_cur
15299 LOOP
15300
15301 l_global_sync_flag := 'Y';
15302
15303 IF uniq_cur%rowcount = 1 THEN
15304 out('Serial Uniqueness Report - Across Organization');
15305 out('------------------------------------------------------------------');
15306 END IF;
15307
15308 out(to_char(uniq_rec.instance_id)||
15309 ' '||uniq_rec.serial_number||
15310 ' '||to_char(uniq_rec.inst_item_id)||
15311 ' '||to_char(uniq_rec.serial_item_id)||
15312 ' '||to_char(uniq_rec.current_status)||
15313 ' '||to_char(uniq_rec.current_organization_id)||
15314 ' '||uniq_rec.manually_created_flag||
15315 ' '||uniq_rec.instance_usage_code||
15316 ' '||uniq_rec.location_type_code);
15317
15318 END LOOP;
15319 END check_org_uniqueness;
15320
15321
15322 PROCEDURE CREATE_NSRL_RMA_TLD IS
15323
15324 l_inventory_item_id number;
15325 l_organization_id number;
15326 l_serial_code number;
15327 l_owner_pty_id number;
15328 l_owner_acct_id number;
15329 l_order_qty number;
15330 l_order_uom varchar2(9);
15331 l_txn_line_detail_id number;
15332 l_transaction_line_id number;
15333 l_instance_count number;
15334 l_tld_count number;
15335 l_sub_type_id number;
15336 l_change_owner varchar2(1);
15337 l_internal_party_id number;
15338
15339 l_instance_id number;
15340 l_instance_qty number;
15341 l_rma_line_id number;
15342 l_primary_qty number;
15343 l_processed_flag varchar2(1) := 'N';
15344
15345 l_line_rec csi_t_datastructures_grp.txn_line_rec;
15346 l_line_dtl_tbl csi_t_datastructures_grp.txn_line_detail_tbl;
15347 l_pty_dtl_tbl csi_t_datastructures_grp.txn_party_detail_tbl;
15348 l_pty_acct_tbl csi_t_datastructures_grp.txn_pty_acct_detail_tbl;
15349 l_ii_rltns_tbl csi_t_datastructures_grp.txn_ii_rltns_tbl;
15350 l_oa_tbl csi_t_datastructures_grp.txn_org_assgn_tbl;
15351 l_ea_tbl csi_t_datastructures_grp.txn_ext_attrib_vals_tbl;
15352 l_sys_tbl csi_t_datastructures_grp.txn_systems_tbl;
15353
15354 l_return_status varchar2(1);
15355 l_msg_count number;
15356 l_msg_data varchar2(2000);
15357
15358 l_mtl_txn_date date;
15359 l_mtl_cre_date date;
15360
15361 skip_error exception;
15362 i number;
15363 j number;
15364
15365 --added for bug 5248037--
15366 MAX_BUFFER_SIZE number := 1000;
15367 l_rec_change BOOLEAN;
15368 l_rma_txn_tbl csi_diagnostics_pkg.rma_txn_tbl;
15369 l_instance_tbl csi_diagnostics_pkg.instance_tbl;
15370
15371 --Modified rma_cur and inst_cur for 5248037--
15372 CURSOR rma_cur
15373 IS
15374 SELECT cte.transaction_error_id transaction_error_id,
15375 cte.inv_material_transaction_id inv_material_transaction_id,
15376 mmt.inventory_item_id item_id,
15380 abs(mmt.primary_quantity) mtl_txn_qty,
15377 mmt.organization_id organization_id,
15378 mmt.trx_source_line_id mtl_src_line_id,
15379 mmt.creation_date mtl_creation_date,
15381 msi.serial_number_control_code serial_code,
15382 oel.sold_to_org_id owner_acct,
15383 oel.ordered_quantity ordered_qty,
15384 oel.order_quantity_uom ordered_uom,
15385 hca.party_id party_id
15386 FROM csi_txn_errors cte,mtl_material_transactions mmt,mtl_system_items msi,oe_order_lines_all oel,hz_cust_accounts hca
15387 WHERE cte.processed_flag in ('E', 'R')
15388 AND cte.transaction_type_id = 53
15389 AND cte.inv_material_transaction_id = mmt.transaction_id
15390 AND msi.inventory_item_id = mmt.inventory_item_id
15391 AND msi.organization_id = mmt.organization_id
15392 AND msi.serial_number_control_code = 1
15393 AND oel.line_id = mmt.trx_source_line_id
15394 AND hca.cust_account_id = oel.sold_to_org_id
15395 ORDER BY item_id, party_id, owner_acct,mtl_txn_qty;
15396
15397 CURSOR inst_cur (p_item_id NUMBER,
15398 p_owner_party_id NUMBER,
15399 p_owner_acct_id NUMBER)
15400 IS
15401 SELECT cii.instance_id instance_id,
15402 cii.quantity quantity,
15403 cii.active_start_date active_start_date
15404 FROM csi_item_instances cii
15405 WHERE cii.inventory_item_id = p_item_id
15406 AND cii.accounting_class_code = 'CUST_PROD'
15407 AND cii.instance_usage_code = 'OUT_OF_ENTERPRISE'
15408 AND cii.owner_party_id = p_owner_party_id
15409 AND cii.owner_party_account_id = p_owner_acct_id
15410 AND sysdate between nvl(cii.active_start_date, sysdate-1) and nvl(cii.active_end_date, sysdate+1)
15411 ORDER BY quantity;
15412
15413 CURSOR tld_cur(p_transaction_line_id IN number)
15414 IS
15415 SELECT txn_line_detail_id ,
15416 instance_id,
15417 quantity
15418 FROM csi_t_txn_line_details
15419 WHERE transaction_line_id = p_transaction_line_id
15420 AND source_transaction_flag = 'Y';
15421
15422
15423 PROCEDURE debug(p_message IN varchar2)
15424 IS
15425 BEGIN
15426 csi_t_gen_utility_pvt.add(p_message);
15427 END debug;
15428
15429 BEGIN
15430
15431 SELECT sub_type_id ,
15432 src_change_owner
15433 INTO l_sub_type_id,
15434 l_change_owner
15435 FROM csi_txn_sub_types
15436 WHERE transaction_type_id = 53
15437 AND default_flag = 'Y';
15438
15439 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
15440 csi_gen_utility_pvt.populate_install_param_rec;
15441 END IF;
15442 l_internal_party_id := csi_datastructures_pub.g_install_param_rec.internal_party_id;
15443
15444 --Changed to use the BULK COLLECT for cursor for bug5248037--
15445 OPEN rma_cur;
15446 LOOP
15447 FETCH rma_cur BULK COLLECT
15448 INTO l_rma_txn_tbl
15449 LIMIT MAX_BUFFER_SIZE;
15450
15451 l_rec_change := TRUE;
15452
15453 FOR i IN 1..l_rma_txn_tbl.COUNT
15454 LOOP
15455 l_processed_flag := 'N';
15456
15457 IF l_rec_change THEN
15458 OPEN inst_cur(l_rma_txn_tbl(i).item_id,
15459 l_rma_txn_tbl(i).party_id,
15460 l_rma_txn_tbl(i).owner_acct);
15461 LOOP
15462 l_instance_tbl.delete;
15463 FETCH inst_cur BULK COLLECT
15464 INTO l_instance_tbl
15465 LIMIT MAX_BUFFER_SIZE;
15466 EXIT WHEN inst_cur%NOTFOUND;
15467 END LOOP;
15468
15469 IF inst_cur%ISOPEN THEN
15470 CLOSE inst_cur;
15471 END IF;
15472 END IF;
15473
15474 IF l_instance_tbl.count > 0 THEN
15475 FOR j IN l_instance_tbl.FIRST..l_instance_tbl.LAST
15476 LOOP
15477 IF l_instance_tbl.EXISTS(j) THEN
15478 IF l_instance_tbl(j).quantity >= l_rma_txn_tbl(i).mtl_txn_qty
15479 AND l_instance_tbl(j).active_start_date <= l_rma_txn_tbl(i).mtl_creation_date THEN
15480
15481 -- check for existance of txn details
15482 l_transaction_line_id := null;
15483 BEGIN
15484 SELECT transaction_line_id
15485 INTO l_transaction_line_id
15486 FROM csi_t_transaction_lines
15487 WHERE source_transaction_table = 'OE_ORDER_LINES_ALL'
15488 AND source_transaction_id = l_rma_txn_tbl(i).mtl_src_line_id
15489 AND source_transaction_type_id = 53;
15490 EXCEPTION
15491 WHEN no_data_found THEN
15492 l_transaction_line_id := null;
15493 END;
15494
15495 -- if not found then
15496
15497 IF l_transaction_line_id is null THEN
15498 -- create transaction details
15499 l_line_rec.transaction_line_id := fnd_api.g_miss_num;
15500 l_line_rec.source_transaction_type_id := 53;
15501 l_line_rec.source_transaction_id := l_rma_txn_tbl(i).mtl_src_line_id;
15502 l_line_rec.source_transaction_table := 'OE_ORDER_LINES_ALL';
15503 l_line_rec.inv_material_txn_flag := 'Y';
15504 l_line_rec.object_version_number := 1.0;
15505
15506 -- transaction line details table
15510 l_line_dtl_tbl(1).instance_exists_flag := 'Y';
15507 l_line_dtl_tbl(1).transaction_line_id := fnd_api.g_miss_num;
15508 l_line_dtl_tbl(1).txn_line_detail_id := fnd_api.g_miss_num;
15509 l_line_dtl_tbl(1).sub_type_id := l_sub_type_id;
15511 l_line_dtl_tbl(1).instance_id := l_instance_tbl(j).instance_id;
15512 l_line_dtl_tbl(1).source_transaction_flag := 'Y';
15513 l_line_dtl_tbl(1).quantity := l_rma_txn_tbl(i).ordered_qty;
15514 l_line_dtl_tbl(1).inventory_item_id := l_rma_txn_tbl(i).item_id;
15515 l_line_dtl_tbl(1).inv_organization_id := l_rma_txn_tbl(i).organization_id;
15516 l_line_dtl_tbl(1).unit_of_measure := l_rma_txn_tbl(i).ordered_uom;
15517 l_line_dtl_tbl(1).mfg_serial_number_flag := 'N';
15518 l_line_dtl_tbl(1).active_start_date := sysdate;
15519 l_line_dtl_tbl(1).preserve_detail_flag := 'Y';
15520 l_line_dtl_tbl(1).object_version_number := 1.0;
15521
15522 IF l_change_owner = 'Y' THEN
15523 l_pty_dtl_tbl(1).txn_party_detail_id := fnd_api.g_miss_num;
15524 l_pty_dtl_tbl(1).txn_line_detail_id := fnd_api.g_miss_num;
15525 l_pty_dtl_tbl(1).party_source_table := 'HZ_PARTIES';
15526 l_pty_dtl_tbl(1).party_source_id := l_internal_party_id;
15527 l_pty_dtl_tbl(1).relationship_type_code := 'OWNER';
15528 l_pty_dtl_tbl(1).contact_flag := 'N';
15529 l_pty_dtl_tbl(1).active_start_date := sysdate;
15530 l_pty_dtl_tbl(1).preserve_detail_flag := 'Y';
15531 l_pty_dtl_tbl(1).txn_line_details_index := 1;
15532
15533 BEGIN
15534 SELECT instance_party_id
15535 INTO l_pty_dtl_tbl(1).instance_party_id
15536 FROM csi_i_parties
15537 WHERE instance_id = l_instance_tbl(j).instance_id
15538 AND relationship_type_code = 'OWNER';
15539 EXCEPTION
15540 WHEN no_data_found THEN
15541 l_pty_dtl_tbl(1).instance_party_id := fnd_api.g_miss_num;
15542 END;
15543 END IF;
15544
15545 -- api call
15546 csi_t_txn_details_grp.create_transaction_dtls(
15547 p_api_version => 1.0,
15548 p_commit => fnd_api.g_false,
15549 p_init_msg_list => fnd_api.g_true,
15550 p_validation_level => fnd_api.g_valid_level_full,
15551 px_txn_line_rec => l_line_rec,
15552 px_txn_line_detail_tbl => l_line_dtl_tbl,
15553 px_txn_party_detail_tbl => l_pty_dtl_tbl,
15554 px_txn_pty_acct_detail_tbl => l_pty_acct_tbl,
15555 px_txn_ii_rltns_tbl => l_ii_rltns_tbl,
15556 px_txn_org_assgn_tbl => l_oa_tbl,
15557 px_txn_ext_attrib_vals_tbl => l_ea_tbl,
15558 px_txn_systems_tbl => l_sys_tbl,
15559 x_return_status => l_return_status,
15560 x_msg_count => l_msg_count,
15561 x_msg_data => l_msg_data);
15562
15563 IF l_return_status <> fnd_api.g_ret_sts_success THEN
15564 RAISE fnd_api.g_exc_error;
15565 END IF;
15566
15567 l_processed_flag := 'Y';
15568 -- else check if count of source line detail
15569
15570 ELSE
15571 FOR tld_rec IN tld_cur(l_transaction_line_id)
15572 LOOP
15573 l_tld_count := tld_cur%rowcount;
15574 l_txn_line_detail_id := tld_rec.txn_line_detail_id;
15575 IF l_tld_count > 1 THEN
15576 exit;
15577 END IF;
15578 END LOOP;
15579
15580 -- if only one then
15581 IF l_tld_count = 1 THEN
15582 UPDATE csi_t_txn_line_details
15583 SET instance_id = l_instance_tbl(j).instance_id,
15584 instance_exists_flag = 'Y'
15585 WHERE txn_line_detail_id = l_txn_line_detail_id;
15586 l_processed_flag := 'Y';
15587 END IF;
15588
15589 END IF;
15590
15591 IF l_processed_flag = 'Y' THEN
15592 UPDATE csi_txn_errors
15593 SET processed_flag = 'R'
15594 WHERE transaction_error_id = l_rma_txn_tbl(i).Txn_error_id;
15595
15596 l_instance_tbl(j).quantity:=l_instance_tbl(j).quantity-l_rma_txn_tbl(i).ordered_qty;
15597
15598 --If an instance is matched for the error'd record then that instance is removed from
15599 --table
15600 IF l_instance_tbl(j).quantity = 0 THEN
15601 l_instance_tbl.DELETE(j);
15602 END IF;
15603 EXIT;
15604 END IF;
15605 END IF;
15606 END IF; --for record existing check
15607 END LOOP; -- instance for loop
15608 END IF; --instance tbl cnt greater than zero
15609
15610 --This IF loop avoids the re-query if the next error record is for the same item,party and owner--
15614 OR (l_rma_Txn_tbl(i).owner_acct <> l_rma_txn_tbl(i+1).owner_acct) THEN
15611 IF i < l_rma_txn_tbl.count THEN
15612 IF (l_rma_Txn_tbl(i).item_id <> l_rma_txn_tbl(i+1).item_id)
15613 OR (l_rma_Txn_tbl(i).party_id <> l_rma_txn_tbl(i+1).party_id)
15615 l_rec_change := TRUE;
15616 ELSE
15617 l_rec_change := FALSE;
15618 END IF;
15619 END IF;
15620
15621 END LOOP;
15622
15623 COMMIT;
15624
15625 EXIT WHEN rma_cur%NOTFOUND;
15626
15627 END LOOP; --rma tbl
15628
15629 IF rma_cur%ISOPEN THEN
15630 CLOSE rma_cur;
15631 END IF;
15632
15633 EXCEPTION
15634 WHEN fnd_api.g_exc_error THEN
15635 null;
15636 WHEN others THEN
15637 null;
15638 log(' Other Error:'||substr(sqlerrm, 1,250));
15639 END create_nsrl_rma_tld;
15640
15641 PROCEDURE fix_txn_error_rec
15642 IS
15643
15644 CURSOR err_cur IS
15645 SELECT transaction_error_id,
15646 inv_material_transaction_id
15647 FROM csi_txn_errors
15648 WHERE processed_flag in ('E', 'R')
15649 AND inv_material_transaction_id is not null
15650 AND (source_type is null OR transaction_type_id is null);
15651
15652 l_release varchar2(30);
15653 l_mtl_txn_id number;
15654 l_mtl_type_id number;
15655 l_mtl_action_id number;
15656 l_mtl_source_type_id number;
15657 l_mtl_type_class number;
15658 l_mtl_txn_qty number;
15659
15660 l_source_type varchar2(30);
15661 l_csi_txn_type_id number;
15662 l_txn_processed varchar2(1) := 'N';
15663
15664
15665 BEGIN
15666
15667 SELECT fnd_Profile.value('csi_upgrading_from_release')
15668 INTO l_release
15669 FROM sys.dual;
15670
15671 FOR err_rec IN err_cur
15672 LOOP
15673
15674 BEGIN
15675 SELECT 'Y' INTO l_txn_processed
15676 FROM sys.dual
15677 WHERE exists (
15678 SELECT 'X' FROM csi_transactions
15679 WHERE inv_material_transaction_id = err_rec.inv_material_transaction_id);
15680
15681 UPDATE csi_txn_errors
15682 SET processed_flag = 'D'
15683 WHERE transaction_error_id = err_rec.transaction_error_id;
15684
15685 EXCEPTION
15686 WHEN no_data_found THEN
15687
15688 BEGIN
15689 SELECT mmt.transaction_id,
15690 mmt.transaction_type_id,
15691 mmt.transaction_action_id,
15692 mmt.transaction_source_type_id,
15693 mtt.type_class,
15694 mmt.transaction_quantity
15695 INTO l_mtl_txn_id,
15696 l_mtl_type_id,
15697 l_mtl_action_id,
15698 l_mtl_source_type_id,
15699 l_mtl_type_class,
15700 l_mtl_txn_qty
15701 FROM mtl_material_transactions mmt,
15702 mtl_transaction_types mtt
15703 WHERE mmt.transaction_id = err_rec.inv_material_transaction_id
15704 AND mtt.transaction_type_id = mmt.transaction_type_id;
15705
15706 get_source_type(
15707 p_mtl_txn_id => l_mtl_txn_id,
15708 p_mtl_type_id => l_mtl_type_id,
15709 p_mtl_action_id => l_mtl_action_id,
15710 p_mtl_source_type_id => l_mtl_source_type_id,
15711 p_mtl_type_class => l_mtl_type_class,
15712 p_mtl_txn_qty => l_mtl_txn_qty,
15713 p_release => l_release,
15714 x_source_type => l_source_type,
15715 x_csi_txn_type_id => l_csi_txn_type_id);
15716
15717 UPDATE csi_txn_errors
15718 SET source_type = l_source_type,
15719 transaction_type_id = l_csi_txn_type_id
15720 WHERE transaction_error_id = err_rec.transaction_error_id;
15721
15722 EXCEPTION
15723 WHEN no_data_found THEN
15724 null;
15725 END;
15726 END ;
15727 END LOOP;
15728 commit;
15729 END fix_txn_error_rec;
15730
15731 PROCEDURE fix_wip_usage IS
15732
15733 TYPE NumTabType is varray(10000) of number;
15734 l_instance_id_tab NumTabType;
15735 MAX_BUFFER_SIZE number := 1000;
15736
15737 CURSOR wip_cur IS
15738 SELECT cii.instance_id
15739 FROM csi_item_instances cii
15740 WHERE cii.location_type_code = 'WIP'
15741 AND cii.instance_usage_code <> 'IN_RELATIONSHIP'
15742 AND exists (
15743 SELECT 'X' FROM mtl_system_items msi
15744 WHERE msi.inventory_item_id = cii.inventory_item_id
15745 AND msi.organization_id = cii.last_vld_organization_id
15746 AND msi.serial_number_control_code in (1, 6));
15747
15748 BEGIN
15749
15750 OPEN wip_cur;
15751 LOOP
15752
15753 FETCH wip_cur BULK COLLECT
15754 INTO l_instance_id_tab
15755 LIMIT MAX_BUFFER_SIZE;
15756
15757 FOR ind IN 1 .. l_instance_id_tab.COUNT
15758 LOOP
15759 UPDATE csi_item_instances
15760 SET instance_usage_code = 'IN_WIP'
15761 WHERE instance_id = l_instance_id_tab(ind);
15762 END LOOP;
15766
15763 commit;
15764
15765 EXIT when wip_cur%NOTFOUND;
15767 END LOOP;
15768
15769 IF wip_cur%ISOPEN THEN
15770 CLOSE wip_cur;
15771 END IF;
15772
15773 END fix_wip_usage;
15774
15775 PROCEDURE delete_dup_nsrl_wip_instances IS
15776
15777 l_keep_instance_id number;
15778 TYPE NumTabType is varray(10000) of number;
15779 TYPE VarTabType is varray(10000) of varchar2(100);
15780
15781 l_item_id_tab NumTabType;
15782 l_revision_tab VarTabType;
15783 l_lot_number_tab VarTabType;
15784 l_wip_job_id_tab NumTabType;
15785
15786 MAX_BUFFER_SIZE number := 1000;
15787
15788 CURSOR dup_wip_cur IS
15789 SELECT cii.inventory_item_id,
15790 cii.inventory_revision,
15791 cii.lot_number,
15792 cii.wip_job_id
15793 FROM csi_item_instances cii,
15794 mtl_system_items msi
15795 WHERE cii.location_type_code = 'WIP'
15796 AND cii.instance_usage_code = 'IN_WIP'
15797 AND msi.inventory_item_id = cii.inventory_item_id
15798 AND msi.organization_id = cii.last_vld_organization_id
15799 AND msi.serial_number_control_code in (1, 6)
15800 GROUP BY cii.inventory_item_id,
15801 cii.inventory_revision,
15802 cii.lot_number,
15803 cii.wip_job_id
15804 HAVING count(*) > 1;
15805
15806 CURSOR dup_inst_cur(
15807 p_item_id IN number,
15808 p_revision IN varchar,
15809 p_lot_number IN varchar2,
15810 p_wip_job_id IN number)
15811 IS
15812 SELECT cii.instance_id,
15813 cii.quantity
15814 FROM csi_item_instances cii
15815 WHERE cii.location_type_code = 'WIP'
15816 AND cii.instance_usage_code = 'IN_WIP'
15817 AND cii.inventory_item_id = p_item_id
15818 AND nvl(cii.inventory_revision, '#*#*#') = nvl(p_revision, '#*#*#')
15819 AND nvl(cii.lot_number,'#*#*#') = nvl(p_lot_number, '#*#*#')
15820 AND cii.wip_job_id = p_wip_job_id;
15821
15822 CURSOR ip_cur(p_instance_id IN number) IS
15823 SELECT instance_party_id
15824 FROM csi_i_parties
15825 WHERE instance_id = p_instance_id;
15826
15827 BEGIN
15828
15829 OPEN dup_wip_cur;
15830 LOOP
15831
15832 FETCH dup_wip_cur BULK COLLECT
15833 INTO l_item_id_tab,
15834 l_revision_tab,
15835 l_lot_number_tab,
15836 l_wip_job_id_tab
15837 LIMIT MAX_BUFFER_SIZE;
15838
15839 FOR ind IN 1 .. l_item_id_tab.COUNT
15840 LOOP
15841
15842 l_keep_instance_id := null;
15843
15844 FOR dup_inst_rec IN dup_inst_cur(
15845 p_item_id => l_item_id_tab(ind),
15846 p_revision => l_revision_tab(ind),
15847 p_lot_number => l_lot_number_tab(ind),
15848 p_wip_job_id => l_wip_job_id_tab(ind))
15849 LOOP
15850
15851 IF dup_inst_cur%rowcount = 1 THEN
15852 l_keep_instance_id := dup_inst_rec.instance_id;
15853 ELSE
15854
15855 -- preserve one instance for the wip job component and cumulate quantity
15856 UPDATE csi_item_instances
15857 SET quantity = quantity + dup_inst_rec.quantity
15858 WHERE instance_id = l_keep_instance_id;
15859
15860 -- delete the rest of the instances (party and accounts)
15861 FOR ip_rec IN ip_cur(dup_inst_rec.instance_id)
15862 LOOP
15863
15864 -- there may not be an account, but just in case
15865 DELETE FROM csi_ip_accounts
15866 WHERE instance_party_id = ip_rec.instance_party_id;
15867
15868 DELETE FROM csi_i_parties_h
15869 WHERE instance_party_id = ip_rec.instance_party_id;
15870
15871 END LOOP;
15872
15873 DELETE FROM csi_i_parties
15874 WHERE instance_id = dup_inst_rec.instance_id;
15875
15876 DELETE FROM csi_item_instances
15877 WHERE instance_id = dup_inst_rec.instance_id;
15878
15879 DELETE FROM csi_item_instances_h
15880 WHERE instance_id = dup_inst_rec.instance_id;
15881
15882 END IF;
15883 END LOOP;
15884
15885 END LOOP;
15886
15887 commit;
15888
15889 EXIT when dup_wip_cur%NOTFOUND;
15890
15891 END LOOP;
15892
15893 IF dup_wip_cur%ISOPEN THEN
15894 CLOSE dup_wip_cur;
15895 END IF;
15896
15897 END delete_dup_nsrl_wip_instances;
15898 --
15899 PROCEDURE Delete_Dup_Org_Assignments IS
15900 cursor csi_dup_cur is
15901 select instance_id,relationship_type_code
15902 from csi_i_org_assignments
15903 group by instance_id,relationship_type_code
15904 having count(*) > 1;
15905 --
15906 cursor csi_org_cur(p_instance_id in number,p_rel_type_code in varchar2) is
15907 select *
15908 from csi_i_org_assignments
15909 where instance_id = p_instance_id
15910 and relationship_type_code = p_rel_type_code
15911 order by creation_date asc;
15912 --
15913 cursor csi_org_hist_cur(p_instance_id in number,p_rel_type_code in varchar2) is
15917 and coa.relationship_type_code = p_rel_type_code
15914 select coah.* from csi_i_org_assignments_h coah,
15915 csi_i_org_assignments coa
15916 where coa.instance_id = p_instance_id
15918 and coah.instance_ou_id = coa.instance_ou_id
15919 order by coah.transaction_id,coah.last_update_date asc;
15920 --
15921 l_hist_rec csi_org_hist_cur%ROWTYPE;
15922 v_min_ou_id NUMBER;
15923 v_min_org_id NUMBER;
15924 v_max_ou_id NUMBER;
15925 v_max_org_id NUMBER;
15926 l_row_count NUMBER;
15927 l_del_count NUMBER := 0;
15928 TYPE NumList IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
15929 l_del_tbl NumList;
15930 TYPE ORG_HIST_TBL IS TABLE OF CSI_I_ORG_ASSIGNMENTS_H%ROWTYPE INDEX BY BINARY_INTEGER;
15931 l_org_hist_tbl ORG_HIST_TBL;
15932 l_hist_count NUMBER;
15933 v_ret_ou_id NUMBER;
15934 l_prev_rec csi_org_hist_cur%ROWTYPE;
15935 l_ou_hist_count NUMBER;
15936 l_del_ou_hist_tbl NumList;
15937 l_flag VARCHAR2(1);
15938 --
15939 Process_next EXCEPTION;
15940 BEGIN
15941 FOR dup_rec in csi_dup_cur LOOP
15942 Begin
15943 -- Get the latest org assignment. This org_id will be retained
15944 v_max_ou_id := -9999;
15945 Begin
15946 select instance_ou_id
15947 into v_max_ou_id
15948 from csi_i_org_assignments
15949 where instance_id = dup_rec.instance_id
15950 and relationship_type_code = dup_rec.relationship_type_code
15951 and creation_date = ( select max(creation_date)
15952 from csi_i_org_assignments
15953 where instance_id = dup_rec.instance_id
15954 and relationship_type_code = dup_rec.relationship_type_code
15955 and nvl(active_end_date,(sysdate+1)) > sysdate)
15956 and nvl(active_end_date,(sysdate+1)) > sysdate
15957 and rownum < 2;
15958 Exception
15959 when no_data_found then
15960 select max(instance_ou_id)
15961 into v_max_ou_id
15962 from csi_i_org_assignments
15963 where instance_id = dup_rec.instance_id
15964 and relationship_type_code = dup_rec.relationship_type_code;
15965 End;
15966 --
15967 l_row_count := 0;
15968 l_del_count := 0;
15969 l_del_tbl.DELETE;
15970 l_hist_count := 0;
15971 l_org_hist_tbl.DELETE;
15972 v_ret_ou_id := -99999;
15973 --
15974 FOR org_rec in csi_org_cur(dup_rec.instance_id,dup_rec.relationship_type_code) LOOP
15975 l_row_count := l_row_count + 1;
15976 IF l_row_count = 1 THEN
15977 v_ret_ou_id := org_rec.instance_ou_id;
15978 UPDATE CSI_I_ORG_ASSIGNMENTS
15979 set (operating_unit_id,active_end_date,context,attribute1,attribute2,attribute3,
15980 attribute4,attribute5,attribute6,attribute7,attribute8,attribute9,attribute10,
15981 attribute11,attribute12,attribute13,attribute14,attribute15,last_update_date) =
15982 (select operating_unit_id,active_end_date,context,attribute1,attribute2,attribute3,
15983 attribute4,attribute5,attribute6,attribute7,attribute8,attribute9,attribute10,
15984 attribute11,attribute12,attribute13,attribute14,attribute15,sysdate
15985 from csi_i_org_assignments
15986 where instance_ou_id = v_max_ou_id)
15987 where instance_ou_id = org_rec.instance_ou_id;
15988 ELSE
15989 l_del_count := l_del_count + 1;
15990 l_del_tbl(l_del_count) := org_rec.instance_ou_id;
15991 END IF;
15992 END LOOP; -- end of instance_id, relationship type combination
15993 --
15994 -- For this Instance - Relationship type, get all the history records ordered by txn_id
15995 open csi_org_hist_cur(dup_rec.instance_id,dup_rec.relationship_type_code);
15996 LOOP
15997 fetch csi_org_hist_cur into l_hist_rec;
15998 IF csi_org_hist_cur%FOUND THEN
15999 l_hist_count := l_hist_count + 1;
16000 l_org_hist_tbl(l_hist_count) := l_hist_rec;
16001 END IF;
16002 EXIT WHEN csi_org_hist_cur%NOTFOUND;
16003 END LOOP;
16004 close csi_org_hist_cur;
16005 --
16006 -- Merge the history belonging to the same transaction
16007 l_flag := 'N';
16008 l_del_ou_hist_tbl.DELETE;
16009 --
16010 IF l_org_hist_tbl.count > 0 THEN
16011 FOR j IN l_org_hist_tbl.FIRST .. l_org_hist_tbl.LAST LOOP
16012 IF j = 1 THEN
16013 l_prev_rec := l_org_hist_tbl(j);
16014 ELSE
16015 IF l_org_hist_tbl(j).transaction_id = l_prev_rec.transaction_id THEN
16016 l_flag := 'Y';
16017 l_ou_hist_count := l_del_ou_hist_tbl.count + 1;
16018 l_del_ou_hist_tbl(l_ou_hist_count) := l_org_hist_tbl(j).instance_ou_history_id;
16019 IF nvl(l_org_hist_tbl(j).old_operating_unit_id,-999) <>
16020 nvl(l_org_hist_tbl(j).new_operating_unit_id,-999) THEN
16021 l_prev_rec.old_operating_unit_id := l_org_hist_tbl(j).old_operating_unit_id;
16022 l_prev_rec.new_operating_unit_id := l_org_hist_tbl(j).new_operating_unit_id;
16023 END IF;
16024 --
16025 IF nvl(l_org_hist_tbl(j).old_relationship_type_code,'$#$') <>
16026 nvl(l_org_hist_tbl(j).new_relationship_type_code,'$#$') THEN
16027 l_prev_rec.old_relationship_type_code := l_org_hist_tbl(j).old_relationship_type_code;
16028 l_prev_rec.new_relationship_type_code := l_org_hist_tbl(j).new_relationship_type_code;
16029 END IF;
16030 --
16031 IF nvl(l_org_hist_tbl(j).old_active_start_date,fnd_api.g_miss_date) <>
16035 END IF;
16032 nvl(l_org_hist_tbl(j).new_active_start_date,fnd_api.g_miss_date) THEN
16033 l_prev_rec.old_active_start_date := l_org_hist_tbl(j).old_active_start_date;
16034 l_prev_rec.new_active_start_date := l_org_hist_tbl(j).new_active_start_date;
16036 --
16037 IF nvl(l_org_hist_tbl(j).old_active_end_date,fnd_api.g_miss_date) <>
16038 nvl(l_org_hist_tbl(j).new_active_end_date,fnd_api.g_miss_date) THEN
16039 l_prev_rec.old_active_end_date := l_org_hist_tbl(j).old_active_end_date;
16040 l_prev_rec.new_active_end_date := l_org_hist_tbl(j).new_active_end_date;
16041 END IF;
16042 --
16043 IF nvl(l_org_hist_tbl(j).old_context,'$#$') <>
16044 nvl(l_org_hist_tbl(j).new_context,'$#$') THEN
16045 l_prev_rec.old_context := l_org_hist_tbl(j).old_context;
16046 l_prev_rec.new_context := l_org_hist_tbl(j).new_context;
16047 END IF;
16048 --
16049 IF nvl(l_org_hist_tbl(j).old_attribute1,'$#$') <>
16050 nvl(l_org_hist_tbl(j).new_attribute1,'$#$') THEN
16051 l_prev_rec.old_attribute1 := l_org_hist_tbl(j).old_attribute1;
16052 l_prev_rec.new_attribute1 := l_org_hist_tbl(j).new_attribute1;
16053 END IF;
16054 --
16055 IF nvl(l_org_hist_tbl(j).old_attribute2,'$#$') <>
16056 nvl(l_org_hist_tbl(j).new_attribute2,'$#$') THEN
16057 l_prev_rec.old_attribute2 := l_org_hist_tbl(j).old_attribute2;
16058 l_prev_rec.new_attribute2 := l_org_hist_tbl(j).new_attribute2;
16059 END IF;
16060 --
16061 IF nvl(l_org_hist_tbl(j).old_attribute3,'$#$') <>
16062 nvl(l_org_hist_tbl(j).new_attribute3,'$#$') THEN
16063 l_prev_rec.old_attribute3 := l_org_hist_tbl(j).old_attribute3;
16064 l_prev_rec.new_attribute3 := l_org_hist_tbl(j).new_attribute3;
16065 END IF;
16066 --
16067 IF nvl(l_org_hist_tbl(j).old_attribute4,'$#$') <>
16068 nvl(l_org_hist_tbl(j).new_attribute4,'$#$') THEN
16069 l_prev_rec.old_attribute4 := l_org_hist_tbl(j).old_attribute4;
16070 l_prev_rec.new_attribute4 := l_org_hist_tbl(j).new_attribute4;
16071 END IF;
16072 --
16073 IF nvl(l_org_hist_tbl(j).old_attribute5,'$#$') <>
16074 nvl(l_org_hist_tbl(j).new_attribute5,'$#$') THEN
16075 l_prev_rec.old_attribute5 := l_org_hist_tbl(j).old_attribute5;
16076 l_prev_rec.new_attribute5 := l_org_hist_tbl(j).new_attribute5;
16077 END IF;
16078 --
16079 IF nvl(l_org_hist_tbl(j).old_attribute6,'$#$') <>
16080 nvl(l_org_hist_tbl(j).new_attribute6,'$#$') THEN
16081 l_prev_rec.old_attribute6 := l_org_hist_tbl(j).old_attribute6;
16082 l_prev_rec.new_attribute6 := l_org_hist_tbl(j).new_attribute6;
16083 END IF;
16084 --
16085 IF nvl(l_org_hist_tbl(j).old_attribute7,'$#$') <>
16086 nvl(l_org_hist_tbl(j).new_attribute7,'$#$') THEN
16087 l_prev_rec.old_attribute7 := l_org_hist_tbl(j).old_attribute7;
16088 l_prev_rec.new_attribute7 := l_org_hist_tbl(j).new_attribute7;
16089 END IF;
16090 --
16091 IF nvl(l_org_hist_tbl(j).old_attribute8,'$#$') <>
16092 nvl(l_org_hist_tbl(j).new_attribute8,'$#$') THEN
16093 l_prev_rec.old_attribute8 := l_org_hist_tbl(j).old_attribute8;
16094 l_prev_rec.new_attribute8 := l_org_hist_tbl(j).new_attribute8;
16095 END IF;
16096 --
16097 IF nvl(l_org_hist_tbl(j).old_attribute9,'$#$') <>
16098 nvl(l_org_hist_tbl(j).new_attribute9,'$#$') THEN
16099 l_prev_rec.old_attribute9 := l_org_hist_tbl(j).old_attribute9;
16100 l_prev_rec.new_attribute9 := l_org_hist_tbl(j).new_attribute9;
16101 END IF;
16102 --
16103 IF nvl(l_org_hist_tbl(j).old_attribute10,'$#$') <>
16104 nvl(l_org_hist_tbl(j).new_attribute10,'$#$') THEN
16105 l_prev_rec.old_attribute10 := l_org_hist_tbl(j).old_attribute10;
16106 l_prev_rec.new_attribute10 := l_org_hist_tbl(j).new_attribute10;
16107 END IF;
16108 --
16109 IF nvl(l_org_hist_tbl(j).old_attribute11,'$#$') <>
16110 nvl(l_org_hist_tbl(j).new_attribute11,'$#$') THEN
16111 l_prev_rec.old_attribute11 := l_org_hist_tbl(j).old_attribute11;
16112 l_prev_rec.new_attribute11 := l_org_hist_tbl(j).new_attribute11;
16113 END IF;
16114 --
16115 IF nvl(l_org_hist_tbl(j).old_attribute12,'$#$') <>
16116 nvl(l_org_hist_tbl(j).new_attribute12,'$#$') THEN
16117 l_prev_rec.old_attribute12 := l_org_hist_tbl(j).old_attribute12;
16118 l_prev_rec.new_attribute12 := l_org_hist_tbl(j).new_attribute12;
16119 END IF;
16120 --
16121 IF nvl(l_org_hist_tbl(j).old_attribute13,'$#$') <>
16122 nvl(l_org_hist_tbl(j).new_attribute13,'$#$') THEN
16123 l_prev_rec.old_attribute13 := l_org_hist_tbl(j).old_attribute13;
16124 l_prev_rec.new_attribute13 := l_org_hist_tbl(j).new_attribute13;
16125 END IF;
16126 --
16127 IF nvl(l_org_hist_tbl(j).old_attribute14,'$#$') <>
16128 nvl(l_org_hist_tbl(j).new_attribute14,'$#$') THEN
16129 l_prev_rec.old_attribute14 := l_org_hist_tbl(j).old_attribute14;
16130 l_prev_rec.new_attribute14 := l_org_hist_tbl(j).new_attribute14;
16131 END IF;
16132 --
16133 IF nvl(l_org_hist_tbl(j).old_attribute15,'$#$') <>
16134 nvl(l_org_hist_tbl(j).new_attribute15,'$#$') THEN
16135 l_prev_rec.old_attribute15 := l_org_hist_tbl(j).old_attribute15;
16136 l_prev_rec.new_attribute15 := l_org_hist_tbl(j).new_attribute15;
16137 END IF;
16138 --
16139 ELSE -- Txn id not same
16140 IF l_flag = 'Y' THEN
16141 update csi_i_org_assignments_h
16145 new_relationship_type_code = l_prev_rec.new_relationship_type_code,
16142 set old_operating_unit_id = l_prev_rec.old_operating_unit_id,
16143 new_operating_unit_id = l_prev_rec.new_operating_unit_id,
16144 old_relationship_type_code = l_prev_rec.old_relationship_type_code,
16146 old_active_start_date = l_prev_rec.old_active_start_date,
16147 new_active_start_date = l_prev_rec.new_active_start_date,
16148 old_active_end_date = l_prev_rec.old_active_end_date,
16149 new_active_end_date = l_prev_rec.new_active_end_date,
16150 old_context = l_prev_rec.old_context,
16151 new_context = l_prev_rec.new_context,
16152 old_attribute1 = l_prev_rec.old_attribute1,
16153 new_attribute1= l_prev_rec.new_attribute1,
16154 old_attribute2 = l_prev_rec.old_attribute2,
16155 new_attribute2= l_prev_rec.new_attribute2,
16156 old_attribute3 = l_prev_rec.old_attribute3,
16157 new_attribute3= l_prev_rec.new_attribute3,
16158 old_attribute4 = l_prev_rec.old_attribute4,
16159 new_attribute4= l_prev_rec.new_attribute4,
16160 old_attribute5 = l_prev_rec.old_attribute5,
16161 new_attribute5= l_prev_rec.new_attribute5,
16162 old_attribute6 = l_prev_rec.old_attribute6,
16163 new_attribute6= l_prev_rec.new_attribute6,
16164 old_attribute7 = l_prev_rec.old_attribute7,
16165 new_attribute7= l_prev_rec.new_attribute7,
16166 old_attribute8 = l_prev_rec.old_attribute8,
16167 new_attribute8= l_prev_rec.new_attribute8,
16168 old_attribute9 = l_prev_rec.old_attribute9,
16169 new_attribute9= l_prev_rec.new_attribute9,
16170 old_attribute10 = l_prev_rec.old_attribute10,
16171 new_attribute10= l_prev_rec.new_attribute10,
16172 old_attribute11 = l_prev_rec.old_attribute11,
16173 new_attribute11= l_prev_rec.new_attribute11,
16174 old_attribute12 = l_prev_rec.old_attribute12,
16175 new_attribute12= l_prev_rec.new_attribute12,
16176 old_attribute13 = l_prev_rec.old_attribute13,
16177 new_attribute13= l_prev_rec.new_attribute13,
16178 old_attribute14 = l_prev_rec.old_attribute14,
16179 new_attribute14= l_prev_rec.new_attribute14,
16180 old_attribute15 = l_prev_rec.old_attribute15,
16181 new_attribute15= l_prev_rec.new_attribute15,
16182 last_update_date = sysdate
16183 where instance_ou_history_id = l_prev_rec.instance_ou_history_id;
16184 --
16185 FORALL i in 1..l_del_ou_hist_tbl.count
16186 delete from csi_i_org_assignments_h
16187 where instance_ou_history_id = l_del_ou_hist_tbl(i);
16188 --
16189 l_flag := 'N';
16190 l_del_ou_hist_tbl.DELETE;
16191 END IF;
16192 l_prev_rec := l_org_hist_tbl(j);
16193 END IF;
16194 END IF;
16195 END LOOP;
16196 -- Update the instance_ou_id with the one that is retained
16197 IF l_flag = 'Y' THEN -- Just in case the last record in the loop matches with prev txn
16198 update csi_i_org_assignments_h
16199 set old_operating_unit_id = l_prev_rec.old_operating_unit_id,
16200 new_operating_unit_id = l_prev_rec.new_operating_unit_id,
16201 old_relationship_type_code = l_prev_rec.old_relationship_type_code,
16202 new_relationship_type_code = l_prev_rec.new_relationship_type_code,
16203 old_active_start_date = l_prev_rec.old_active_start_date,
16204 new_active_start_date = l_prev_rec.new_active_start_date,
16205 old_active_end_date = l_prev_rec.old_active_end_date,
16206 new_active_end_date = l_prev_rec.new_active_end_date,
16207 old_context = l_prev_rec.old_context,
16208 new_context = l_prev_rec.new_context,
16209 old_attribute1 = l_prev_rec.old_attribute1,
16210 new_attribute1= l_prev_rec.new_attribute1,
16211 old_attribute2 = l_prev_rec.old_attribute2,
16212 new_attribute2= l_prev_rec.new_attribute2,
16213 old_attribute3 = l_prev_rec.old_attribute3,
16214 new_attribute3= l_prev_rec.new_attribute3,
16215 old_attribute4 = l_prev_rec.old_attribute4,
16216 new_attribute4= l_prev_rec.new_attribute4,
16217 old_attribute5 = l_prev_rec.old_attribute5,
16218 new_attribute5= l_prev_rec.new_attribute5,
16219 old_attribute6 = l_prev_rec.old_attribute6,
16220 new_attribute6= l_prev_rec.new_attribute6,
16221 old_attribute7 = l_prev_rec.old_attribute7,
16222 new_attribute7= l_prev_rec.new_attribute7,
16223 old_attribute8 = l_prev_rec.old_attribute8,
16224 new_attribute8= l_prev_rec.new_attribute8,
16225 old_attribute9 = l_prev_rec.old_attribute9,
16226 new_attribute9= l_prev_rec.new_attribute9,
16227 old_attribute10 = l_prev_rec.old_attribute10,
16228 new_attribute10= l_prev_rec.new_attribute10,
16229 old_attribute11 = l_prev_rec.old_attribute11,
16230 new_attribute11= l_prev_rec.new_attribute11,
16231 old_attribute12 = l_prev_rec.old_attribute12,
16232 new_attribute12= l_prev_rec.new_attribute12,
16233 old_attribute13 = l_prev_rec.old_attribute13,
16234 new_attribute13= l_prev_rec.new_attribute13,
16235 old_attribute14 = l_prev_rec.old_attribute14,
16236 new_attribute14= l_prev_rec.new_attribute14,
16237 old_attribute15 = l_prev_rec.old_attribute15,
16238 new_attribute15= l_prev_rec.new_attribute15,
16239 last_update_date = sysdate
16240 where instance_ou_history_id = l_prev_rec.instance_ou_history_id;
16241 --
16242 FORALL i in 1..l_del_ou_hist_tbl.count
16243 delete from csi_i_org_assignments_h
16247 l_del_ou_hist_tbl.DELETE;
16244 where instance_ou_history_id = l_del_ou_hist_tbl(i);
16245 --
16246 l_flag := 'N';
16248 END IF;
16249 --
16250 FOR x in l_org_hist_tbl.FIRST .. l_org_hist_tbl.LAST LOOP
16251 update csi_i_org_assignments_h
16252 set instance_ou_id = v_ret_ou_id,
16253 last_update_date = sysdate
16254 where instance_ou_history_id = l_org_hist_tbl(x).instance_ou_history_id;
16255 END LOOP;
16256 END IF;
16257 --
16258 -- Delete the Duplicate Org Assignments
16259 FORALL x in l_del_tbl.FIRST .. l_del_tbl.LAST
16260 DELETE FROM CSI_I_ORG_ASSIGNMENTS
16261 where instance_ou_id = l_del_tbl(x);
16262 commit;
16263 Exception
16264 when Process_next then
16265 null;
16266 End;
16267 END LOOP;
16268 commit;
16269 END Delete_Dup_Org_Assignments;
16270 --
16271 PROCEDURE dump_unprocessed_fs_serials IS
16272
16273 CURSOR fs_cur IS
16274 SELECT inventory_item_id,
16275 serial_number,
16276 instance_id,
16277 date_time_stamp,
16278 mtl_txn_id,
16279 error_message
16280 FROM csi_ii_forward_sync_temp
16281 WHERE process_flag <> 'P';
16282
16283 CURSOR err_txn_cur (p_item_id IN number, p_serial_number IN varchar2) IS
16284 SELECT cdt.mtl_txn_name,
16285 cdt.mtl_txn_id,
16286 cdt.mtl_txn_date,
16287 cte.error_text
16288 FROM csi_diagnostics_temp cdt,
16289 csi_txn_errors cte
16290 WHERE cdt.inventory_item_id = p_item_id
16291 AND cdt.serial_number = p_serial_number
16292 AND cte.inv_material_transaction_id = cdt.mtl_txn_id
16293 AND cte.processed_flag in ('E', 'R')
16294 ORDER BY diag_seq_id;
16295
16296 l_out varchar2(2000);
16297
16298 BEGIN
16299 FOR fs_rec IN fs_cur
16300 LOOP
16301
16302 IF fs_cur%rowcount = 1 THEN
16303 l_out := fill('item_id', 10)||
16304 fill('serial_number', 20)||
16305 fill('inst_id',10)||
16306 fill('time_stamp',12)||
16307 fill('mtl_txn_id',10)||
16308 fill('error_message', 18);
16309 log(l_out);
16310 l_out := fill('-------', 10)||
16311 fill('-------------', 20)||
16312 fill('-------',10)||
16313 fill('----------',12)||
16314 fill('----------',10)||
16315 fill('-------------', 18);
16316 log(l_out);
16317 END IF;
16318
16319 l_out := fill(fs_rec.inventory_item_id, 10)||
16320 fill(fs_rec.serial_number, 20)||
16321 fill(fs_rec.instance_id,10)||
16322 fill(fs_rec.date_time_stamp,12)||
16323 fill(fs_rec.mtl_txn_id,10)||
16324 fill(fs_rec.error_message, 18);
16325
16326 FOR err_txn_rec IN err_txn_cur(fs_rec.inventory_item_id, fs_rec.serial_number)
16327 LOOP
16328 l_out := ' '||
16329 fill(err_txn_rec.mtl_txn_name, 25)||
16330 fill(err_txn_rec.mtl_txn_id, 10)||
16331 fill(err_txn_rec.mtl_txn_date, 12)||
16332 fill(err_txn_rec.error_text, 30);
16333 log(l_out);
16334 END LOOP;
16335 END LOOP;
16336 END dump_unprocessed_fs_serials;
16337
16338 PROCEDURE populate_mtl_txn_creation_date
16339 IS
16340 l_creation_date date;
16341
16342 CURSOR fs_cur IS
16343 SELECT mtl_txn_id
16344 FROM csi_ii_forward_sync_temp
16345 WHERE process_flag <> 'P'
16346 AND mtl_txn_creation_date is null
16347 FOR UPDATE OF mtl_txn_creation_date;
16348 BEGIN
16349 FOR fs_rec IN fs_cur
16350 LOOP
16351 SELECT creation_date
16352 INTO l_creation_date
16353 FROM mtl_material_transactions
16354 WHERE transaction_id = fs_rec.mtl_txn_id;
16355
16356 UPDATE csi_ii_forward_sync_temp
16357 SET mtl_txn_creation_date = l_creation_date
16358 WHERE current of fs_cur;
16359
16360 END LOOP;
16361 commit;
16362 END populate_mtl_txn_creation_date;
16363
16364 --
16365 PROCEDURE create_mmt_trigger IS
16366 BEGIN
16367
16368 log(date_time_stamp||'creating mmt trigger csi_block_mat_txn_trg');
16369
16370 EXECUTE IMMEDIATE
16371 'CREATE OR REPLACE TRIGGER CSI_BLOCK_MAT_TXN_TRG
16372 BEFORE INSERT ON MTL_MATERIAL_TRANSACTIONS
16373 REFERENCING NEW AS NEW OLD AS OLD
16374 FOR EACH ROW
16375 DECLARE
16376 v_nl_trackable VARCHAR2(1);
16377 BEGIN
16378 BEGIN
16379 SELECT comms_nl_trackable_flag
16380 INTO v_nl_trackable
16381 FROM MTL_SYSTEM_ITEMS msi,
16382 MTL_PARAMETERS mp
16383 where mp.organization_id = :new.organization_id
16384 and msi.inventory_item_id = :new.inventory_item_id
16385 and msi.organization_id = mp.master_organization_id;
16386 EXCEPTION
16387 WHEN no_data_found THEN
16388 NULL;
16389 END;
16390 IF nvl(v_nl_trackable,''N'') = ''Y'' THEN
16391 :new.last_updated_by := null;
16392 END IF;
16393 END;';
16394 EXCEPTION
16395 WHEN OTHERS THEN
16399 PROCEDURE drop_mmt_trigger IS
16396 NULL;
16397 END create_mmt_trigger;
16398
16400 BEGIN
16401 log(date_time_stamp||'dropping the trigger csi_block_mat_txn_trg');
16402 EXECUTE IMMEDIATE 'DROP TRIGGER CSI_BLOCK_MAT_TXN_TRG';
16403 EXCEPTION
16404 WHEN others THEN
16405 null;
16406 END drop_mmt_trigger;
16407
16408 PROCEDURE ib_sync(
16409 errbuf OUT NOCOPY VARCHAR2,
16410 retcode OUT NOCOPY NUMBER,
16411 p_show_instances IN VARCHAR2,
16412 p_mode IN VARCHAR2,
16413 p_force_data_fix IN VARCHAR2)
16414 IS
16415 l_errbuf varchar2(2000);
16416 l_retcode number;
16417 l_recount number;
16418 comp_error exception;
16419 l_auto_populate_allowed varchar2(3); --bug 5248037--
16420
16421 --
16422 TYPE LOOKUP_REC IS RECORD
16423 ( lookup_code VARCHAR2(30),
16424 enabled_flag VARCHAR2(1)
16425 );
16426 TYPE LOOKUP_TBL IS TABLE OF LOOKUP_REC INDEX BY BINARY_INTEGER;
16427 --
16428 l_lookup_tbl LOOKUP_TBL;
16429 l_ctr NUMBER := 0;
16430 l_type VARCHAR2(30) := 'CSI_CORRECTION_ROUTINES';
16431 --
16432 CURSOR CSI_LOOKUP_CUR IS
16433 select lookup_code,enabled_flag
16434 from CSI_LOOKUPS
16435 where lookup_type = l_type;
16436 --
16437 FUNCTION Is_Routine_Enabled(
16438 p_lookup_tbl in lookup_tbl,
16439 p_routine_name in varchar2)
16440 RETURN BOOLEAN
16441 IS
16442 l_ret_value BOOLEAN := TRUE;
16443 l_flag VARCHAR2(1);
16444 BEGIN
16445 l_flag := 'Y'; -- No data will qualify for Procedure execution
16446 --
16447 IF p_lookup_tbl.count > 0 THEN
16448 FOR J IN p_lookup_tbl.FIRST .. p_lookup_tbl.LAST LOOP
16449 IF p_lookup_tbl(J).lookup_code = p_routine_name THEN
16450 l_flag := p_lookup_tbl(J).enabled_flag;
16451 exit;
16452 END IF;
16453 END LOOP;
16454 END IF;
16455 --
16456 IF l_flag = 'Y' THEN
16457 l_ret_value := TRUE;
16458 ELSE
16459 l_ret_value := FALSE;
16460 END IF;
16461 --
16462 RETURN l_ret_value;
16463 END Is_Routine_Enabled;
16464 --
16465 BEGIN
16466
16467 debug_off;
16468
16469 log('------------------------------------------------------------------------');
16470 log(date_time_stamp||'start ib_sync ');
16471 log(' parameter - Show Instances :'||p_show_instances);
16472 log(' parameter - Mode of execution :'||p_mode);
16473 --
16474 IF csi_datastructures_pub.g_install_param_rec.fetch_flag IS NULL THEN
16475 csi_gen_utility_pvt.populate_install_param_rec;
16476 END IF;
16477 --
16478 IF csi_datastructures_pub.g_install_param_rec.fetch_flag = 'N' OR
16479 csi_datastructures_pub.g_install_param_rec.freeze_flag = 'N' THEN
16480 log('Install Parameters no set. Process terminating...');
16481 errbuf := 'CSI Install Parameters not set...';
16482 retcode := 1;
16483 RAISE comp_error;
16484 END IF;
16485 -- checks block -- show stoppers
16486 log(date_time_stamp||'get_nl_trackable_report');
16487 csi_diagnostics_pkg.get_nl_trackable_report;
16488
16489 IF l_global_warning_flag = 'Y' THEN
16490 log('Inconsistent IB trackable flag setup in org items and master items detected.');
16491 log('Please fix the items in the report csinonl.<mmddyy>.dbg and then rerun the program.');
16492 log('Process terminating...');
16493 errbuf := 'Inconsistent IB trackability in org items and master items detected';
16494 retcode := 1;
16495 RAISE comp_error;
16496 END IF;
16497
16498 -- reports block
16499 log(date_time_stamp||'check_org_uniqueness');
16500 csi_diagnostics_pkg.check_org_uniqueness;
16501
16502 log(date_time_stamp||'get_non_srl_rma_report');
16503 csi_diagnostics_pkg.get_non_srl_rma_report(
16504 p_show_instances => p_show_instances);
16505 --
16506 -- Enable the Lookup Values that contain the Data Fix routines so that they all get executed.
16507 --
16508 IF nvl(p_force_data_fix,'N') = 'Y' THEN
16509 UPDATE FND_LOOKUP_VALUES
16510 SET enabled_flag = 'Y',
16511 last_updated_by = -1,
16512 last_update_date = sysdate
16513 WHERE lookup_type = l_type;
16514 --
16515 commit;
16516 END IF;
16517 --
16518 IF p_mode IN ('C', 'S') THEN
16519 -- datafix block -
16520 FOR csi_rec IN CSI_LOOKUP_CUR LOOP
16521 l_ctr := l_ctr + 1;
16522 l_lookup_tbl(l_ctr).lookup_code := csi_rec.lookup_code;
16523 l_lookup_tbl(l_ctr).enabled_flag := csi_rec.enabled_flag;
16524 END LOOP;
16525 --
16526 IF Is_Routine_Enabled(l_lookup_tbl,'DELETE_DUP_RELATIONSHIP') THEN
16527 Update_Lookup('DELETE_DUP_RELATIONSHIP');
16528 log(date_time_stamp||'delete_dup_relationship');
16529 csi_diagnostics_pkg.Delete_Dup_Relationship;
16530 commit;
16531 ELSE
16532 log(date_time_stamp||'delete_dup_relationship already executed...');
16533 END IF;
16534
16535 IF Is_Routine_Enabled(l_lookup_tbl,'UPDATE_NO_CTL_SRL_LOT_INST') THEN
16536 Update_Lookup('UPDATE_NO_CTL_SRL_LOT_INST');
16537 log(date_time_stamp||'update_no_ctl_srl_lot_inst');
16541 log(date_time_stamp||'Update_No_Ctl_Srl_Lot_Inst already executed...');
16538 csi_diagnostics_pkg.Update_No_Ctl_Srl_Lot_Inst;
16539 commit;
16540 ELSE
16542 END IF;
16543
16544 IF Is_Routine_Enabled(l_lookup_tbl,'DELETE_DUP_SRL_INV_INSTANCE') THEN
16545 Update_Lookup('DELETE_DUP_SRL_INV_INSTANCE');
16546 log(date_time_stamp||'delete_dup_srl_inv_instance');
16547 csi_diagnostics_pkg.Delete_Dup_Srl_Inv_Instance;
16548 ELSE
16549 log(date_time_stamp||'Delete_Dup_Srl_Inv_Instance already executed...');
16550 END IF;
16551
16552 IF Is_Routine_Enabled(l_lookup_tbl,'UPDATE_DUP_SRL_INSTANCE') THEN
16553 Update_Lookup('UPDATE_DUP_SRL_INSTANCE');
16554 log(date_time_stamp||'update_dup_srl_instance');
16555 csi_diagnostics_pkg.Update_Dup_Srl_Instance;
16556 commit;
16557 ELSE
16558 log(date_time_stamp||'Update_Dup_Srl_Instance already executed...');
16559 END IF;
16560
16561 IF Is_Routine_Enabled(l_lookup_tbl,'DEL_API_DUP_SRL_INSTANCE') THEN
16562 Update_Lookup('DEL_API_DUP_SRL_INSTANCE');
16563 log(date_time_stamp||'del_api_dup_srl_instance');
16564 csi_diagnostics_pkg.Del_API_Dup_Srl_Instance;
16565 commit;
16566 ELSE
16567 log(date_time_stamp||'Del_API_Dup_Srl_Instance already executed...');
16568 END IF;
16569
16570 IF Is_Routine_Enabled(l_lookup_tbl,'UPDATE_INSTANCE_USAGE') THEN
16571 Update_Lookup('UPDATE_INSTANCE_USAGE');
16572 log(date_time_stamp||'update_instance_usage');
16573 csi_diagnostics_pkg.Update_Instance_Usage;
16574 commit;
16575 ELSE
16576 log(date_time_stamp||'Update_Instance_Usage already executed...');
16577 END IF;
16578
16579 IF Is_Routine_Enabled(l_lookup_tbl,'UPDATE_FULL_DUMP_FLAG') THEN
16580 Update_Lookup('UPDATE_FULL_DUMP_FLAG');
16581 log(date_time_stamp||'update_full_dump_flag');
16582 csi_diagnostics_pkg.Update_Full_dump_flag;
16583 commit;
16584 ELSE
16585 log(date_time_stamp||'Update_Full_dump_flag already executed...');
16586 END IF;
16587
16588 IF Is_Routine_Enabled(l_lookup_tbl,'UPDATE_VLD_ORGANIZATION') THEN
16589 Update_Lookup('UPDATE_VLD_ORGANIZATION');
16590 log(date_time_stamp||'update_vld_organization');
16591 csi_diagnostics_pkg.Update_Vld_Organization;
16592 commit;
16593 ELSE
16594 log(date_time_stamp||'Update_Vld_Organization already executed...');
16595 END IF;
16596
16597 IF Is_Routine_Enabled(l_lookup_tbl,'UPDATE_REVISION') THEN
16598 Update_Lookup('UPDATE_REVISION');
16599 log(date_time_stamp||'update_revision');
16600 csi_diagnostics_pkg.Update_Revision;
16601 commit;
16602 ELSE
16603 log(date_time_stamp||'Update_Revision already executed...');
16604 END IF;
16605
16606 IF Is_Routine_Enabled(l_lookup_tbl,'MERGE_NON_SRL_INV_INSTANCE') THEN
16607 Update_Lookup('MERGE_NON_SRL_INV_INSTANCE');
16608 log(date_time_stamp||'merge_non_srl_inv_instance');
16609 csi_diagnostics_pkg.merge_non_srl_inv_instance;
16610 commit;
16611 ELSE
16612 log(date_time_stamp||'merge_non_srl_inv_instance already executed...');
16613 END IF;
16614
16615 IF Is_Routine_Enabled(l_lookup_tbl,'DELETE_DUP_ACCOUNT') THEN
16616 Update_Lookup('DELETE_DUP_ACCOUNT');
16617 log(date_time_stamp||'delete_dup_account');
16618 csi_diagnostics_pkg.delete_dup_account;
16619 commit;
16620 ELSE
16621 log(date_time_stamp||'delete_dup_account already executed...');
16622 END IF;
16623
16624 IF Is_Routine_Enabled(l_lookup_tbl,'UPDATE_INSTANCE_PARTY_SOURCE') THEN
16625 Update_Lookup('UPDATE_INSTANCE_PARTY_SOURCE');
16626 log(date_time_stamp||'update_instance_party_source');
16627 csi_diagnostics_pkg.update_instance_party_source;
16628 commit;
16629 ELSE
16630 log(date_time_stamp||'update_instance_party_source already executed...');
16631 END IF;
16632
16633 IF Is_Routine_Enabled(l_lookup_tbl,'UPDATE_CONTACT_PARTY_RECORD') THEN
16634 Update_Lookup('UPDATE_CONTACT_PARTY_RECORD');
16635 log(date_time_stamp||'update_contact_party_record');
16636 csi_diagnostics_pkg.update_contact_party_record;
16637 commit;
16638 ELSE
16639 log(date_time_stamp||'update_contact_party_record already executed...');
16640 END IF;
16641
16642 IF Is_Routine_Enabled(l_lookup_tbl,'REVERT_PARTY_REL_TYPE_UPDATE') THEN
16643 Update_Lookup('REVERT_PARTY_REL_TYPE_UPDATE');
16644 log(date_time_stamp||'revert_party_rel_type_update');
16645 csi_diagnostics_pkg.revert_party_rel_type_update;
16646 commit;
16647 ELSE
16648 log(date_time_stamp||'revert_party_rel_type_update already executed...');
16649 END IF;
16650
16651 IF Is_Routine_Enabled(l_lookup_tbl,'UPDATE_MASTER_ORGANIZATION_ID') THEN
16652 Update_Lookup('UPDATE_MASTER_ORGANIZATION_ID');
16653 log(date_time_stamp||'update_master_organization_id');
16654 csi_diagnostics_pkg.update_master_organization_ID;
16655 commit;
16656 ELSE
16657 log(date_time_stamp||'update_master_organization_ID already executed...');
16658 END IF;
16659
16660 IF Is_Routine_Enabled(l_lookup_tbl,'MISSING_MTL_TXN_ID_IN_CSI') THEN
16664 commit;
16661 Update_Lookup('MISSING_MTL_TXN_ID_IN_CSI');
16662 log(date_time_stamp||'missing_mtl_txn_id_in_csi');
16663 csi_diagnostics_pkg.missing_mtl_txn_id_in_csi;
16665 ELSE
16666 log(date_time_stamp||'missing_mtl_txn_id_in_csi already executed...');
16667 END IF;
16668
16669 IF Is_Routine_Enabled(l_lookup_tbl,'FIX_WIP_USAGE') THEN
16670 Update_Lookup('FIX_WIP_USAGE');
16671 log(date_time_stamp||'fix_wip_usage');
16672 csi_diagnostics_pkg.fix_wip_usage;
16673 commit;
16674 ELSE
16675 log(date_time_stamp||'fix_wip_usage already executed...');
16676 END IF;
16677
16678 IF Is_Routine_Enabled(l_lookup_tbl,'DELETE_DUP_NSRL_WIP_INSTANCES') THEN
16679 Update_Lookup('DELETE_DUP_NSRL_WIP_INSTANCES');
16680 log(date_time_stamp||'delete_dup_nsrl_wip_instances');
16681 csi_diagnostics_pkg.delete_dup_nsrl_wip_instances;
16682 commit;
16683 ELSE
16684 log(date_time_stamp||'delete_dup_nsrl_wip_instances already executed...');
16685 END IF;
16686
16687 IF Is_Routine_Enabled(l_lookup_tbl,'DELETE_DUP_ORG_ASSIGNMENTS') THEN
16688 Update_Lookup('DELETE_DUP_ORG_ASSIGNMENTS');
16689 log(date_time_stamp||'Delete_Dup_Org_Assignments');
16690 csi_diagnostics_pkg.Delete_Dup_Org_Assignments;
16691 commit;
16692 ELSE
16693 log(date_time_stamp||'Delete_Dup_Org_Assignments already executed...');
16694 END IF;
16695 --
16696 commit;
16697
16698 END IF;
16699
16700 IF p_mode = 'S' THEN -- Synchronize IB
16701
16702 create_mmt_trigger;
16703
16704 -- read pending messages in SFM queue and pump them as errors
16705 log(date_time_stamp||'deque_messages_as_errors');
16706 dequeue_messages_as_errors;
16707
16708 -- spawn the requbmit interface for the pumped errors
16709 log(date_time_stamp||'Resubmit interface for pending messages');
16710 csi_resubmit_pub.resubmit_interface(
16711 errbuf => l_errbuf,
16712 retcode => l_retcode,
16713 p_option => 'SELECTED');
16714
16715 log(date_time_stamp||'Resubmit interface completed successfully.');
16716
16717 END IF;
16718
16719 IF p_mode in ('C', 'S') THEN
16720
16721 IF Is_Routine_Enabled(l_lookup_tbl,'EXPIRE_NON_TRACKABLE_INSTANCE') THEN
16722 Update_Lookup('EXPIRE_NON_TRACKABLE_INSTANCE');
16723 log(date_time_stamp||'expire_non_trackable_instance');
16724 csi_diagnostics_pkg.expire_non_trackable_instance;
16725 commit;
16726 ELSE
16727 log(date_time_stamp||'expire_non_trackable_instance already executed...');
16728 END IF;
16729
16730 log(date_time_stamp||'fix_srlsoi_returned_serials');
16731 csi_diagnostics_pkg.fix_srlsoi_returned_serials;
16732
16733 log(date_time_stamp||'mark_error_transactions');
16734 csi_diagnostics_pkg.mark_error_transactions;
16735
16736 log(date_time_stamp||'create_or_update_shipping_inst');
16737 csi_diagnostics_pkg.create_or_update_shipping_inst;
16738
16739 l_auto_populate_allowed := FND_PROFILE.VALUE('CSI_AUTO_POPULATE_INSTANCE'); --bug 5248037--
16740 log('Auto population allowed '||l_auto_populate_allowed);
16741
16742 --Added IF condition for bug 5248037--
16743 IF UPPER(l_auto_populate_allowed) = 'Y' THEN
16744 log(date_time_stamp||'create_nsrl_rma_tld');
16745 csi_diagnostics_pkg.create_nsrl_rma_tld;
16746 END IF;
16747
16748 -- serial data spool and preprocess
16749 log(date_time_stamp||'get_srldata');
16750 csi_diagnostics_pkg.get_srldata;
16751
16752 log(date_time_stamp||'preprocess_srldata');
16753 csi_diagnostics_pkg.preprocess_srldata;
16754
16755 -- fix srl errors
16756 log(date_time_stamp||'fix_srldata');
16757 csi_diagnostics_pkg.fix_srldata;
16758
16759 -- serial correction reports
16760 log(date_time_stamp||'spool errors serial Info');
16761 csi_diagnostics_pkg.spool_srldata('ERRORS');
16762
16763 -- serial correction reports
16764 log(date_time_stamp||'spool all serial info');
16765 csi_diagnostics_pkg.spool_srldata('ALL');
16766
16767 -- spawn the resubmit interface for the marked errors
16768 log(date_time_stamp||'Resubmit errors for the corrected serial numbers');
16769 csi_resubmit_pub.Resubmit_Interface(
16770 errbuf => l_errbuf,
16771 retcode => l_retcode,
16772 p_option => 'SELECTED');
16773 log(date_time_stamp||'Resubmit interface completed successfully.');
16774
16775 -- for the newly created column populate the value reading mtl_txn_id
16776 populate_mtl_txn_creation_date;
16777
16778 -- forward sync serial routine
16779 log(date_time_stamp||'forward_sync');
16780 csi_diagnostics_pkg.forward_sync;
16781 commit;
16782
16783 -- Check whether all the instances are forward synched
16784 BEGIN
16785 SELECT count(*)
16786 INTO l_recount
16787 FROM csi_ii_forward_sync_temp
16788 WHERE process_flag <> 'P';
16789 END;
16793 errbuf := 'Forward Sync did not complete successfully.';
16790 --
16791 IF nvl(l_recount,0) > 0 THEN
16792 log( 'Forward Synch did not complete successfully. unprocessed count : '||l_recount);
16794 retcode := 1;
16795 log(date_time_stamp||'dump_unprocessed_fs_serials');
16796 dump_unprocessed_fs_serials;
16797 END IF;
16798 --
16799 END IF;
16800
16801 IF p_mode = 'S' THEN -- synchronize IB
16802
16803 IF l_global_sync_flag = 'Y' THEN
16804 log('Error condition detected for SRL uniqueness across org/Non serial RMA failures.');
16805 log('Please check the items reported in the concurrent request output.');
16806 log('Process terminating...');
16807 errbuf := 'SRL uniqueness across org OR Non serial RMA failures';
16808 retcode := 1;
16809 Raise comp_error;
16810 END IF;
16811
16812 IF is_sfm_active THEN
16813 log('Please shut down the SFM Event Manager queue and re-run the program.');
16814 log('Process terminating...');
16815 retcode := 1;
16816 errbuf := 'Please shut down the SFM event manager queue and re-run the program.';
16817 Raise comp_error;
16818 END IF;
16819 --
16820
16821 log(date_time_stamp||'sync_inv_serials');
16822 csi_diagnostics_pkg.sync_inv_serials;
16823
16824 log(date_time_stamp||'ib_inv_synch_non_srl');
16825 csi_diagnostics_pkg.ib_inv_synch_non_srl;
16826
16827 log(date_time_stamp||'reverse_ib_inv_synch');
16828 csi_diagnostics_pkg.reverse_ib_inv_synch;
16829
16830 END IF;
16831
16832 drop_mmt_trigger;
16833
16834 commit;
16835
16836 log(date_time_stamp||'end ib_sync');
16837 log('------------------------------------------------------------------------');
16838
16839 EXCEPTION
16840 WHEN comp_error THEN
16841 drop_mmt_trigger;
16842 WHEN OTHERS THEN
16843 drop_mmt_trigger;
16844 log('others error in ib_sync : '||sqlerrm);
16845 retcode := 1;
16846 errbuf := sqlerrm;
16847 END ib_sync;
16848
16849
16850 PROCEDURE create_oper_upd_manager
16851 (x_errbuf OUT NOCOPY VARCHAR2,
16852 x_retcode OUT NOCOPY VARCHAR2
16853 )
16854 IS
16855 BEGIN
16856 FND_FILE.PUT_LINE(FND_FILE.LOG, 'Start create_oper_upd_manager');
16857 -- Parent Processing
16858
16859 AD_CONC_UTILS_PKG.Submit_Subrequests
16860 (x_errbuf => x_errbuf,
16861 x_retcode => x_retcode,
16862 x_workerconc_app_shortname => 'CSI',
16863 x_workerconc_progname => 'CSIUPOPS',
16864 x_batch_size => 1000,
16865 x_num_workers => 5
16866 );
16867
16868 FND_FILE.PUT_LINE(FND_FILE.LOG, 'x_errbuf: ' || x_errbuf);
16869 FND_FILE.PUT_LINE(FND_FILE.LOG, 'x_retcode: ' || x_retcode);
16870 FND_FILE.PUT_LINE(FND_FILE.LOG, 'End create_oper_upd_manager');
16871
16872 END create_oper_upd_manager;
16873
16874 PROCEDURE create_oper_upd_worker
16875 (x_errbuf OUT NOCOPY VARCHAR2,
16876 x_retcode OUT NOCOPY VARCHAR2,
16877 x_batch_size IN NUMBER,
16878 x_worker_id IN NUMBER,
16879 x_num_workers IN NUMBER
16880 )
16881 IS
16882 l_table_owner VARCHAR2(30);
16883 l_product VARCHAR2(30) := 'CSI';
16884 l_status VARCHAR2(30);
16885 l_industry VARCHAR2(30);
16886 l_retstatus BOOLEAN;
16887 l_batch_size NUMBER := 1000;
16888 l_worker_id NUMBER:=5;
16889 l_num_workers NUMBER := 5;
16890 l_any_rows_to_process BOOLEAN;
16891 l_table_name VARCHAR2(30) := 'CSI_ITEM_INSTANCES';
16892 l_update_name VARCHAR2(30) := 'csiupops.sql';
16893 l_start_rowid rowid;
16894 l_end_rowid rowid;
16895 l_rows_processed number;
16896 BEGIN
16897
16898 l_retstatus := fnd_installation.get_app_info(
16899 l_product, l_status, l_industry, l_table_owner);
16900
16901 IF ((l_retstatus = FALSE) OR (l_table_owner IS NULL)) THEN
16902 RAISE_APPLICATION_ERROR(-20001,
16903 'Cannot get schema name for product : '||l_product);
16904 END IF;
16905 FND_FILE.PUT_LINE(FND_FILE.LOG, ' x_worker_id : '||x_worker_id);
16906 FND_FILE.PUT_LINE(FND_FILE.LOG, 'x_num_workers : '||x_num_workers);
16907 ad_parallel_updates_pkg.initialize_rowid_range(
16908 ad_parallel_updates_pkg.ROWID_RANGE
16909 ,l_table_owner
16910 ,l_table_name
16911 ,l_update_name
16912 ,x_worker_id
16913 ,x_num_workers
16914 ,x_batch_size,0);
16915
16916 ad_parallel_updates_pkg.get_rowid_range(
16917 l_start_rowid
16918 ,l_end_rowid
16919 ,l_any_rows_to_process
16920 ,x_batch_size
16921 ,TRUE);
16922
16923 WHILE(l_any_rows_to_process = TRUE)
16924 LOOP
16925
16926 UPDATE /*+ rowid(cii) */ csi_item_instances cii
16927 SET operational_status_code =
16928 DECODE(instance_usage_code,'IN_SERVICE','IN_SERVICE','OUT_OF_SERVICE',
16929 'OUT_OF_SERVICE', 'INSTALLED','INSTALLED','NOT_USED')
16930 ,LAST_UPDATE_DATE = sysdate
16931 ,LAST_UPDATED_BY = -1
16932 where operational_status_code IS NULL
16933 AND rowid between l_start_rowid and l_end_rowid;
16934
16935 l_rows_processed := SQL%ROWCOUNT;
16936
16937 ad_parallel_updates_pkg.processed_rowid_range(
16938 l_rows_processed,
16939 l_end_rowid);
16940
16941 commit;
16942
16943 ad_parallel_updates_pkg.get_rowid_range(
16944 l_start_rowid,
16945 l_end_rowid,
16946 l_any_rows_to_process,
16947 x_batch_size,
16948 FALSE);
16949 END LOOP;
16950 x_retcode := AD_CONC_UTILS_PKG.CONC_SUCCESS;
16951
16952 EXCEPTION
16953 WHEN OTHERS THEN
16954 x_retcode := AD_CONC_UTILS_PKG.CONC_FAIL;
16955 RAISE;
16956 END create_oper_upd_worker;
16957
16958 END csi_diagnostics_pkg;