[Home] [Help]
PACKAGE BODY: APPS.GMD_QC_MIG12
Source
1 PACKAGE BODY GMD_QC_MIG12 AS
2 /* $Header: gmdmg12b.pls 120.19.12020000.7 2013/02/01 21:03:37 srpuri ship $
3 +==========================================================================+
4 | Copyright (c) 1998 Oracle Corporation |
5 | Redwood Shores, CA, USA |
6 | All rights reserved. |
7 +==========================================================================+
8 | FILE NAME |
9 | gmdmg12b.pls |
10 | |
11 | PACKAGE NAME |
12 | GMD_QC_MIG12 |
13 | |
14 | DESCRIPTION |
15 | This package contains migration procedures/functions |
16 | for Quality for 12 migration. |
17 | |
18 | |
19 | HISTORY |
20 +==========================================================================+
21 */
22 /*===========================================================================
23 -- PROCEDURE
24 -- log_setup_counts
25 --
26 -- DESCRIPTION:
27 -- This procedure logs the count totals for each setup table.
28 -- Only tables for which processing has started will be displayed.
29 -- This routine will be used by both general logging and when others logging.
30 --
31 -- PARAMETERS:
32 -- p_migration_run_id IN NUMBER - Migration id.
33 --
34 -- p_progress_ind IN NUMBER - Table sequence that has been
35 -- reached.
36 --
37 --| 03/12/2012 PLOWE Bug 13826138 - 180000+ ERRORS WITH MESSAGE_TOKEN AS
38 --| GMI_MIG_NO_PARENT_LOT DURING OPM DATA TRANS
39 --| changed code so as to have the effect of supressing these error messageS
40 --| 07/26/2012 PLOWE Bug 14355581 - LOT INFORMATION IN SAMPLE DIDNT GET MIGRATED PROPERLY
41 --| changed GMD_QC_MIGRATE_SAMPLES code to initialize variables as , in certain cases , these were being used to populate samples
42 --| 01/04/2013, Bug 14198664 - performance issues with patch 13846646.r12.gma.b and script gmdg5msm.sql
43 --| changed GMD_QC_MIGRATE_SAMPLES code to add p_start_rowid/p_end_rowid to support ad_parallel
44 --| changed GMD_QC_MIGRATE_SAMPLES to replace update gmd_sampling_events with merge
45 --=========================================================================== */
46
47 PROCEDURE LOG_SETUP_COUNTS
48 ( p_migration_run_id IN NUMBER,
49 p_progress_ind IN NUMBER) IS
50
51 BEGIN
52
53 IF (p_progress_ind = 1) THEN
54 GMA_COMMON_LOGGING.gma_migration_central_log (
55 p_run_id => p_migration_run_id,
56 p_log_level => FND_LOG.LEVEL_EVENT,
57 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
58 p_context => 'Quality Setup',
59 p_token1 => 'TAB',
60 p_token2 => 'PRO',
61 p_token3 => 'UPD',
62 p_token4 => 'INS',
63 p_token5 => 'ERR',
64 p_param1 => 'gmd_test_methods_b',
65 p_param2 => to_char(GMD_QC_MIG12.g_test_method_pro_count),
66 p_param3 => to_char(GMD_QC_MIG12.g_test_method_upd_count),
67 p_param4 => 0,
68 p_param5 => to_char(GMD_QC_MIG12.g_test_method_err_count),
69 p_app_short_name => 'GMD');
70 END IF;
71
72
73 IF (p_progress_ind = 2) THEN
74 GMA_COMMON_LOGGING.gma_migration_central_log (
75 p_run_id => p_migration_run_id,
76 p_log_level => FND_LOG.LEVEL_EVENT,
77 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
78 p_context => 'Quality Setup',
79 p_token1 => 'TAB',
80 p_token2 => 'PRO',
81 p_token3 => 'UPD',
82 p_token4 => 'INS',
83 p_token5 => 'ERR',
84 p_param1 => 'gmd_quality_config',
85 p_param2 => to_char(GMD_QC_MIG12.g_quality_config_pro_count),
86 p_param3 => to_char(GMD_QC_MIG12.g_quality_config_upd_count),
87 p_param4 => to_char(GMD_QC_MIG12.g_quality_config_ins_count),
88 p_param5 => to_char(GMD_QC_MIG12.g_quality_config_err_count),
89 p_app_short_name => 'GMD');
90 END IF;
91
92 IF (p_progress_ind = 3) THEN
93 GMA_COMMON_LOGGING.gma_migration_central_log (
94 p_run_id => p_migration_run_id,
95 p_log_level => FND_LOG.LEVEL_EVENT,
96 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
97 p_context => 'Quality Setup',
98 p_token1 => 'TAB',
99 p_token2 => 'PRO',
100 p_token3 => 'UPD',
101 p_token4 => 'INS',
102 p_token5 => 'ERR',
103 p_param1 => 'gmd_sampling_plans_b',
104 p_param2 => to_char(GMD_QC_MIG12.g_sampling_plan_pro_count),
105 p_param3 => to_char(GMD_QC_MIG12.g_sampling_plan_upd_count),
106 p_param4 => 0,
107 p_param5 => to_char(GMD_QC_MIG12.g_sampling_plan_err_count),
108 p_app_short_name => 'GMD');
109 END IF;
110
111 END LOG_SETUP_COUNTS;
112
113 /*===========================================================================
114 -- PROCEDURE
115 -- log_sample_counts
116 --
117 -- DESCRIPTION:
118 -- This procedure logs the count totals for each sample table.
119 -- Only tables for which processing has started will be displayed.
120 -- This routine will be used by both general logging and when others logging.
121 --
122 -- PARAMETERS:
123 -- p_migration_run_id IN NUMBER - Migration id.
124 --
125 -- p_progress_ind IN NUMBER - Table sequence that has been
126 -- reached.
127 --
128 --=========================================================================== */
129
130 PROCEDURE LOG_SAMPLE_COUNTS
131 ( p_migration_run_id IN NUMBER,
132 p_progress_ind IN NUMBER) IS
133
134 BEGIN
135
136 IF (p_progress_ind = 1) THEN
137 GMA_COMMON_LOGGING.gma_migration_central_log (
138 p_run_id => p_migration_run_id,
139 p_log_level => FND_LOG.LEVEL_EVENT,
140 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
141 p_context => 'Quality Samples',
142 p_token1 => 'TAB',
143 p_token2 => 'PRO',
144 p_token3 => 'UPD',
145 p_token4 => 'INS',
146 p_token5 => 'ERR',
147 p_param1 => 'gmd_samples',
148 p_param2 => to_char(GMD_QC_MIG12.g_sample_pro_count),
149 p_param3 => to_char(GMD_QC_MIG12.g_sample_upd_count),
150 p_param4 => 0,
151 p_param5 => to_char(GMD_QC_MIG12.g_sample_err_count),
152 p_app_short_name => 'GMD');
153 END IF;
154
155 IF (p_progress_ind = 2) THEN
156 GMA_COMMON_LOGGING.gma_migration_central_log (
157 p_run_id => p_migration_run_id,
158 p_log_level => FND_LOG.LEVEL_EVENT,
159 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
160 p_context => 'Quality Samples',
161 p_token1 => 'TAB',
162 p_token2 => 'PRO',
163 p_token3 => 'UPD',
164 p_token4 => 'INS',
165 p_token5 => 'ERR',
166 p_param1 => 'gmd_sampling_events',
167 p_param2 => to_char(GMD_QC_MIG12.g_sample_event_pro_count),
168 p_param3 => to_char(GMD_QC_MIG12.g_sample_event_upd_count),
169 p_param4 => 0,
170 p_param5 => to_char(GMD_QC_MIG12.g_sample_event_err_count),
171 p_app_short_name => 'GMD');
172 END IF;
173
174 IF (p_progress_ind = 3) THEN
175 GMA_COMMON_LOGGING.gma_migration_central_log (
176 p_run_id => p_migration_run_id,
177 p_log_level => FND_LOG.LEVEL_EVENT,
178 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
179 p_context => 'Quality Samples',
180 p_token1 => 'TAB',
181 p_token2 => 'PRO',
182 p_token3 => 'UPD',
183 p_token4 => 'INS',
184 p_token5 => 'ERR',
185 p_param1 => 'gmd_results',
186 p_param2 => to_char(GMD_QC_MIG12.g_result_pro_count),
187 p_param3 => to_char(GMD_QC_MIG12.g_result_upd_count),
188 p_param4 => 0,
189 p_param5 => to_char(GMD_QC_MIG12.g_result_err_count),
190 p_app_short_name => 'GMD');
191 END IF;
192
193 END LOG_SAMPLE_COUNTS;
194
195 /*===========================================================================
196 -- PROCEDURE
197 -- log_spec_counts
198 --
199 -- DESCRIPTION:
200 -- This procedure logs the count totals for each specification table.
201 -- Only tables for which processing has started will be displayed.
202 -- This routine will be used by both general logging and when others logging.
203 --
204 -- PARAMETERS:
205 -- p_migration_run_id IN NUMBER - Migration id.
206 --
207 -- p_progress_ind IN NUMBER - Table sequence that has been
208 -- reached.
209 --
210 --=========================================================================== */
211
212 PROCEDURE LOG_SPEC_COUNTS
213 ( p_migration_run_id IN NUMBER,
214 p_progress_ind IN NUMBER) IS
215
216 BEGIN
217
218 IF (p_progress_ind = 1) THEN
219 GMA_COMMON_LOGGING.gma_migration_central_log (
220 p_run_id => p_migration_run_id,
221 p_log_level => FND_LOG.LEVEL_EVENT,
222 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
223 p_context => 'Quality Specifications',
224 p_token1 => 'TAB',
225 p_token2 => 'PRO',
226 p_token3 => 'UPD',
227 p_token4 => 'INS',
228 p_token5 => 'ERR',
229 p_param1 => 'gmd_specifications_b',
230 p_param2 => to_char(GMD_QC_MIG12.g_specs_pro_count),
231 p_param3 => to_char(GMD_QC_MIG12.g_specs_upd_count),
232 p_param4 => 0,
233 p_param5 => to_char(GMD_QC_MIG12.g_specs_err_count),
234 p_app_short_name => 'GMD');
235 END IF;
236
237 IF (p_progress_ind = 2) THEN
238 GMA_COMMON_LOGGING.gma_migration_central_log (
239 p_run_id => p_migration_run_id,
240 p_log_level => FND_LOG.LEVEL_EVENT,
241 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY',
242 p_context => 'Quality Specifications',
243 p_token1 => 'TAB',
244 p_token2 => 'PRO',
245 p_token3 => 'UPD',
246 p_token4 => 'INS',
247 p_token5 => 'ERR',
248 p_param1 => 'gmd_inventory_spec_vrs',
249 p_param2 => to_char(GMD_QC_MIG12.g_inv_spec_pro_count),
250 p_param3 => to_char(GMD_QC_MIG12.g_inv_spec_upd_count),
251 p_param4 => to_char(GMD_QC_MIG12.g_inv_spec_ins_count),
252 p_param5 => to_char(GMD_QC_MIG12.g_inv_spec_err_count),
253 p_app_short_name => 'GMD');
254 GMA_COMMON_LOGGING.gma_migration_central_log (
255 p_run_id => p_migration_run_id,
256 p_log_level => FND_LOG.LEVEL_EVENT,
257 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY2',
258 p_context => 'Quality Specifications',
259 p_token1 => 'TAB',
260 p_token2 => 'DEL',
261 p_param1 => 'gmd_inventory_spec_vrs',
262 p_param2 => to_char(GMD_QC_MIG12.g_inv_spec_del_count),
263 p_app_short_name => 'GMD');
264 END IF;
265
266 IF (p_progress_ind = 3) THEN
267 GMA_COMMON_LOGGING.gma_migration_central_log (
268 p_run_id => p_migration_run_id,
269 p_log_level => FND_LOG.LEVEL_EVENT,
270 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY',
271 p_context => 'Quality Specifications',
272 p_token1 => 'TAB',
273 p_token2 => 'PRO',
274 p_token3 => 'UPD',
275 p_token4 => 'INS',
276 p_token5 => 'ERR',
277 p_param1 => 'gmd_wip_spec_vrs',
278 p_param2 => to_char(GMD_QC_MIG12.g_wip_spec_pro_count),
279 p_param3 => to_char(GMD_QC_MIG12.g_wip_spec_upd_count),
280 p_param4 => to_char(GMD_QC_MIG12.g_wip_spec_ins_count),
281 p_param5 => to_char(GMD_QC_MIG12.g_wip_spec_err_count),
282 p_app_short_name => 'GMD');
283 GMA_COMMON_LOGGING.gma_migration_central_log (
284 p_run_id => p_migration_run_id,
285 p_log_level => FND_LOG.LEVEL_EVENT,
286 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY2',
287 p_context => 'Quality Specifications',
288 p_token1 => 'TAB',
289 p_token2 => 'DEL',
290 p_param1 => 'gmd_wip_spec_vrs',
291 p_param2 => to_char(GMD_QC_MIG12.g_wip_spec_del_count),
292 p_app_short_name => 'GMD');
293 END IF;
294
295 IF (p_progress_ind = 4) THEN
296 GMA_COMMON_LOGGING.gma_migration_central_log (
297 p_run_id => p_migration_run_id,
298 p_log_level => FND_LOG.LEVEL_EVENT,
299 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY',
300 p_context => 'Quality Specifications',
301 p_token1 => 'TAB',
302 p_token2 => 'PRO',
303 p_token3 => 'UPD',
304 p_token4 => 'INS',
305 p_token5 => 'ERR',
306 p_param1 => 'gmd_customer_spec_vrs',
307 p_param2 => to_char(GMD_QC_MIG12.g_cust_spec_pro_count),
308 p_param3 => to_char(GMD_QC_MIG12.g_cust_spec_upd_count),
309 p_param4 => to_char(GMD_QC_MIG12.g_cust_spec_ins_count),
310 p_param5 => to_char(GMD_QC_MIG12.g_cust_spec_err_count),
311 p_app_short_name => 'GMD');
312 GMA_COMMON_LOGGING.gma_migration_central_log (
313 p_run_id => p_migration_run_id,
314 p_log_level => FND_LOG.LEVEL_EVENT,
315 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY2',
316 p_context => 'Quality Specifications',
317 p_token1 => 'TAB',
318 p_token2 => 'DEL',
319 p_param1 => 'gmd_customer_spec_vrs',
320 p_param2 => to_char(GMD_QC_MIG12.g_cust_spec_del_count),
321 p_app_short_name => 'GMD');
322 END IF;
323
324 IF (p_progress_ind = 5) THEN
325 GMA_COMMON_LOGGING.gma_migration_central_log (
326 p_run_id => p_migration_run_id,
327 p_log_level => FND_LOG.LEVEL_EVENT,
328 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY',
329 p_context => 'Quality Specifications',
330 p_token1 => 'TAB',
331 p_token2 => 'PRO',
332 p_token3 => 'UPD',
333 p_token4 => 'INS',
334 p_token5 => 'ERR',
335 p_param1 => 'gmd_supplier_spec_vrs',
336 p_param2 => to_char(GMD_QC_MIG12.g_supl_spec_pro_count),
337 p_param3 => to_char(GMD_QC_MIG12.g_supl_spec_upd_count),
338 p_param4 => to_char(GMD_QC_MIG12.g_supl_spec_ins_count),
339 p_param5 => to_char(GMD_QC_MIG12.g_supl_spec_err_count),
340 p_app_short_name => 'GMD');
341 GMA_COMMON_LOGGING.gma_migration_central_log (
342 p_run_id => p_migration_run_id,
343 p_log_level => FND_LOG.LEVEL_EVENT,
344 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY2',
345 p_context => 'Quality Specifications',
346 p_token1 => 'TAB',
347 p_token2 => 'DEL',
348 p_param1 => 'gmd_supplier_spec_vrs',
349 p_param2 => to_char(GMD_QC_MIG12.g_supl_spec_del_count),
350 p_app_short_name => 'GMD');
351 END IF;
352
353 IF (p_progress_ind = 6) THEN
354 GMA_COMMON_LOGGING.gma_migration_central_log (
355 p_run_id => p_migration_run_id,
356 p_log_level => FND_LOG.LEVEL_EVENT,
357 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY',
358 p_context => 'Quality Specifications',
359 p_token1 => 'TAB',
360 p_token2 => 'PRO',
361 p_token3 => 'UPD',
362 p_token4 => 'INS',
363 p_token5 => 'ERR',
364 p_param1 => 'gmd_monitoring_spec_vrs',
365 p_param2 => to_char(GMD_QC_MIG12.g_mon_spec_pro_count),
366 p_param3 => to_char(GMD_QC_MIG12.g_mon_spec_upd_count),
367 p_param4 => to_char(GMD_QC_MIG12.g_mon_spec_ins_count),
368 p_param5 => to_char(GMD_QC_MIG12.g_mon_spec_err_count),
369 p_app_short_name => 'GMD');
370 GMA_COMMON_LOGGING.gma_migration_central_log (
371 p_run_id => p_migration_run_id,
372 p_log_level => FND_LOG.LEVEL_EVENT,
373 p_message_token => 'GMD_MIG_SPEC_TABLE_SUMMARY2',
374 p_context => 'Quality Specifications',
375 p_token1 => 'TAB',
376 p_token2 => 'DEL',
377 p_param1 => 'gmd_monitoring_spec_vrs',
378 p_param2 => to_char(GMD_QC_MIG12.g_mon_spec_del_count),
379 p_app_short_name => 'GMD');
380 END IF;
381
382 END LOG_SPEC_COUNTS;
383
384 /*===========================================================================
385 -- PROCEDURE
386 -- log_ss_counts
387 --
388 -- DESCRIPTION:
389 -- This procedure logs the count totals for each Stability Study table.
390 -- Only tables for which processing has started will be displayed.
391 -- This routine will be used by both general logging and when others logging.
392 --
393 -- PARAMETERS:
394 -- p_migration_run_id IN NUMBER - Migration id.
395 --
396 -- p_progress_ind IN NUMBER - Table sequence that has been
397 -- reached.
398 --
399 --=========================================================================== */
400
401 PROCEDURE LOG_SS_COUNTS
402 ( p_migration_run_id IN NUMBER,
403 p_progress_ind IN NUMBER) IS
404
405
406 BEGIN
407
408 IF (p_progress_ind = 1) THEN
409 GMA_COMMON_LOGGING.gma_migration_central_log (
410 p_run_id => p_migration_run_id,
411 p_log_level => FND_LOG.LEVEL_EVENT,
412 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
413 p_context => 'Quality Stability Studies',
414 p_token1 => 'TAB',
415 p_token2 => 'PRO',
416 p_token3 => 'UPD',
417 p_token4 => 'INS',
418 p_token5 => 'ERR',
419 p_param1 => 'gmd_storage_plan_details',
420 p_param2 => to_char(GMD_QC_MIG12.g_store_plan_pro_count),
421 p_param3 => to_char(GMD_QC_MIG12.g_store_plan_upd_count),
422 p_param4 => 0,
423 p_param5 => to_char(GMD_QC_MIG12.g_store_plan_err_count),
424 p_app_short_name => 'GMD');
425 END IF;
426
427 IF (p_progress_ind = 2) THEN
428 GMA_COMMON_LOGGING.gma_migration_central_log (
429 p_run_id => p_migration_run_id,
430 p_log_level => FND_LOG.LEVEL_EVENT,
431 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
432 p_context => 'Quality Stability Studies',
433 p_token1 => 'TAB',
434 p_token2 => 'PRO',
435 p_token3 => 'UPD',
436 p_token4 => 'INS',
437 p_token5 => 'ERR',
438 p_param1 => 'gmd_ss_stability_studies_b',
439 p_param2 => to_char(GMD_QC_MIG12.g_stab_pro_count),
440 p_param3 => to_char(GMD_QC_MIG12.g_stab_upd_count),
441 p_param4 => 0,
442 p_param5 => to_char(GMD_QC_MIG12.g_stab_err_count),
443 p_app_short_name => 'GMD');
444 END IF;
445
446 IF (p_progress_ind = 3) THEN
447 GMA_COMMON_LOGGING.gma_migration_central_log (
448 p_run_id => p_migration_run_id,
449 p_log_level => FND_LOG.LEVEL_EVENT,
450 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
451 p_context => 'Quality Stability Studies',
452 p_token1 => 'TAB',
453 p_token2 => 'PRO',
454 p_token3 => 'UPD',
455 p_token4 => 'INS',
456 p_token5 => 'ERR',
457 p_param1 => 'gmd_ss_material_sources',
458 p_param2 => to_char(GMD_QC_MIG12.g_matl_source_pro_count),
459 p_param3 => to_char(GMD_QC_MIG12.g_matl_source_upd_count),
460 p_param4 => 0,
461 p_param5 => to_char(GMD_QC_MIG12.g_matl_source_err_count),
462 p_app_short_name => 'GMD');
463 END IF;
464
465 IF (p_progress_ind = 4) THEN
466 GMA_COMMON_LOGGING.gma_migration_central_log (
467 p_run_id => p_migration_run_id,
468 p_log_level => FND_LOG.LEVEL_EVENT,
469 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
470 p_context => 'Quality Stability Studies',
471 p_token1 => 'TAB',
472 p_token2 => 'PRO',
473 p_token3 => 'UPD',
474 p_token4 => 'INS',
475 p_token5 => 'ERR',
476 p_param1 => 'gmd_ss_variants',
477 p_param2 => to_char(GMD_QC_MIG12.g_ss_variant_pro_count),
478 p_param3 => to_char(GMD_QC_MIG12.g_ss_variant_upd_count),
479 p_param4 => 0,
480 p_param5 => to_char(GMD_QC_MIG12.g_ss_variant_err_count),
481 p_app_short_name => 'GMD');
482 END IF;
483
484 IF (p_progress_ind = 5) THEN
485 GMA_COMMON_LOGGING.gma_migration_central_log (
486 p_run_id => p_migration_run_id,
487 p_log_level => FND_LOG.LEVEL_EVENT,
488 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
489 p_context => 'Quality Stability Studies',
490 p_token1 => 'TAB',
491 p_token2 => 'PRO',
492 p_token3 => 'UPD',
493 p_token4 => 'INS',
494 p_token5 => 'ERR',
495 p_param1 => 'gmd_ss_storage_package',
496 p_param2 => to_char(GMD_QC_MIG12.g_store_pack_pro_count),
497 p_param3 => to_char(GMD_QC_MIG12.g_store_pack_upd_count),
498 p_param4 => to_char(GMD_QC_MIG12.g_store_pack_ins_count),
499 p_param5 => to_char(GMD_QC_MIG12.g_store_pack_err_count),
500 p_app_short_name => 'GMD');
501 END IF;
502
503 IF (p_progress_ind = 6) THEN
504 GMA_COMMON_LOGGING.gma_migration_central_log (
505 p_run_id => p_migration_run_id,
506 p_log_level => FND_LOG.LEVEL_EVENT,
507 p_message_token => 'GMD_MIG_TABLE_SUMMARY',
508 p_context => 'Quality Stability Studies',
509 p_token1 => 'TAB',
510 p_token2 => 'PRO',
511 p_token3 => 'UPD',
512 p_token4 => 'INS',
513 p_token5 => 'ERR',
514 p_param1 => 'gmd_ss_storage_history',
515 p_param2 => to_char(GMD_QC_MIG12.g_ss_storehist_pro_count),
516 p_param3 => to_char(GMD_QC_MIG12.g_ss_storehist_upd_count),
517 p_param4 => 0,
518 p_param5 => to_char(GMD_QC_MIG12.g_ss_storehist_err_count),
519 p_app_short_name => 'GMD');
520 END IF;
521
522 END LOG_SS_COUNTS;
523
524
525
526 /*===========================================================================
527 -- FUNCTION:
528 -- get_profile_value
529 --
530 -- DESCRIPTION:
531 -- This function returns the System level profile value for a given profile.
532 -- Null is returned if the profile value is not found.
533 --
534 -- PARAMETERS:
535 -- p_profile_name IN VARCHAR2 - Profile Name
536 --
537 -- return OUT VARCHAR2 - Profile Value
538 --
539 --
540 --=========================================================================== */
541
542
543 FUNCTION GET_PROFILE_VALUE
544 ( p_profile_name IN VARCHAR2) RETURN VARCHAR2 IS
545
546
547 CURSOR get_profile IS
548 SELECT profile_option_value
549 FROM fnd_profile_options A, fnd_profile_option_values B
550 WHERE a.profile_option_id = b.profile_option_id
551 AND a.profile_option_name = p_profile_name
552 AND level_id = 10001;
553
554
555 l_profile_value fnd_profile_option_values.profile_option_value%TYPE;
556
557 BEGIN
558
559 OPEN get_profile;
560 FETCH get_profile INTO l_profile_value;
561 IF (get_profile%NOTFOUND) THEN
562 l_profile_value := NULL;
563 END IF;
564 CLOSE get_profile;
565
566 RETURN l_profile_value;
567
568 END GET_PROFILE_VALUE;
569
570
571 /*===========================================================================
572 -- FUNCTION:
573 -- get_status_id
574 --
575 -- DESCRIPTION:
576 -- This function uses a Status code and returns the status_id associated
577 -- with it. Returns null if status id not found.
578 --
579 -- PARAMETERS:
580 --
581 -- p_lot_status IN VARCHAR2 - OPM Lot Status
582 --
583 -- return OUT NUMBER - Lot Status Id.
584 --
585 --=========================================================================== */
586
587 FUNCTION GET_STATUS_ID
588 ( p_lot_status IN VARCHAR2) RETURN NUMBER IS
589
590
591 CURSOR get_status_id IS
592 SELECT status_id
593 FROM ic_lots_sts
594 WHERE lot_status = p_lot_status;
595
596 l_status_id ic_lots_sts.status_id%TYPE;
597
598 BEGIN
599
600 OPEN get_status_id;
601 FETCH get_status_id INTO l_status_id;
602 IF (get_status_id%NOTFOUND) THEN
603 l_status_id := NULL;
604 END IF;
605 CLOSE get_status_id;
606
607 RETURN l_status_id;
608
609 END GET_STATUS_ID;
610
611
612 /*===========================================================================
613 -- FUNCTION:
614 -- copy_text
615 --
616 -- DESCRIPTION:
617 -- This function clones the text records associated with a given Quality
618 -- text_code. The Header, Detail, and Translation records are created.
619 -- The text_code for the cloned text is returned.
620 --
621 -- PARAMETERS:
622 --
623 -- p_text_code IN NUMBER - Text Code to be Cloned.
624 -- p_migration_run_id IN NUMBER - Migration_Id.
625 --
626 -- return OUT NUMBER - Generated text code for new
627 -- text records.
628 --
629 --=========================================================================== */
630
631 FUNCTION COPY_TEXT
632 ( p_text_code IN NUMBER,
633 p_migration_run_id IN NUMBER) RETURN NUMBER IS
634
635
636 /*==============================
637 Cursor for Text Sequence.
638 ==============================*/
639
640 CURSOR get_next_text IS
641 select gem5_text_code_s.nextval from dual;
642
643 l_text_code NUMBER;
644 l_rowid VARCHAR2(200);
645
646 TEXT_SEQ_ERROR EXCEPTION;
647
648 /*==============================
649 Cursor for Text Details.
650 ==============================*/
651
652 CURSOR get_text_dtl IS
653 SELECT *
654 FROM qc_text_tbl
655 WHERE text_code = p_text_code;
656
657 l_text_rec qc_text_tbl%ROWTYPE;
658
659 BEGIN
660
661
662 OPEN get_next_text;
663 FETCH get_next_text INTO l_text_code;
664 IF (get_next_text%NOTFOUND) THEN
665 CLOSE get_next_text;
666 RAISE TEXT_SEQ_ERROR;
667 END IF;
668 CLOSE get_next_text;
669
670 /*====================================
671 Insert Text Header
672 ====================================*/
673
674 INSERT INTO qc_text_hdr
675 (
676 TEXT_CODE,
677 CREATED_BY,
678 CREATION_DATE,
679 LAST_UPDATED_BY,
680 LAST_UPDATE_DATE,
681 LAST_UPDATE_LOGIN
682 )
683 VALUES
684 (
685 l_text_code,
686 0,
687 SYSDATE,
688 0,
689 SYSDATE,
690 NULL
691 );
692
693
694 /*====================================
695 Insert qc_text_tbl.
696 ====================================*/
697
698 OPEN get_text_dtl;
699 FETCH get_text_dtl INTO l_text_rec;
700 WHILE get_text_dtl%FOUND LOOP
701 /*=============================
702 Insert a Copy.
703 =============================*/
704 INSERT INTO qc_text_tbl
705 (
706 TEXT_CODE,
707 LANG_CODE,
708 PARAGRAPH_CODE,
709 SUB_PARACODE,
710 LINE_NO,
711 LAST_UPDATED_BY,
712 CREATED_BY,
713 LAST_UPDATE_DATE,
714 CREATION_DATE,
715 LAST_UPDATE_LOGIN,
716 TEXT
717 )
718 VALUES
719 (
720 l_text_code,
721 l_text_rec.lang_code,
722 l_text_rec.paragraph_code,
723 l_text_rec.sub_paracode,
724 l_text_rec.line_no,
725 0,
726 0,
727 SYSDATE,
728 SYSDATE,
729 NULL,
730 l_text_rec.text
731 );
732
733 /*=============================
734 Insert to TL Table.
735 =============================*/
736
737 GMA_QC_TEXT_TBL_PKG.INSERT_ROW (
738 X_ROWID => l_rowid,
739 X_TEXT_CODE => l_text_code,
740 X_LANG_CODE => l_text_rec.lang_code,
741 X_PARAGRAPH_CODE => l_text_rec.paragraph_code,
742 X_SUB_PARACODE => l_text_rec.sub_paracode,
743 X_LINE_NO => l_text_rec.line_no,
744 X_TEXT => l_text_rec.text,
745 X_LAST_UPDATED_BY => 0,
746 X_CREATED_BY => 0,
747 X_LAST_UPDATE_DATE => SYSDATE,
748 X_CREATION_DATE => SYSDATE,
749 X_LAST_UPDATE_LOGIN => NULL);
750
751 FETCH get_text_dtl INTO l_text_rec;
752
753 END LOOP;
754 CLOSE get_text_dtl;
755
756
757 RETURN l_text_code;
758
759 EXCEPTION
760
761 WHEN TEXT_SEQ_ERROR THEN
762 GMA_COMMON_LOGGING.gma_migration_central_log (
763 p_run_id => p_migration_run_id,
764 p_log_level => FND_LOG.LEVEL_ERROR,
765 p_message_token => 'GMD_MIG_TEXT_SEQ_ERROR',
766 p_table_name => NULL,
767 p_context => 'Quality Text',
768 p_app_short_name => 'GMD');
769
770
771 END COPY_TEXT;
772
773 /*===========================================================================
774 -- PROCEDURE
775 -- get_whse_info
776 --
777 -- DESCRIPTION:
778 -- This procedure accepts a warehouse code and returns the organization_id
779 -- that it is assigned to. It also returns whether the whse is mapped as
780 -- a subinventory or not.
781 -- Returns null if whse_code not found.
782 --
783 -- PARAMETERS:
784 --
785 -- p_whse_code IN VARCHAR2 - Whse Code
786 -- x_organization_id OUT NUMBER - Organization_id
787 -- x_subinv_ind OUT VARCHAR2 - Subinventory Indicator
788 -- x_loct_ctl OUT NUMBER - Location Control Indicator
789 --
790 --=========================================================================== */
791
792 PROCEDURE GET_WHSE_INFO
793 ( p_whse_code IN VARCHAR2
794 , x_organization_id OUT NOCOPY NUMBER
795 , x_subinv_ind OUT NOCOPY VARCHAR2
796 , x_loct_ctl OUT NOCOPY NUMBER) IS
797
798 CURSOR get_whse_data IS
799 SELECT organization_id, subinventory_ind_flag, loct_ctl
800 FROM ic_whse_mst
801 WHERE whse_code = p_whse_code;
802
803 BEGIN
804
805 OPEN get_whse_data;
806 FETCH get_whse_data INTO x_organization_id, x_subinv_ind,
807 x_loct_ctl;
808 CLOSE get_whse_data;
809
810 END GET_WHSE_INFO;
811
812
813 /*===========================================================================
814 -- FUNCTION:
815 -- get_locator_id
816 --
817 -- DESCRIPTION:
818 -- This function uses Whse Code and Location to retrieve locator_id.
819 --
820 -- PARAMETERS:
821 --
822 -- p_whse_code IN VARCHAR2 - Warehouse Code
823 -- p_location IN VARCHAR2 - Location
824 --
825 -- p_locator_id OUT NUMBER - Locator Id
826 --
827 --=========================================================================== */
828
829 FUNCTION GET_LOCATOR_ID
830 ( p_whse_code IN VARCHAR2,
831 p_location IN VARCHAR2) RETURN NUMBER IS
832
833 CURSOR get_locator_id IS
834 SELECT locator_id
835 FROM ic_loct_mst
836 WHERE whse_code = p_whse_code
837 AND location = p_location;
838
839 l_locator_id ic_loct_mst.inventory_location_id%TYPE;
840
841 BEGIN
842
843 OPEN get_locator_id;
844 FETCH get_locator_id INTO l_locator_id;
845 CLOSE get_locator_id;
846
847 RETURN l_locator_id;
848
849 END GET_LOCATOR_ID;
850
851
852
853 /*===========================================================================
854 -- PROCEDURE
855 -- get_subinv_data
856 --
857 -- DESCRIPTION:
858 -- This procedure gets the subinventory data associated with a locator.
859 --
860 -- PARAMETERS:
861 --
862 -- p_locator_id IN NUMBER - Locator Id.
863 --
864 -- x_subinv OUT VARCHAR2 - Subinventory
865 --
866 -- x_sub_org_id OUT NUMBER - Organization Id associated with
867 -- subinventory.
868 --
869 --=========================================================================== */
870
871 PROCEDURE GET_SUBINV_DATA
872 ( p_locator_id IN NUMBER
873 , x_subinv OUT NOCOPY VARCHAR2
874 , x_sub_org_id OUT NOCOPY NUMBER)
875
876 IS
877
878 CURSOR get_subinv IS
879 SELECT subinventory_code, organization_id
880 FROM mtl_item_locations
881 WHERE inventory_location_id = p_locator_id;
882
883
884 BEGIN
885 OPEN get_subinv;
886 FETCH get_subinv INTO x_subinv, x_sub_org_id;
887 CLOSE get_subinv;
888
889 END GET_SUBINV_DATA;
890
891
892 -- Bug# 5569346
893 PROCEDURE CREATE_CONFIG_ROWS_FOR_WHSE(p_migration_run_id IN NUMBER, p_commit IN VARCHAR2) IS
894 CURSOR cur_whse_info IS
895 SELECT icw.whse_code, icw.orgn_code, icw.organization_id
896 FROM ic_whse_mst icw
897 WHERE ( icw.subinventory_ind_flag <> 'Y'
898 OR icw.subinventory_ind_flag IS NULL)
899 AND NOT EXISTS (SELECT organization_id
900 FROM gmd_quality_config
901 WHERE organization_id = icw.organization_id)
902 AND icw.organization_id IS NOT NULL;
903
904 CURSOR cur_orgn_config (p_orgn_code gmd_quality_config.orgn_code%TYPE) IS
905 SELECT qc.*
906 FROM gmd_quality_config qc, sy_orgn_mst m
907 WHERE m.orgn_code = p_orgn_code
908 AND m.organization_id = qc.organization_id;
909
910 l_config_rec cur_orgn_config%ROWTYPE;
911 BEGIN
912 FOR get_whse_info IN cur_whse_info LOOP
913
914 OPEN cur_orgn_config (get_whse_info.orgn_code);
915 FETCH cur_orgn_config INTO l_config_rec;
916 IF cur_orgn_config%FOUND THEN
917 INSERT INTO gmd_quality_config(
918 ORGN_CODE,
919 CONTROL_BATCH_STEP_IND,
920 CONTROL_LOT_ATTRIB_IND,
921 OUT_OF_SPEC_LOT_STATUS,
922 IN_SPEC_LOT_STATUS,
923 SAMPLE_INV_TRANS_IND,
924 API_ROUND_TRUN_IND,
925 LOT_OPTIONAL_ON_SAMPLE,
926 TEXT_CODE,
927 CREATION_DATE,
928 CREATED_BY,
929 LAST_UPDATED_BY,
930 LAST_UPDATE_DATE,
931 LAST_UPDATE_LOGIN,
932 INV_TRANS_REASON_CODE,
933 RESAMPLE_ACTION_CODE,
934 RETEST_ACTION_CODE,
935 CHOOSE_SPEC,
936 AUTO_SAMPLE_IND,
937 DELAYED_LOT_ENTRY,
938 ORGANIZATION_ID,
939 OUT_OF_SPEC_LOT_STATUS_ID,
940 IN_SPEC_LOT_STATUS_ID,
941 TRANSACTION_REASON_ID,
942 QUALITY_LAB_IND,
943 EXACT_SPEC_MATCH_IND,
944 INCLUDE_OPTIONAL_TEST_RSLT_IND,
945 SPEC_VERSION_CONTROL_IND,
946 SAMPLE_LAST_ASSIGNED,
947 SAMPLE_ASSIGNMENT_TYPE,
948 SS_ASSIGNMENT_TYPE,
949 SS_LAST_ASSIGNED,
950 MIGRATED_IND
951 )
952 VALUES (
953 NULL,
954 l_config_rec.CONTROL_BATCH_STEP_IND,
955 l_config_rec.CONTROL_LOT_ATTRIB_IND,
956 l_config_rec.OUT_OF_SPEC_LOT_STATUS,
957 l_config_rec.IN_SPEC_LOT_STATUS,
958 l_config_rec.SAMPLE_INV_TRANS_IND,
959 l_config_rec.API_ROUND_TRUN_IND,
960 l_config_rec.LOT_OPTIONAL_ON_SAMPLE,
961 NULL,
962 SYSDATE,
963 0,
964 0,
965 SYSDATE,
966 NULL,
967 l_config_rec.INV_TRANS_REASON_CODE,
968 l_config_rec.RESAMPLE_ACTION_CODE,
969 l_config_rec.RETEST_ACTION_CODE,
970 l_config_rec.CHOOSE_SPEC,
971 l_config_rec.AUTO_SAMPLE_IND,
972 l_config_rec.DELAYED_LOT_ENTRY,
973 get_whse_info.organization_id,
974 l_config_rec.OUT_OF_SPEC_LOT_STATUS_ID,
975 l_config_rec.IN_SPEC_LOT_STATUS_ID,
976 l_config_rec.TRANSACTION_REASON_ID,
977 l_config_rec.QUALITY_LAB_IND,
978 l_config_rec.EXACT_SPEC_MATCH_IND,
979 l_config_rec.INCLUDE_OPTIONAL_TEST_RSLT_IND,
980 l_config_rec.SPEC_VERSION_CONTROL_IND,
981 l_config_rec.SAMPLE_LAST_ASSIGNED,
982 l_config_rec.SAMPLE_ASSIGNMENT_TYPE,
983 l_config_rec.SS_ASSIGNMENT_TYPE,
984 l_config_rec.SS_LAST_ASSIGNED,
985 1
986 );
987
988 GMD_QC_MIG12.g_quality_config_ins_count := GMD_QC_MIG12.g_quality_config_ins_count + 1;
989
990 IF (p_commit = FND_API.G_TRUE) THEN
991 COMMIT;
992 END IF;
993
994 END IF;
995
996 CLOSE cur_orgn_config;
997 END LOOP;
998 EXCEPTION
999 WHEN OTHERS THEN
1000 GMA_COMMON_LOGGING.gma_migration_central_log (
1001 p_run_id => p_migration_run_id,
1002 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
1003 p_message_token => 'GMA_MIGRATION_DB_ERROR',
1004 p_context => 'Quality Setup - quality config ins',
1005 p_db_error => SQLERRM,
1006 p_app_short_name => 'GMA');
1007 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
1008
1009 END CREATE_CONFIG_ROWS_FOR_WHSE;
1010
1011
1012
1013
1014 /*===========================================================================
1015 -- PROCEDURE
1016 -- gmd_qc_migrate_setup
1017 --
1018 -- DESCRIPTION:
1019 -- This procedure migrates the Quality Setup data.
1020 --
1021 -- UPDATES:
1022 -- 11/18/2006
1023 -- 1) Changed context on error messages to be more specific.
1024 --
1025 -- PARAMETERS:
1026 --
1027 -- p_migration_run_id IN NUMBER - Migration Id.
1028 -- p_commit IN VARCHAR2 - Commit Flag
1029 --
1030 -- x_exception_count OUT NUMBER - Exception Count
1031 --
1032 -- The following columns will be migrated by the Common migration script.
1033 --
1034 -- gmd_test_methods_b - test_qty_uom
1035 -- gmd_quality_config - organization_id
1036 -- gmd_sampling_plans - sample_qty_uom
1037 -- gmd_uom_conversions - from_qty_uom
1038 -- gmd_uom_conversions - from_qty_uom_base
1039 -- gmd_uom_conversions - to_qty_uom
1040 -- gmd_uom_conversions - to_qty_uom_base
1041 --=========================================================================== */
1042
1043
1044 PROCEDURE GMD_QC_MIGRATE_SETUP
1045 ( p_migration_run_id IN NUMBER
1046 , p_commit IN VARCHAR2
1047 , x_exception_count OUT NOCOPY NUMBER)
1048
1049 IS
1050
1051 /*=============================
1052 Profile Value Placeholders
1053 =============================*/
1054
1055 l_lab_profile fnd_profile_option_values.profile_option_value%TYPE;
1056 P_exact_match fnd_profile_option_values.profile_option_value%TYPE;
1057 P_inc_opt fnd_profile_option_values.profile_option_value%TYPE;
1058 P_version_control fnd_profile_option_values.profile_option_value%TYPE;
1059
1060 /*=============================
1061 Exceptions
1062 =============================*/
1063
1064 DEFAULT_LAB_NULL EXCEPTION;
1065 NULL_DEF_ORGANIZATION_ID EXCEPTION;
1066 METHOD_ITEM_ERROR EXCEPTION;
1067
1068 MIG_NO_ORG EXCEPTION;
1069 REASON_CODE_ERROR EXCEPTION;
1070 IN_SPEC_ERROR EXCEPTION;
1071 OUT_SPEC_ERROR EXCEPTION;
1072 SMPL_DOC_ERROR EXCEPTION;
1073 STBL_DOC_ERROR EXCEPTION;
1074 GET_LAB_ERROR EXCEPTION;
1075 NO_NULL_RECORD EXCEPTION;
1076 CONFIG_INCOMPLETE EXCEPTION;
1077 CONFIG_FINAL_INCOMPLETE EXCEPTION;
1078 GET_ORGN_CODE_ERROR EXCEPTION;
1079 MIG_NO_UOM EXCEPTION;
1080 NEXT_TEST_METHOD EXCEPTION;
1081 NEXT_CONFIG_INSERT EXCEPTION;
1082
1083
1084 /*=========================
1085 Test Methods Cursor
1086 =========================*/
1087 -- 09/25/2005 added retrieve of existing inventory item id.
1088
1089 CURSOR get_test_methods IS
1090 SELECT test_method_id, test_kit_item_id, test_kit_inv_item_id,
1091 test_kit_organization_id
1092 FROM gmd_test_methods_b
1093 WHERE migrated_ind IS NULL;
1094
1095
1096 /*=========================
1097 Quality Config Cursor
1098 =========================*/
1099
1100 CURSOR get_quality_config IS
1101 SELECT *
1102 FROM gmd_quality_config
1103 WHERE orgn_code IS NOT NULL
1104 AND migrated_ind IS NULL;
1105
1106
1107 /*===========================
1108 Quality Config Null Cursor
1109 ===========================*/
1110
1111 CURSOR get_null_quality_config IS
1112 SELECT *
1113 FROM gmd_quality_config
1114 WHERE orgn_code IS NULL
1115 AND migrated_ind IS NULL
1116 AND organization_id IS NULL;
1117
1118 l_config_rec gmd_quality_config%ROWTYPE;
1119
1120
1121 /*================================
1122 Quality Config Migrated Check
1123 ================================*/
1124
1125 CURSOR check_config_mig IS
1126 SELECT count(1)
1127 FROM gmd_quality_config
1128 WHERE (orgn_code IS NOT NULL AND migrated_ind IS NULL);
1129
1130 l_config_mig_count NUMBER;
1131
1132 /*=========================
1133 Item Create parameters.
1134 =========================*/
1135
1136 l_inventory_item_id mtl_system_items.inventory_item_id%TYPE;
1137 l_failure_count NUMBER;
1138
1139 /*=========================
1140 Table of process orgs.
1141 =========================*/
1142
1143 TYPE T_orgtable IS TABLE OF NUMBER
1144 INDEX BY BINARY_INTEGER;
1145
1146 v_orgs T_orgtable;
1147
1148 /*======================================
1149 Cursor to get process orgs.
1150 Changed from mtl_parms to sy_orgn_mst
1151 ======================================*/
1152
1153 CURSOR get_process_org IS
1154 SELECT m.organization_id
1155 FROM sy_orgn_mst_b m
1156 WHERE NOT EXISTS
1157 (SELECT organization_id FROM gmd_quality_config WHERE organization_id = m.organization_id)
1158 AND m.organization_id IS NOT NULL;
1159
1160
1161 v_org sy_orgn_mst.organization_id%TYPE;
1162 l_org_count NUMBER;
1163
1164
1165 /*=================================
1166 General Placeholders.
1167 =================================*/
1168
1169 l_in_spec_status_id ic_lots_sts.status_id%TYPE;
1170 l_out_spec_status_id ic_lots_sts.status_id%TYPE;
1171
1172 l_reason_id NUMBER;
1173 l_text_code NUMBER;
1174
1175 /*=================================
1176 Cursor to get doc_seq and type
1177 =================================*/
1178
1179 CURSOR get_doc_info(v_orgn_code sy_docs_seq.orgn_code%TYPE, v_doc_type sy_docs_seq.doc_type%TYPE) IS
1180 SELECT assignment_type, last_assigned
1181 FROM sy_docs_seq
1182 WHERE doc_type = v_doc_type
1183 AND orgn_code = v_orgn_code;
1184
1185 l_smpl_assignment_type sy_docs_seq.assignment_type%TYPE;
1186 l_smpl_last_assigned sy_docs_seq.last_assigned%TYPE;
1187 l_stbl_assignment_type sy_docs_seq.assignment_type%TYPE;
1188 l_stbl_last_assigned sy_docs_seq.last_assigned%TYPE;
1189
1190 /*==================================
1191 Cursor to get Lab indicator.
1192 ==================================*/
1193
1194 CURSOR get_lab_info(p_orgn_code sy_orgn_mst.orgn_code%TYPE) IS
1195 SELECT plant_ind
1196 FROM sy_orgn_mst
1197 WHERE orgn_code = p_orgn_code;
1198
1199 d_lab_ind sy_orgn_mst.plant_ind%TYPE;
1200 l_lab_ind gmd_quality_config.quality_lab_ind%TYPE;
1201 l_organization_id sy_orgn_mst.organization_id%TYPE;
1202 l_test_org sy_orgn_mst.organization_id%TYPE;
1203
1204
1205 /*=======================================
1206 Cursor to get orgn_code.
1207 =======================================*/
1208
1209 -- Bug# 5438990
1210 -- changed column organization_code to orgn_code in the select statement
1211 CURSOR get_orgn_code(v_organization_id sy_orgn_mst.organization_id%TYPE) IS
1212 SELECT orgn_code
1213 FROM sy_orgn_mst
1214 WHERE organization_id = v_organization_id;
1215
1216 -- Bug# 5438990
1217 --l_orgn_code mtl_parameters.organization_code%TYPE;
1218 l_orgn_code sy_orgn_mst.orgn_code%TYPE;
1219
1220 /*=======================================
1221 Placeholders for Log Messages.
1222 =======================================*/
1223
1224 l_valfield VARCHAR2(80);
1225 l_value VARCHAR2(80);
1226 l_org_error sy_orgn_mst.organization_id%TYPE;
1227
1228
1229 /*=======================================
1230 Cursor to get config records.
1231 =======================================*/
1232
1233 CURSOR get_config IS
1234 SELECT *
1235 FROM gmd_quality_config
1236 WHERE migrated_ind = 1;
1237
1238
1239 /*=======================================
1240 Cursor to get whse orgn_code.
1241 =======================================*/
1242
1243 CURSOR get_whse_orgn (p_organization_id ic_whse_mst.organization_id%TYPE) IS
1244 SELECT orgn_code
1245 FROM ic_whse_mst
1246 WHERE subinventory_ind_flag = 'Y'
1247 AND mtl_organization_id = p_organization_id;
1248
1249 l_orig_orgn_code ic_whse_mst.orgn_code%TYPE;
1250
1251 /*=======================================
1252 Cursor to get config record.
1253 =======================================*/
1254
1255 CURSOR get_parent_config (p_orgn_code gmd_quality_config.orgn_code%TYPE) IS
1256 SELECT sample_assignment_type, sample_last_assigned
1257 FROM gmd_quality_config
1258 WHERE orgn_code = p_orgn_code;
1259
1260 l_p_assign_type gmd_quality_config.sample_assignment_type%TYPE;
1261 l_p_last_assign gmd_quality_config.sample_last_assigned%TYPE;
1262
1263 /*=======================================
1264 Cursor to get gmd_sampling_plans_b
1265 =======================================*/
1266
1267 CURSOR get_sampling_plan IS
1268 SELECT sampling_plan_id, frequency_type, frequency_per
1269 FROM gmd_sampling_plans_b
1270 WHERE migrated_ind IS NULL;
1271
1272 l_sample_plan get_sampling_plan%ROWTYPE;
1273 l_sampling_uom gmd_sampling_plans_b.frequency_per%TYPE;
1274
1275 /*=======================================
1276 Cursor to check if gmd_quality_config
1277 record exists.
1278 =======================================*/
1279
1280 CURSOR check_for_config(p_org_id NUMBER) IS
1281 SELECT organization_id
1282 FROM gmd_quality_config
1283 WHERE organization_id = p_org_id;
1284
1285 l_config_org NUMBER;
1286
1287 BEGIN
1288
1289 GMD_QC_MIG12.g_progress_ind := 0;
1290
1291 x_exception_count := 0;
1292
1293 /*==============================================
1294 Get Default Lab Type Profile Value
1295 ==============================================*/
1296
1297 l_lab_profile := GMD_QC_MIG12.GET_PROFILE_VALUE('GEMMS_DEFAULT_LAB_TYPE');
1298
1299 IF (l_lab_profile IS NULL) THEN
1300 RAISE DEFAULT_LAB_NULL;
1301 END IF;
1302
1303 /*================================================
1304 Log Lab Type Profile Value
1305 ================================================*/
1306
1307 l_valfield := 'GEMMS_DEFAULT_LAB_TYPE';
1308 l_value := NVL(l_lab_profile,' ');
1309
1310 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1311 GMA_COMMON_LOGGING.gma_migration_central_log (
1312 p_run_id => p_migration_run_id,
1313 p_log_level => FND_LOG.LEVEL_PROCEDURE,
1314 p_message_token => 'GMD_MIG_VALUE',
1315 p_context => 'Quality Setup',
1316 p_token1 => 'VALFIELD',
1317 p_token2 => 'VALUE',
1318 p_param1 => l_valfield,
1319 p_param2 => l_value,
1320 p_app_short_name => 'GMD');
1321 END IF;
1322
1323 /*====================================
1324 Get Organization id for Lab.
1325 ====================================*/
1326
1327
1328 l_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_lab_profile);
1329
1330
1331 IF (l_organization_id IS NULL) THEN
1332 RAISE NULL_DEF_ORGANIZATION_ID;
1333 END IF;
1334
1335
1336 /*==============================================
1337 Log Start of gmd_test_method migration.
1338 ==============================================*/
1339
1340 GMA_COMMON_LOGGING.gma_migration_central_log (
1341 p_run_id => p_migration_run_id,
1342 p_log_level => FND_LOG.LEVEL_EVENT,
1343 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
1344 p_table_name => 'GMD_QUALITY_CONFIG',
1345 p_token1 => 'TABLE_NAME',
1346 p_param1 => 'GMD_TEST_METHODS_B',
1347 p_context => 'Quality Setup',
1348 p_app_short_name => 'GMA');
1349
1350 GMD_QC_MIG12.g_progress_ind := 1;
1351
1352 /*================================================
1353 Loop through all test methods and assign
1354 inventory_item_id.
1355 ================================================*/
1356
1357 GMD_QC_MIG12.g_test_method_upd_count := 0;
1358 GMD_QC_MIG12.g_test_method_pro_count := 0;
1359 GMD_QC_MIG12.g_test_method_err_count := 0;
1360
1361
1362 FOR v_test_method IN get_test_methods LOOP
1363
1364 BEGIN -- subprogram
1365
1366 GMD_QC_MIG12.g_test_method_pro_count := GMD_QC_MIG12.g_test_method_pro_count + 1;
1367
1368 IF (v_test_method.test_kit_item_id IS NOT NULL) THEN
1369
1370 INV_OPM_ITEM_MIGRATION.GET_ODM_ITEM(
1371 P_MIGRATION_RUN_ID => p_migration_run_id,
1372 P_ITEM_ID => v_test_method.test_kit_item_id,
1373 P_ORGANIZATION_ID => l_organization_id,
1374 P_MODE => NULL,
1375 P_COMMIT => FND_API.G_TRUE,
1376 X_INVENTORY_ITEM_ID => l_inventory_item_id,
1377 X_FAILURE_COUNT => l_failure_count);
1378
1379 IF (l_failure_count > 0) THEN
1380 RAISE METHOD_ITEM_ERROR;
1381 END IF;
1382 l_test_org := l_organization_id;
1383 ELSE -- opm item is null
1384 /*====================================================
1385 If item is null then org should be null as well.
1386 If inventory_item exists leave it alone.
1387 ====================================================*/
1388 IF (v_test_method.test_kit_inv_item_id IS NOT NULL) THEN
1389 RAISE NEXT_TEST_METHOD;
1390 ELSE
1391 l_test_org := NULL;
1392 l_inventory_item_id := NULL;
1393 END IF;
1394 END IF;
1395
1396 UPDATE gmd_test_methods_b
1397 SET test_kit_inv_item_id = l_inventory_item_id,
1398 test_kit_organization_id = l_test_org,
1399 migrated_ind = 1
1400 WHERE test_method_id = v_test_method.test_method_id;
1401
1402 IF (p_commit = FND_API.G_TRUE) THEN
1403 COMMIT;
1404 END IF;
1405
1406 GMD_QC_MIG12.g_test_method_upd_count := GMD_QC_MIG12.g_test_method_upd_count + 1;
1407
1408 EXCEPTION
1409
1410 WHEN METHOD_ITEM_ERROR THEN
1411 GMA_COMMON_LOGGING.gma_migration_central_log (
1412 p_run_id => p_migration_run_id,
1413 p_log_level => FND_LOG.LEVEL_ERROR,
1414 p_message_token => 'GMD_MIG_INVALID_ITEM',
1415 p_context => 'Quality Setup - gmd_test_methods_b',
1416 p_token1 => 'ORG',
1417 p_token2 => 'ITEMID',
1418 p_token3 => 'ROWK',
1419 p_token4 => 'ROWV',
1420 p_param1 => to_char(l_organization_id),
1421 p_param2 => to_char(v_test_method.test_kit_item_id),
1422 p_param3 => 'TEST_METHOD_ID',
1423 p_param4 => to_char(v_test_method.test_method_id),
1424 p_app_short_name => 'GMD');
1425 GMD_QC_MIG12.g_test_method_err_count := GMD_QC_MIG12.g_test_method_err_count + 1;
1426 x_exception_count := x_exception_count + 1;
1427
1428 WHEN NEXT_TEST_METHOD THEN
1429 NULL;
1430
1431 WHEN OTHERS THEN
1432 GMA_COMMON_LOGGING.gma_migration_central_log (
1433 p_run_id => p_migration_run_id,
1434 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
1435 p_message_token => 'GMA_MIGRATION_DB_ERROR',
1436 p_context => 'Quality Setup - gmd_test_methods_b',
1437 p_db_error => SQLERRM,
1438 p_app_short_name => 'GMA');
1439 GMD_QC_MIG12.g_test_method_err_count := GMD_QC_MIG12.g_test_method_err_count + 1;
1440 x_exception_count := x_exception_count + 1;
1441
1442 END; -- subprogram
1443
1444 END LOOP;
1445
1446
1447 /*==============================================
1448 Log end of gmd_test_method migration.
1449 ==============================================*/
1450
1451 LOG_SETUP_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
1452
1453
1454 /*=========================================
1455 Migrate gmd_quality_config.
1456 First get profile values.
1457 =========================================*/
1458
1459 P_exact_match := GMD_QC_MIG12.GET_PROFILE_VALUE('QC$EXACTSPECMATCH');
1460
1461 /*================================================
1462 Log Exact Match Profile
1463 ================================================*/
1464
1465 l_valfield := 'QC$EXACTSPECMATCH';
1466 l_value := NVL(P_exact_match,' ');
1467
1468 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1469 GMA_COMMON_LOGGING.gma_migration_central_log (
1470 p_run_id => p_migration_run_id,
1471 p_log_level => FND_LOG.LEVEL_PROCEDURE,
1472 p_message_token => 'GMD_MIG_VALUE',
1473 p_context => 'Quality Setup',
1474 p_token1 => 'VALFIELD',
1475 p_token2 => 'VALUE',
1476 p_param1 => l_valfield,
1477 p_param2 => l_value,
1478 p_app_short_name => 'GMD');
1479 END IF;
1480
1481 IF (P_exact_match = 'N') THEN
1482 P_exact_match := NULL;
1483 END IF;
1484
1485 P_inc_opt := GMD_QC_MIG12.GET_PROFILE_VALUE('GMD_INCLUDE_OPTIONAL_TEST');
1486
1487 /*================================================
1488 Log Include Optional Test Profile
1489 ================================================*/
1490
1491 l_valfield := 'GMD_INCLUDE_OPTIONAL_TEST';
1492 l_value := NVL(P_inc_opt,' ');
1493
1494
1495 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1496 GMA_COMMON_LOGGING.gma_migration_central_log (
1497 p_run_id => p_migration_run_id,
1498 p_log_level => FND_LOG.LEVEL_PROCEDURE,
1499 p_message_token => 'GMD_MIG_VALUE',
1500 p_context => 'Quality Setup',
1501 p_token1 => 'VALFIELD',
1502 p_token2 => 'VALUE',
1503 p_param1 => l_valfield,
1504 p_param2 => l_value,
1505 p_app_short_name => 'GMD');
1506 END IF;
1507
1508 IF (P_inc_opt IS NULL) THEN
1509 P_inc_opt := 'Y';
1510 END IF;
1511 IF (P_inc_opt = 'N') THEN
1512 P_inc_opt := NULL;
1513 END IF;
1514
1515 P_version_control := GMD_QC_MIG12.GET_PROFILE_VALUE('GMD_OPERATION_VERSION_CONTROL');
1516
1517 /*================================================
1518 Log Operation Version Control Profile
1519 ================================================*/
1520
1521 l_valfield := 'GMD_OPERATION_VERSION_CONTROL';
1522 l_value := NVL(P_version_control,' ');
1523
1524 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level) THEN
1525 GMA_COMMON_LOGGING.gma_migration_central_log (
1526 p_run_id => p_migration_run_id,
1527 p_log_level => FND_LOG.LEVEL_PROCEDURE,
1528 p_message_token => 'GMD_MIG_VALUE',
1529 p_context => 'Quality Setup',
1530 p_token1 => 'VALFIELD',
1531 p_token2 => 'VALUE',
1532 p_param1 => l_valfield,
1533 p_param2 => l_value,
1534 p_app_short_name => 'GMD');
1535 END IF;
1536
1537 IF (P_version_control = 'N') THEN
1538 P_version_control := NULL;
1539 END IF;
1540
1541 /*==============================================
1542 Log Start of Quality Config Migration.
1543 ==============================================*/
1544
1545 GMA_COMMON_LOGGING.gma_migration_central_log (
1546 p_run_id => p_migration_run_id,
1547 p_log_level => FND_LOG.LEVEL_EVENT,
1548 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
1549 p_table_name => 'GMD_QUALITY_CONFIG',
1550 p_token1 => 'TABLE_NAME',
1551 p_param1 => 'GMD_QUALITY_CONFIG',
1552 p_context => 'Quality Setup',
1553 p_app_short_name => 'GMA');
1554
1555 /*==============================================
1556 Loop through gmd_quality_config. Handle
1557 records with org differently than the record
1558 where org is null. First pass gets
1559 non_null records.
1560 ==============================================*/
1561
1562 GMD_QC_MIG12.g_quality_config_upd_count :=0;
1563 GMD_QC_MIG12.g_quality_config_ins_count :=0;
1564 GMD_QC_MIG12.g_quality_config_pro_count :=0;
1565 GMD_QC_MIG12.g_quality_config_err_count :=0;
1566 GMD_QC_MIG12.g_progress_ind := 2;
1567
1568
1569 FOR v_qual_config IN get_quality_config LOOP
1570
1571 BEGIN -- start of subprogram
1572
1573
1574 GMD_QC_MIG12.g_quality_config_pro_count := GMD_QC_MIG12.g_quality_config_pro_count + 1;
1575
1576 /*=====================================
1577 Check if organization migrated.
1578 ======================================*/
1579
1580 IF (v_qual_config.organization_id IS NULL and v_qual_config.orgn_code IS NOT NULL) THEN
1581 RAISE MIG_NO_ORG;
1582 END IF;
1583
1584 l_organization_id := v_qual_config.organization_id;
1585
1586 /*=====================================
1587 Get Reason Id.
1588 =====================================*/
1589
1590 IF (v_qual_config.inv_trans_reason_code IS NULL) THEN
1591 l_reason_id := NULL;
1592 ELSE
1593 l_reason_id := GMA_MIGRATION_UTILS.GET_REASON_ID(v_qual_config.inv_trans_reason_code);
1594 IF (l_reason_id IS NULL) THEN
1595 RAISE REASON_CODE_ERROR;
1596 END IF;
1597 END IF;
1598
1599 /*=====================================
1600 Get Status Ids.
1601 =====================================*/
1602
1603 IF (v_qual_config.in_spec_lot_status IS NULL) THEN
1604 l_in_spec_status_id := NULL;
1605 ELSE
1606 l_in_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(v_qual_config.in_spec_lot_status);
1607 IF (l_in_spec_status_id IS NULL) THEN
1608 RAISE IN_SPEC_ERROR;
1609 END IF;
1610 END IF;
1611
1612 IF (v_qual_config.out_of_spec_lot_status IS NULL) THEN
1613 l_out_spec_status_id := NULL;
1614 ELSE
1615 l_out_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(v_qual_config.out_of_spec_lot_status);
1616 IF (l_out_spec_status_id IS NULL) THEN
1617 RAISE OUT_SPEC_ERROR;
1618 END IF;
1619 END IF;
1620
1621 /*=====================================
1622 Get document sequence info.
1623 =====================================*/
1624 OPEN get_doc_info(v_qual_config.orgn_code,'SMPL');
1625 FETCH get_doc_info INTO l_smpl_assignment_type, l_smpl_last_assigned;
1626 IF (get_doc_info%NOTFOUND) THEN
1627 l_smpl_assignment_type := 2;
1628 l_smpl_last_assigned := 1;
1629 END IF;
1630 CLOSE get_doc_info;
1631
1632 OPEN get_doc_info(v_qual_config.orgn_code,'STBL');
1633 FETCH get_doc_info INTO l_stbl_assignment_type, l_stbl_last_assigned;
1634 IF (get_doc_info%NOTFOUND) THEN
1635 l_stbl_assignment_type := 2;
1636 l_stbl_last_assigned := 1;
1637 END IF;
1638 CLOSE get_doc_info;
1639
1640 /*=====================================
1641 Get Lab information.
1642 =====================================--*/
1643
1644 OPEN get_lab_info(v_qual_config.orgn_code);
1645 FETCH get_lab_info INTO d_lab_ind;
1646 IF (get_lab_info%NOTFOUND) THEN
1647 CLOSE get_lab_info;
1648 RAISE GET_LAB_ERROR;
1649 END IF;
1650 CLOSE get_lab_info;
1651
1652
1653 IF (d_lab_ind = 2) THEN
1654 l_lab_ind := 'Y';
1655 ELSE
1656 l_lab_ind := NULL;
1657 END IF;
1658
1659 /*=====================================
1660 Update the Row.
1661 =====================================*/
1662
1663 UPDATE gmd_quality_config
1664 SET organization_id = l_organization_id,
1665 quality_lab_ind = l_lab_ind,
1666 transaction_reason_id = l_reason_id,
1667 in_spec_lot_status_id = l_in_spec_status_id,
1668 out_of_spec_lot_status_id = l_out_spec_status_id,
1669 exact_spec_match_ind = P_exact_match,
1670 include_optional_test_rslt_ind = P_inc_opt,
1671 spec_version_control_ind = P_version_control,
1672 sample_assignment_type = l_smpl_assignment_type,
1673 sample_last_assigned = l_smpl_last_assigned,
1674 ss_assignment_type = l_stbl_assignment_type,
1675 ss_last_assigned = l_stbl_last_assigned,
1676 migrated_ind = 1
1677 WHERE orgn_code = v_qual_config.orgn_code;
1678
1679 IF (p_commit = FND_API.G_TRUE) THEN
1680 COMMIT;
1681 END IF;
1682
1683 GMD_QC_MIG12.g_quality_config_upd_count := GMD_QC_MIG12.g_quality_config_upd_count + 1;
1684
1685 EXCEPTION
1686
1687 WHEN MIG_NO_ORG THEN
1688 GMA_COMMON_LOGGING.gma_migration_central_log (
1689 p_run_id => p_migration_run_id,
1690 p_log_level => FND_LOG.LEVEL_ERROR,
1691 p_message_token => 'GMD_MIG_NO_ORG',
1692 p_context => 'Quality Setup - quality config update',
1693 p_token1 => 'ORG',
1694 p_token2 => 'ONAME',
1695 p_token3 => 'ROWK',
1696 p_token4 => 'ROWV',
1697 p_param1 => v_qual_config.orgn_code,
1698 p_param2 => 'ORGN_CODE',
1699 p_param3 => 'ORGN_CODE',
1700 p_param4 => v_qual_config.orgn_code,
1701 p_app_short_name => 'GMD');
1702
1703 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
1704 x_exception_count := x_exception_count + 1;
1705
1706
1707 WHEN REASON_CODE_ERROR THEN
1708 GMA_COMMON_LOGGING.gma_migration_central_log (
1709 p_run_id => p_migration_run_id,
1710 p_log_level => FND_LOG.LEVEL_ERROR,
1711 p_message_token => 'GMD_MIG_REASON_ID',
1712 p_context => 'Quality Setup - quality config update',
1713 p_token1 => 'REASON',
1714 p_token2 => 'ROWK',
1715 p_token3 => 'ROWV',
1716 p_param1 => v_qual_config.inv_trans_reason_code,
1717 p_param2 => 'orgn_code',
1718 p_param3 => v_qual_config.orgn_code,
1719 p_app_short_name => 'GMD');
1720 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
1721 x_exception_count := x_exception_count + 1;
1722
1723 WHEN IN_SPEC_ERROR THEN
1724 GMA_COMMON_LOGGING.gma_migration_central_log (
1725 p_run_id => p_migration_run_id,
1726 p_log_level => FND_LOG.LEVEL_ERROR,
1727 p_message_token => 'GMD_MIG_STATUS_ID',
1728 p_context => 'Quality Setup - quality config update',
1729 p_token1 => 'STAT',
1730 p_token2 => 'ROWK',
1731 p_token3 => 'ROWV',
1732 p_param1 => v_qual_config.in_spec_lot_status,
1733 p_param2 => 'orgn_code',
1734 p_param3 => v_qual_config.orgn_code,
1735 p_app_short_name => 'GMD');
1736 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
1737 x_exception_count := x_exception_count + 1;
1738
1739 WHEN OUT_SPEC_ERROR THEN
1740 GMA_COMMON_LOGGING.gma_migration_central_log (
1741 p_run_id => p_migration_run_id,
1742 p_log_level => FND_LOG.LEVEL_ERROR,
1743 p_message_token => 'GMD_MIG_STATUS_ID',
1744 p_context => 'Quality Setup - quality config update',
1745 p_token1 => 'STAT',
1746 p_token2 => 'ROWK',
1747 p_token3 => 'ROWV',
1748 p_param1 => v_qual_config.out_of_spec_lot_status,
1749 p_param2 => 'orgn_code',
1750 p_param3 => v_qual_config.orgn_code,
1751 p_app_short_name => 'GMD');
1752 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
1753 x_exception_count := x_exception_count + 1;
1754
1755 WHEN GET_LAB_ERROR THEN
1756 GMA_COMMON_LOGGING.gma_migration_central_log (
1757 p_run_id => p_migration_run_id,
1758 p_log_level => FND_LOG.LEVEL_ERROR,
1759 p_message_token => 'GMD_MIG_GET_LAB',
1760 p_context => 'Quality Setup - quality config update',
1761 p_token1 => 'ORG',
1762 p_token2 => 'ROWK',
1763 p_token3 => 'ROWV',
1764 p_param1 => v_qual_config.orgn_code,
1765 p_param2 => 'orgn_code',
1766 p_param3 => v_qual_config.orgn_code,
1767 p_app_short_name => 'GMD');
1768 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
1769 x_exception_count := x_exception_count + 1;
1770
1771 WHEN OTHERS THEN
1772 GMA_COMMON_LOGGING.gma_migration_central_log (
1773 p_run_id => p_migration_run_id,
1774 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
1775 p_message_token => 'GMA_MIGRATION_DB_ERROR',
1776 p_context => 'Quality Setup - quality config update',
1777 p_db_error => SQLERRM,
1778 p_app_short_name => 'GMA');
1779 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
1780 x_exception_count := x_exception_count + 1;
1781
1782 END; -- end of subprogram
1783
1784
1785 END LOOP;
1786
1787
1788 /*=========================================
1789 Loop through gmd_quality_config. Handle
1790 record with null org. It will be
1791 unchanged but marked as migrated.
1792 =========================================*/
1793
1794
1795 BEGIN -- null subprogram
1796
1797 OPEN get_null_quality_config;
1798 FETCH get_null_quality_config INTO l_config_rec;
1799 IF (get_null_quality_config%NOTFOUND) THEN
1800 CLOSE get_null_quality_config;
1801 RAISE NO_NULL_RECORD;
1802 ELSE
1803 /*====================================
1804 Do not process the null record
1805 if existing gmd_quality_config row
1806 were not successfully migrated.
1807 ====================================*/
1808 GMD_QC_MIG12.g_quality_config_pro_count := GMD_QC_MIG12.g_quality_config_pro_count + 1;
1809 END IF;
1810
1811 CLOSE get_null_quality_config;
1812
1813 /*===========================================
1814 Get all process orgs that do not
1815 already have a row in gmd_quality_config.
1816 ===========================================*/
1817
1818 l_org_count := 0;
1819
1820 OPEN get_process_org;
1821 LOOP
1822 FETCH get_process_org INTO v_org;
1823 IF (get_process_org%NOTFOUND) THEN
1824 EXIT;
1825 ELSE
1826 l_org_count := l_org_count + 1;
1827 v_orgs(l_org_count) := v_org;
1828 END IF;
1829 END LOOP;
1830 CLOSE get_process_org;
1831
1832 l_org_count := 1;
1833
1834 /*========================================
1835 Populate the common fields if needed.
1836 ========================================*/
1837
1838 IF (v_orgs.EXISTS(l_org_count)) THEN
1839
1840 /*=====================================
1841 Get Reason Id.
1842 =====================================*/
1843
1844 IF (l_config_rec.inv_trans_reason_code IS NULL) THEN
1845 l_reason_id := NULL;
1846 ELSE
1847 l_reason_id := GMA_MIGRATION_UTILS.GET_REASON_ID(l_config_rec.inv_trans_reason_code);
1848 IF (l_reason_id IS NULL) THEN
1849 RAISE REASON_CODE_ERROR;
1850 END IF;
1851 END IF;
1852
1853 /*=====================================
1854 Get Status Ids.
1855 =====================================*/
1856
1857 IF (l_config_rec.in_spec_lot_status IS NULL) THEN
1858 l_in_spec_status_id := NULL;
1859 ELSE
1860 l_in_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(l_config_rec.in_spec_lot_status);
1861 IF (l_in_spec_status_id IS NULL) THEN
1862 RAISE IN_SPEC_ERROR;
1863 END IF;
1864 END IF;
1865
1866 IF (l_config_rec.out_of_spec_lot_status IS NULL) THEN
1867 l_out_spec_status_id := NULL;
1868 ELSE
1869 l_out_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(l_config_rec.out_of_spec_lot_status);
1870 IF (l_out_spec_status_id IS NULL) THEN
1871 RAISE OUT_SPEC_ERROR;
1872 END IF;
1873 END IF;
1874
1875 END IF;
1876
1877
1878 /*====================================
1879 Create a row for each process org.
1880 ====================================*/
1881
1882 LOOP
1883 BEGIN
1884 IF (v_orgs.EXISTS(l_org_count)) THEN
1885 /*======================================
1886 Verify that record don't exist.
1887 ======================================*/
1888 OPEN check_for_config(v_orgs(l_org_count));
1889 FETCH check_for_config INTO l_config_org;
1890 IF (check_for_config%FOUND) THEN
1891 CLOSE check_for_config;
1892 RAISE NEXT_CONFIG_INSERT;
1893 END IF;
1894 CLOSE check_for_config;
1895
1896 /*======================================
1897 Get the organization_code.
1898 ======================================*/
1899 OPEN get_orgn_code(v_orgs(l_org_count));
1900 FETCH get_orgn_code INTO l_orgn_code;
1901 IF (get_orgn_code%NOTFOUND) THEN
1902 CLOSE get_orgn_code;
1903 RAISE GET_ORGN_CODE_ERROR;
1904 ELSE
1905 l_organization_id := v_orgs(l_org_count);
1906 END IF;
1907 CLOSE get_orgn_code;
1908
1909 /*=================================
1910 Create Text Code if it exists.
1911 =================================*/
1912 IF (l_config_rec.text_code IS NOT NULL AND l_config_rec.text_code > 0) THEN
1913 l_text_code := GMD_QC_MIG12.COPY_TEXT(l_config_rec.text_code, p_migration_run_id);
1914 ELSE
1915 l_text_code := NULL;
1916 END IF;
1917
1918 /*=====================================
1919 Get Lab information.
1920 =====================================*/
1921
1922 IF (l_orgn_code IS NOT NULL) THEN
1923 OPEN get_lab_info(l_orgn_code);
1924 FETCH get_lab_info INTO d_lab_ind;
1925 IF (get_lab_info%NOTFOUND) THEN
1926 CLOSE get_lab_info;
1927 RAISE GET_LAB_ERROR;
1928 END IF;
1929 CLOSE get_lab_info;
1930
1931 IF (d_lab_ind = 2) THEN
1932 l_lab_ind := 'Y';
1933 ELSE
1934 l_lab_ind := NULL;
1935 END IF;
1936 ELSE
1937 l_lab_ind := NULL;
1938 END IF;
1939
1940 /*=====================================
1941 Get document sequence info.
1942 =====================================*/
1943 -- Bug# 5569346
1944 -- changed l_config_rec.orgn_code to l_orgn_code in the if condition and in the open cursor statement since l_config_rec.orgn_code is always null
1945 IF (l_orgn_code IS NOT NULL) THEN
1946 OPEN get_doc_info(l_orgn_code,'SMPL');
1947 FETCH get_doc_info INTO l_smpl_assignment_type, l_smpl_last_assigned;
1948 IF (get_doc_info%NOTFOUND) THEN
1949 l_smpl_assignment_type := 2;
1950 l_smpl_last_assigned := 1;
1951 END IF;
1952 CLOSE get_doc_info;
1953
1954 OPEN get_doc_info(l_orgn_code,'STBL');
1955 FETCH get_doc_info INTO l_stbl_assignment_type, l_stbl_last_assigned;
1956 IF (get_doc_info%NOTFOUND) THEN
1957 l_stbl_assignment_type := 2;
1958 l_stbl_last_assigned := 1;
1959 END IF;
1960 CLOSE get_doc_info;
1961 ELSE
1962 l_smpl_assignment_type := 2;
1963 l_smpl_last_assigned := 1;
1964 l_stbl_assignment_type := 2;
1965 l_stbl_last_assigned := 1;
1966 END IF;
1967
1968 INSERT INTO gmd_quality_config(
1969 ORGN_CODE,
1970 CONTROL_BATCH_STEP_IND,
1971 CONTROL_LOT_ATTRIB_IND,
1972 OUT_OF_SPEC_LOT_STATUS,
1973 IN_SPEC_LOT_STATUS,
1974 SAMPLE_INV_TRANS_IND,
1975 API_ROUND_TRUN_IND,
1976 LOT_OPTIONAL_ON_SAMPLE,
1977 TEXT_CODE,
1978 CREATION_DATE,
1979 CREATED_BY,
1980 LAST_UPDATED_BY,
1981 LAST_UPDATE_DATE,
1982 LAST_UPDATE_LOGIN,
1983 INV_TRANS_REASON_CODE,
1984 RESAMPLE_ACTION_CODE,
1985 RETEST_ACTION_CODE,
1986 CHOOSE_SPEC,
1987 AUTO_SAMPLE_IND,
1988 DELAYED_LOT_ENTRY,
1989 ORGANIZATION_ID,
1990 OUT_OF_SPEC_LOT_STATUS_ID,
1991 IN_SPEC_LOT_STATUS_ID,
1992 TRANSACTION_REASON_ID,
1993 QUALITY_LAB_IND,
1994 EXACT_SPEC_MATCH_IND,
1995 INCLUDE_OPTIONAL_TEST_RSLT_IND,
1996 SPEC_VERSION_CONTROL_IND,
1997 SAMPLE_LAST_ASSIGNED,
1998 SAMPLE_ASSIGNMENT_TYPE,
1999 SS_ASSIGNMENT_TYPE,
2000 SS_LAST_ASSIGNED,
2001 MIGRATED_IND
2002 )
2003 VALUES (
2004 NULL,
2005 l_config_rec.CONTROL_BATCH_STEP_IND,
2006 l_config_rec.CONTROL_LOT_ATTRIB_IND,
2007 l_config_rec.OUT_OF_SPEC_LOT_STATUS,
2008 l_config_rec.IN_SPEC_LOT_STATUS,
2009 l_config_rec.SAMPLE_INV_TRANS_IND,
2010 l_config_rec.API_ROUND_TRUN_IND,
2011 l_config_rec.LOT_OPTIONAL_ON_SAMPLE,
2012 l_text_code,
2013 SYSDATE,
2014 0,
2015 0,
2016 SYSDATE,
2017 NULL,
2018 l_config_rec.INV_TRANS_REASON_CODE,
2019 l_config_rec.RESAMPLE_ACTION_CODE,
2020 l_config_rec.RETEST_ACTION_CODE,
2021 l_config_rec.CHOOSE_SPEC,
2022 l_config_rec.AUTO_SAMPLE_IND,
2023 l_config_rec.DELAYED_LOT_ENTRY,
2024 l_organization_id,
2025 l_out_spec_status_id,
2026 l_in_spec_status_id,
2027 l_reason_id,
2028 l_lab_ind,
2029 P_exact_match,
2030 P_inc_opt,
2031 P_version_control,
2032 l_smpl_last_assigned,
2033 l_smpl_assignment_type,
2034 l_stbl_assignment_type,
2035 l_stbl_last_assigned,
2036 1
2037 );
2038
2039 GMD_QC_MIG12.g_quality_config_ins_count := GMD_QC_MIG12.g_quality_config_ins_count + 1;
2040
2041 IF (p_commit = FND_API.G_TRUE) THEN
2042 COMMIT;
2043 END IF;
2044 ELSE -- vorg dont exist.
2045 EXIT;
2046 END IF;
2047
2048
2049 EXCEPTION
2050 WHEN NEXT_CONFIG_INSERT THEN
2051 NULL;
2052
2053 WHEN GET_ORGN_CODE_ERROR THEN
2054 GMA_COMMON_LOGGING.gma_migration_central_log (
2055 p_run_id => p_migration_run_id,
2056 p_log_level => FND_LOG.LEVEL_ERROR,
2057 p_message_token => 'GMD_MIG_ORG_CODE',
2058 p_context => 'Quality Setup - quality config ins',
2059 p_token1 => 'ORGID',
2060 p_token2 => 'ROWK',
2061 p_token3 => 'ROWV',
2062 p_param1 => to_char(v_orgs(l_org_count)),
2063 p_param2 => 'orgn_code',
2064 p_param3 => l_config_rec.orgn_code,
2065 p_app_short_name => 'GMD');
2066 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
2067 x_exception_count := x_exception_count + 1;
2068
2069 WHEN GET_LAB_ERROR THEN
2070 GMA_COMMON_LOGGING.gma_migration_central_log (
2071 p_run_id => p_migration_run_id,
2072 p_log_level => FND_LOG.LEVEL_ERROR,
2073 p_message_token => 'GMD_MIG_GET_LAB',
2074 p_context => 'Quality Setup - quality config ins',
2075 p_token1 => 'ORG',
2076 p_token2 => 'ROWK',
2077 p_token3 => 'ROWV',
2078 p_param1 => l_orgn_code,
2079 p_param2 => 'orgn_code',
2080 p_param3 => l_orgn_code,
2081 p_app_short_name => 'GMD');
2082 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
2083 x_exception_count := x_exception_count + 1;
2084
2085 WHEN OTHERS THEN
2086 GMA_COMMON_LOGGING.gma_migration_central_log (
2087 p_run_id => p_migration_run_id,
2088 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
2089 p_message_token => 'GMA_MIGRATION_DB_ERROR',
2090 p_context => 'Quality Setup - quality config ins',
2091 p_db_error => SQLERRM,
2092 p_app_short_name => 'GMA');
2093 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
2094 x_exception_count := x_exception_count + 1;
2095
2096
2097 END; -- subprogram
2098
2099 l_org_count := l_org_count + 1;
2100
2101 END LOOP; -- process ops loop
2102
2103
2104 /*=====================================
2105 Update the Null Row if all config
2106 rows successfully migrated.
2107 =====================================*/
2108
2109 OPEN check_config_mig;
2110 FETCH check_config_mig INTO l_config_mig_count;
2111 CLOSE check_config_mig;
2112
2113 IF (l_config_mig_count = 0) THEN
2114
2115 UPDATE gmd_quality_config
2116 SET migrated_ind = 1
2117 WHERE orgn_code IS NULL and migrated_ind IS NULL;
2118
2119 IF (p_commit = FND_API.G_TRUE) THEN
2120 COMMIT;
2121 END IF;
2122 GMD_QC_MIG12.g_quality_config_upd_count := GMD_QC_MIG12.g_quality_config_upd_count + 1;
2123
2124 END IF;
2125
2126
2127 /*===========================================================
2128 Adjust document sequence information.
2129 Do this only when all config rows migrated successfully.
2130 Checks for subinventory rows. Find the orgn_code the
2131 subinv(whse) was originally mapped to. Get the doc sequence
2132 info for that orgn_code and overlay the information on the
2133 warehouse row.
2134 ===========================================================*/
2135
2136
2137 FOR l_config IN get_config LOOP
2138 /*======================================
2139 Get orgn_code for subinventories.
2140 ======================================*/
2141 l_orig_orgn_code := NULL;
2142 OPEN get_whse_orgn (l_config.organization_id);
2143 FETCH get_whse_orgn INTO l_orig_orgn_code;
2144 CLOSE get_whse_orgn;
2145 IF (l_orig_orgn_code IS NOT NULL) THEN
2146 OPEN get_parent_config (l_orig_orgn_code);
2147 FETCH get_parent_config INTO l_p_assign_type, l_p_last_assign;
2148 IF (get_parent_config%FOUND) THEN
2149 /*=================================
2150 Overlay the sample values.
2151 =================================*/
2152 UPDATE gmd_quality_config
2153 SET sample_assignment_type = l_p_assign_type,
2154 sample_last_assigned = l_p_last_assign
2155 WHERE organization_id = l_config.organization_id;
2156
2157 IF (p_commit = FND_API.G_TRUE) THEN
2158 COMMIT;
2159 END IF;
2160
2161 END IF;
2162 CLOSE get_parent_config;
2163 END IF;
2164
2165
2166 END LOOP; -- end of get_config;
2167
2168
2169 EXCEPTION
2170
2171 WHEN NO_NULL_RECORD THEN
2172 NULL;
2173
2174 WHEN CONFIG_INCOMPLETE THEN
2175 GMA_COMMON_LOGGING.gma_migration_central_log (
2176 p_run_id => p_migration_run_id,
2177 p_log_level => FND_LOG.LEVEL_ERROR,
2178 p_message_token => 'GMD_MIG_CONFIG_INCOMPLETE',
2179 p_context => 'Quality Setup - quality config ins',
2180 p_app_short_name => 'GMD');
2181 x_exception_count := x_exception_count + 1;
2182
2183 WHEN CONFIG_FINAL_INCOMPLETE THEN
2184 GMA_COMMON_LOGGING.gma_migration_central_log (
2185 p_run_id => p_migration_run_id,
2186 p_log_level => FND_LOG.LEVEL_ERROR,
2187 p_message_token => 'GMD_MIG_CONFIG_INCOMPLETE2',
2188 p_context => 'Quality Setup - quality config ins',
2189 p_app_short_name => 'GMD');
2190 x_exception_count := x_exception_count + 1;
2191
2192 WHEN REASON_CODE_ERROR THEN
2193 GMA_COMMON_LOGGING.gma_migration_central_log (
2194 p_run_id => p_migration_run_id,
2195 p_log_level => FND_LOG.LEVEL_ERROR,
2196 p_message_token => 'GMD_MIG_REASON_ID',
2197 p_context => 'Quality Setup - quality config ins',
2198 p_token1 => 'REASON',
2199 p_token2 => 'ROWK',
2200 p_token3 => 'ROWV',
2201 p_param1 => l_config_rec.inv_trans_reason_code,
2202 p_param2 => 'orgn_code',
2203 p_param3 => l_config_rec.orgn_code,
2204 p_app_short_name => 'GMD');
2205 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
2206 x_exception_count := x_exception_count + 1;
2207
2208 WHEN IN_SPEC_ERROR THEN
2209 GMA_COMMON_LOGGING.gma_migration_central_log (
2210 p_run_id => p_migration_run_id,
2211 p_log_level => FND_LOG.LEVEL_ERROR,
2212 p_message_token => 'GMD_MIG_STATUS_ID',
2213 p_context => 'Quality Setup - quality config ins',
2214 p_token1 => 'STAT',
2215 p_token2 => 'ROWK',
2216 p_token3 => 'ROWV',
2217 p_param1 => l_config_rec.in_spec_lot_status,
2218 p_param2 => 'orgn_code',
2219 p_param3 => l_config_rec.orgn_code,
2220 p_app_short_name => 'GMD');
2221 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
2222 x_exception_count := x_exception_count + 1;
2223
2224 WHEN OUT_SPEC_ERROR THEN
2225 GMA_COMMON_LOGGING.gma_migration_central_log (
2226 p_run_id => p_migration_run_id,
2227 p_log_level => FND_LOG.LEVEL_ERROR,
2228 p_message_token => 'GMD_MIG_STATUS_ID',
2229 p_context => 'Quality Setup - quality config ins',
2230 p_token1 => 'STAT',
2231 p_token2 => 'ROWK',
2232 p_token3 => 'ROWV',
2233 p_param1 => l_config_rec.out_of_spec_lot_status,
2234 p_param2 => 'orgn_code',
2235 p_param3 => l_config_rec.orgn_code,
2236 p_app_short_name => 'GMD');
2237 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
2238 x_exception_count := x_exception_count + 1;
2239
2240 WHEN OTHERS THEN
2241 GMA_COMMON_LOGGING.gma_migration_central_log (
2242 p_run_id => p_migration_run_id,
2243 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
2244 p_message_token => 'GMA_MIGRATION_DB_ERROR',
2245 p_context => 'Quality Setup - quality config ins',
2246 p_db_error => SQLERRM,
2247 p_app_short_name => 'GMA');
2248 GMD_QC_MIG12.g_quality_config_err_count := GMD_QC_MIG12.g_quality_config_err_count + 1;
2249 x_exception_count := x_exception_count + 1;
2250
2251 END; -- end of null subprogram
2252
2253 -- Bug# 5569346
2254 -- Creates the Quality config rows for warehouse (ic_whse_mst) rows
2255 create_config_rows_for_whse(p_migration_run_id, p_commit);
2256
2257 /*==============================================
2258 Log end of gmd_quality_config migration.
2259 ==============================================*/
2260 LOG_SETUP_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
2261
2262 /*==============================================
2263 Log Start of gmd_sampling_plan_b migration.
2264 ==============================================*/
2265
2266 GMA_COMMON_LOGGING.gma_migration_central_log (
2267 p_run_id => p_migration_run_id,
2268 p_log_level => FND_LOG.LEVEL_EVENT,
2269 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
2270 p_table_name => 'GMD_SAMPLING_PLAN_B',
2271 p_token1 => 'TABLE_NAME',
2272 p_param1 => 'GMD_SAMPLING_PLAN_B',
2273 p_context => 'Quality Setup',
2274 p_app_short_name => 'GMA');
2275
2276 GMD_QC_MIG12.g_progress_ind := 3;
2277
2278
2279 /*==============================================
2280 Loop through gmd_sampling_plans.
2281 Check that uom migrated and migrate uom for
2282 Quantity type plan.
2283 ==============================================*/
2284
2285 GMD_QC_MIG12.g_sampling_plan_upd_count :=0;
2286 GMD_QC_MIG12.g_sampling_plan_pro_count :=0;
2287 GMD_QC_MIG12.g_sampling_plan_err_count :=0;
2288
2289
2290 FOR l_sampling_plan IN get_sampling_plan LOOP
2291
2292 BEGIN -- subprogram
2293
2294 GMD_QC_MIG12.g_sampling_plan_pro_count := GMD_QC_MIG12.g_sampling_plan_pro_count + 1;
2295
2296 IF (l_sampling_plan.frequency_type = 'Q' and l_sampling_plan.frequency_per IS NOT NULL) THEN
2297 l_sampling_uom := GMA_MIGRATION_UTILS.get_uom_code(l_sampling_plan.frequency_per);
2298 IF (l_sampling_uom IS NULL) THEN
2299 RAISE MIG_NO_UOM;
2300 END IF;
2301 ELSE
2302 l_sampling_uom := l_sampling_plan.frequency_per; -- retain same value
2303 END IF;
2304
2305 UPDATE gmd_sampling_plans_b
2306 SET frequency_per = l_sampling_uom,
2307 migrated_ind = 1
2308 WHERE sampling_plan_id = l_sampling_plan.sampling_plan_id;
2309
2310 IF (p_commit = FND_API.G_TRUE) THEN
2311 COMMIT;
2312 END IF;
2313
2314 GMD_QC_MIG12.g_sampling_plan_upd_count := GMD_QC_MIG12.g_sampling_plan_upd_count + 1;
2315
2316 EXCEPTION
2317
2318 WHEN MIG_NO_UOM THEN
2319 GMA_COMMON_LOGGING.gma_migration_central_log (
2320 p_run_id => p_migration_run_id,
2321 p_log_level => FND_LOG.LEVEL_ERROR,
2322 p_message_token => 'GMD_MIG_NO_UOM',
2323 p_context => 'Quality Setup - gmd_sampling_plan',
2324 p_token1 => 'ROWK',
2325 p_token2 => 'ROWV',
2326 p_token3 => 'UM',
2327 p_param1 => 'SAMPLING_PLAN_ID',
2328 p_param2 => to_char(l_sampling_plan.sampling_plan_id),
2329 p_param3 => l_sampling_plan.frequency_per,
2330 p_app_short_name => 'GMD');
2331
2332 GMD_QC_MIG12.g_sampling_plan_err_count := GMD_QC_MIG12.g_sampling_plan_err_count + 1;
2333 x_exception_count := x_exception_count + 1;
2334
2335 WHEN OTHERS THEN
2336 GMA_COMMON_LOGGING.gma_migration_central_log (
2337 p_run_id => p_migration_run_id,
2338 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
2339 p_message_token => 'GMA_MIGRATION_DB_ERROR',
2340 p_context => 'Quality Setup - gmd_sampling_plan',
2341 p_db_error => SQLERRM,
2342 p_app_short_name => 'GMA');
2343 GMD_QC_MIG12.g_sampling_plan_err_count := GMD_QC_MIG12.g_sampling_plan_err_count + 1;
2344 x_exception_count := x_exception_count + 1;
2345
2346
2347 END; -- end subprogram
2348
2349 END LOOP;
2350
2351
2352 /*=================================
2353 Log sampling plan migration.
2354 =================================*/
2355 LOG_SETUP_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
2356
2357 RETURN;
2358
2359 EXCEPTION
2360
2361 WHEN DEFAULT_LAB_NULL THEN
2362 GMA_COMMON_LOGGING.gma_migration_central_log (
2363 p_run_id => p_migration_run_id,
2364 p_log_level => FND_LOG.LEVEL_ERROR,
2365 p_message_token => 'GMD_MIG_DEFAULT_LAB_NULL',
2366 p_context => 'Quality Setup - general',
2367 p_app_short_name => 'GMD');
2368
2369 x_exception_count := x_exception_count + 1;
2370
2371 WHEN NULL_DEF_ORGANIZATION_ID THEN
2372 GMA_COMMON_LOGGING.gma_migration_central_log (
2373 p_run_id => p_migration_run_id,
2374 p_log_level => FND_LOG.LEVEL_ERROR,
2375 p_message_token => 'GMD_MIG_NULL_DEF_ORG_ID',
2376 p_context => 'Quality Setup - general',
2377 p_token1 => 'ORG',
2378 p_param1 => l_lab_profile,
2379 p_app_short_name => 'GMD');
2380
2381 x_exception_count := x_exception_count + 1;
2382
2383 WHEN OTHERS THEN
2384
2385 LOG_SETUP_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
2386
2387 GMA_COMMON_LOGGING.gma_migration_central_log (
2388 p_run_id => p_migration_run_id,
2389 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
2390 p_message_token => 'GMA_MIGRATION_DB_ERROR',
2391 p_context => 'Quality Setup - general',
2392 p_db_error => SQLERRM,
2393 p_app_short_name => 'GMA');
2394
2395 x_exception_count := x_exception_count + 1;
2396
2397 END GMD_QC_MIGRATE_SETUP;
2398
2399
2400
2401 /*===========================================================================
2402 -- PROCEDURE
2403 -- gmd_qc_migrate_samples
2404 --
2405 -- DESCRIPTION:
2406 -- This procedure migrates the Quality Sample Data.
2407 --
2408 -- PARAMETERS:
2409 --
2410 -- p_migration_run_id IN NUMBER - Migration Id.
2411 -- p_commit IN VARCHAR2 - Commit Flag
2412 -- p_start_rowid IN ROWID
2413 -- p_end_rowid IN ROWID
2414 -- x_exception_count OUT NUMBER - Exception Count
2415 --
2416 -- The following columns will be migrated by the Common migration script.
2417 --
2418 -- gmd_samples organization_id
2419 -- gmd_samples lab_organization_id
2420 -- gmd_samples sample_qty_uom
2421 --===========================================================================
2422 -- plowe 02/08/2012 Bug 13025068/13685161
2423 -- make sure that if the sample is for a lot of sublot item where no
2424 -- sublots exist then make sure this code migrates the lot as per inventory migration.
2425 -- plowe 03/12/2012 Bug 13826138 - 180000+ ERRORS WITH MESSAGE_TOKEN AS
2426 -- GMI_MIG_NO_PARENT_LOT DURING OPM DATA TRANS
2427 -- changed code so as to have the effect of supressing these error messages
2428 -- 07/26/2012 PLOWE Bug 14355581 - LOT INFORMATION IN SAMPLE DIDNT GET MIGRATED PROPERLY
2429 -- changed GMD_QC_MIGRATE_SAMPLES code to initialize variables as , in certain cases , these were being used to populate samples
2430 */
2431
2432 PROCEDURE GMD_QC_MIGRATE_SAMPLES
2433 ( p_migration_run_id IN NUMBER
2434 , p_commit IN VARCHAR2
2435 , p_start_rowid IN ROWID
2436 , p_end_rowid IN ROWID
2437 , x_exception_count OUT NOCOPY NUMBER)
2438
2439 IS
2440
2441 /*=======================
2442 Exceptions
2443 =======================*/
2444 MIG_NO_ORG EXCEPTION;
2445 MIG_NO_LAB_ORG EXCEPTION;
2446 MIG_WHSE_ERROR EXCEPTION;
2447 MIG_SUBINV_MISMATCH EXCEPTION;
2448 MIG_NON_LOC_FAIL EXCEPTION;
2449 MIG_LOCATOR_ID EXCEPTION;
2450 MIG_SUBINV_ERROR EXCEPTION;
2451 MIG_STORE_WHSE_ERROR EXCEPTION;
2452 MIG_STORE_NON_LOC_ERROR EXCEPTION;
2453 MIG_STORE_LOCATOR_ID EXCEPTION;
2454 MIG_ODM_ITEM EXCEPTION;
2455 MIG_OPM_ITEM EXCEPTION;
2456 MIG_LOT_ERROR EXCEPTION;
2457 MIG_GET_SAMPLE_ERROR EXCEPTION;
2458 NEXTRESULT EXCEPTION;
2459 -- Bug# 5261810
2460 MIG_SOURCE_WHSE_ERROR EXCEPTION;
2461 MIG_SOURCE_NON_LOC_ERROR EXCEPTION;
2462 MIG_SOURCE_LOCATOR_ID EXCEPTION;
2463 MIG_SOURCE_SUBINV_ERROR EXCEPTION;
2464
2465
2466 /*==============================
2467 Cursor for gmd_samples.
2468 Added organization id to exclude
2469 records added post-migration in
2470 case migration is erroneously
2471 rerun again.
2472 ==============================*/
2473
2474 -- Bug# 5108963
2475 -- Removed organization_id IS NULL from the where clause and added orgn_code IS NOT NULL.
2476 CURSOR get_samples IS
2477 SELECT *
2478 FROM gmd_samples
2479 WHERE rowid BETWEEN p_start_rowid AND p_end_rowid AND -- Bug 14198664 support ad_parallel
2480 migrated_ind IS NULL AND
2481 orgn_code IS NOT NULL;
2482
2483
2484 /*==============================
2485 Placeholders.
2486 ==============================*/
2487
2488 l_organization_id gmd_samples.organization_id%TYPE;
2489 l_lab_organization_id gmd_samples.organization_id%TYPE;
2490 l_subinventory mtl_item_locations.subinventory_code%TYPE;
2491 l_subinv_ind ic_whse_mst.subinventory_ind_flag%TYPE;
2492 l_locator_id ic_loct_mst.inventory_location_id%TYPE;
2493 l_subinv mtl_item_locations.subinventory_code%TYPE;
2494 lsub_organization_id mtl_item_locations.organization_id%TYPE;
2495 ls_organization_id mtl_item_locations.organization_id%TYPE;
2496 l_loct_ctl ic_whse_mst.loct_ctl%TYPE;
2497 l_store_loct_ctl ic_whse_mst.loct_ctl%TYPE;
2498 l_inventory_item_id gmd_samples.inventory_item_id%TYPE;
2499 l_storage_org_id gmd_samples.storage_organization_id%TYPE;
2500 l_storage_locator_id gmd_samples.storage_locator_id%TYPE;
2501 l_store_subinv gmd_samples.storage_subinventory%TYPE;
2502 l_store_subinv_ind ic_whse_mst.subinventory_ind_flag%TYPE;
2503 l_parent_lot_number gmd_samples.parent_lot_number%TYPE;
2504 l_lot_number gmd_samples.lot_number%TYPE;
2505 l_get_parent_only NUMBER := 0;
2506 l_failure_count NUMBER;
2507
2508 -- Bug# 5261810
2509 l_org_id NUMBER;
2510 l_material_detail_id NUMBER;
2511 l_source_org_id gmd_samples.organization_id%TYPE;
2512 l_source_subinv_ind ic_whse_mst.subinventory_ind_flag%TYPE;
2513 l_source_loct_ctl ic_whse_mst.loct_ctl%TYPE;
2514 l_source_subinv gmd_samples.source_subinventory%TYPE;
2515 l_source_locator_id ic_loct_mst.inventory_location_id%TYPE;
2516 l_source_subinv_loc mtl_item_locations.subinventory_code%TYPE;
2517 l_src_sub_organization_id mtl_item_locations.organization_id%TYPE;
2518
2519
2520 CURSOR get_item_data (v_item_id ic_item_mst.item_id%TYPE) IS
2521 SELECT sublot_ctl
2522 FROM ic_item_mst_b
2523 WHERE item_id = v_item_id;
2524
2525 l_sublot_ctl ic_item_mst_b.sublot_ctl%TYPE;
2526
2527 -- cursor modified while fixing bug 14198664
2528 CURSOR get_sampling_event IS
2529 SELECT gse.sampling_event_id
2530 FROM gmd_sampling_events gse , gmd_samples gs
2531 WHERE gse.migrated_ind IS NULL
2532 AND gs.sampling_event_id = gse.sampling_event_id
2533 and gs.rowid between p_start_rowid and p_end_rowid;
2534
2535
2536
2537 -- 12/09/2005
2538
2539 -- Bug# 5261810
2540 -- Added org_id and material_detail_id
2541 CURSOR get_sample_data(v_sampling_event_id gmd_samples.sampling_event_id%TYPE) IS
2542 SELECT organization_id, inventory_item_id, revision, lot_number,
2543 subinventory, locator_id, parent_lot_number, org_id, material_detail_id
2544 FROM gmd_samples
2545 WHERE sampling_event_id = v_sampling_event_id
2546 AND rowid BETWEEN p_start_rowid AND p_end_rowid
2547 AND (migrated_ind = 1 OR organization_id IS NOT NULL);
2548
2549 -- 13685161
2550 CURSOR get_lot (v_item_id ic_item_mst.item_id%TYPE ,v_lot_no ic_lots_mst.lot_no%TYPE ) IS
2551 SELECT lot_no, sublot_no
2552 FROM ic_lots_mst
2553 WHERE item_id = v_item_id
2554 and lot_no = v_lot_no
2555 ORDER BY sublot_no desc;
2556
2557
2558 -- 13826138
2559 CURSOR get_parent_lot_number_mig (v_item_id ic_item_mst.item_id%TYPE ,v_lot_no
2560 ic_lots_mst.lot_no%TYPE ) IS
2561 SELECT parent_lot_number
2562 FROM ic_lots_mst_mig
2563 WHERE migrated_ind = 1
2564 and item_id = v_item_id
2565 and parent_lot_number = v_lot_no;
2566
2567 l_lot_no varchar2(32);
2568 l_sublot_no varchar2(32);
2569
2570
2571 l_samp_data get_sample_data%ROWTYPE;
2572
2573
2574
2575 BEGIN
2576
2577 x_exception_count := 0;
2578 GMD_QC_MIG12.g_progress_ind := 0;
2579
2580 /*==============================================
2581 Log Start of gmd_samples migration.
2582 ==============================================*/
2583
2584 GMA_COMMON_LOGGING.gma_migration_central_log (
2585 p_run_id => p_migration_run_id,
2586 p_log_level => FND_LOG.LEVEL_EVENT,
2587 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
2588 p_table_name => 'GMD_SAMPLES',
2589 p_token1 => 'TABLE_NAME',
2590 p_param1 => 'GMD_SAMPLES',
2591 p_context => 'Quality Samples',
2592 p_app_short_name => 'GMA');
2593
2594 /*=======================================
2595 Migrate gmd_samples.
2596 =======================================*/
2597
2598 GMD_QC_MIG12.g_sample_upd_count := 0;
2599 Gmd_Qc_Mig12.G_Sample_Err_Count := 0;
2600 GMD_QC_MIG12.g_sample_pro_count := 0;
2601 GMD_QC_MIG12.g_progress_ind := 1;
2602
2603 FOR v_samp_rec IN get_samples LOOP
2604
2605 BEGIN -- start sample subprogram
2606 L_lot_number :=null; -- 14355581
2607 l_parent_lot_number := null; -- 14355581
2608 l_organization_id := null; -- 14355581
2609 l_lab_organization_id := null; -- 14355581
2610
2611 GMD_QC_MIG12.g_sample_pro_count := GMD_QC_MIG12.g_sample_pro_count + 1;
2612
2613 /*======================================
2614 Get Organization ID.
2615 ======================================*/
2616 IF (v_samp_rec.orgn_code IS NOT NULL) THEN
2617 l_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(v_samp_rec.orgn_code);
2618 IF (l_organization_id IS NULL) THEN
2619 RAISE MIG_NO_ORG;
2620 END IF;
2621 ELSE
2622 l_organization_id := NULL;
2623 END IF;
2624
2625 IF (v_samp_rec.qc_lab_orgn_code IS NOT NULL) THEN
2626 l_lab_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(v_samp_rec.qc_lab_orgn_code);
2627 IF (l_lab_organization_id IS NULL) THEN
2628 RAISE MIG_NO_LAB_ORG;
2629 END IF;
2630 ELSE
2631 l_lab_organization_id := NULL;
2632 END IF;
2633
2634
2635 /*==========================
2636 Get Organization id.
2637 ===========================*/
2638 IF (l_organization_id IS NOT NULL) THEN
2639 /*========================
2640 Get Subinventory.
2641 ========================*/
2642 IF (v_samp_rec.whse_code IS NOT NULL) THEN
2643 GMD_QC_MIG12.GET_WHSE_INFO(
2644 v_samp_rec.whse_code,
2645 ls_organization_id,
2646 l_subinv_ind,
2647 l_loct_ctl);
2648
2649 IF (ls_organization_id IS NULL) THEN
2650 RAISE MIG_WHSE_ERROR;
2651 END IF;
2652
2653 /*==========================================
2654 If Whse code is subinventory and
2655 org differs from org mapped then
2656 flag as an error.
2657 ==========================================*/
2658
2659 IF (l_subinv_ind = 'Y') THEN
2660 IF (ls_organization_id <> l_organization_id) THEN
2661 /*=========================================
2662 Log error and do not migrate.
2663 =========================================*/
2664 RAISE MIG_SUBINV_MISMATCH;
2665 END IF;
2666 ELSE
2667 l_organization_id := ls_organization_id;
2668 END IF;
2669 l_subinventory := v_samp_rec.whse_code;
2670
2671 /*=========================
2672 Get Locator Id.
2673 =========================*/
2674 IF (v_samp_rec.location IS NOT NULL) THEN
2675 IF (v_samp_rec.location = 'NONE') THEN
2676 l_locator_id := NULL;
2677 ELSE
2678 l_locator_id := GMD_QC_MIG12.GET_LOCATOR_ID(v_samp_rec.whse_code, v_samp_rec.location);
2679 IF (l_locator_id IS NULL) THEN
2680 IF (l_loct_ctl = 2) THEN
2681 /*======================================
2682 Create a Non-validated location.
2683 ======================================*/
2684
2685 SAVEPOINT SAMPLELOC;
2686
2687 INV_MIGRATE_PROCESS_ORG.CREATE_LOCATION (
2688 p_migration_run_id => p_migration_run_id,
2689 p_organization_id => l_organization_id,
2690 p_subinventory_code => l_subinventory,
2691 p_location => v_samp_rec.location,
2692 p_loct_desc => v_samp_rec.location,
2693 p_start_date_active => SYSDATE,
2694 p_commit => p_commit,
2695 x_location_id => l_locator_id,
2696 x_failure_count => l_failure_count);
2697 IF (l_failure_count > 0) THEN
2698 RAISE MIG_NON_LOC_FAIL;
2699 END IF;
2700 ELSE
2701 RAISE MIG_LOCATOR_ID;
2702 END IF; -- IF (l_loct_ctl = 2) THEN
2703
2704 ELSE -- locator found, not created.
2705
2706 /*==============================================
2707 Get Subinv associated with
2708 Locator. Check to see if the subinventory
2709 associated with the locator matches the
2710 subinventory code already assigned.
2711 ==============================================*/
2712
2713 GMD_QC_MIG12.GET_SUBINV_DATA(l_locator_id,
2714 l_subinv,
2715 lsub_organization_id);
2716
2717 IF (lsub_organization_id IS NULL) THEN
2718 RAISE MIG_SUBINV_ERROR;
2719 END IF;
2720
2721 IF (l_subinv <> l_subinventory) THEN
2722 /*===================================================
2723 Overlay the subinv with the one from the locator.
2724 ===================================================*/
2725 l_subinventory := l_subinv;
2726 END IF;
2727 END IF; -- locator found
2728 END IF; -- none location
2729 ELSE -- location is null
2730 l_locator_id := NULL;
2731 END IF;
2732 ELSE
2733 l_subinventory := NULL;
2734 l_locator_id := NULL;
2735 END IF; -- whse code is null
2736
2737 ELSE -- org is null
2738 l_organization_id := NULL;
2739 l_subinventory := NULL;
2740 l_locator_id := NULL;
2741 END IF; --orgn_code is null.
2742
2743
2744 /*=================================================
2745 Get Storage Organization id and Subinventory.
2746 =================================================*/
2747
2748 IF (v_samp_rec.storage_whse IS NOT NULL) THEN
2749 GMD_QC_MIG12.GET_WHSE_INFO (
2750 p_whse_code => v_samp_rec.storage_whse,
2751 x_organization_id => l_storage_org_id,
2752 x_subinv_ind => l_store_subinv_ind,
2753 x_loct_ctl => l_store_loct_ctl);
2754
2755 IF (l_storage_org_id IS NULL) THEN
2756 RAISE MIG_STORE_WHSE_ERROR;
2757 END IF;
2758
2759 l_store_subinv := v_samp_rec.storage_whse;
2760
2761 /*==============================
2762 Get Storage Locator Id.
2763 ==============================*/
2764
2765 IF (v_samp_rec.storage_location IS NOT NULL) THEN
2766 IF (v_samp_rec.storage_location = 'NONE') THEN
2767 l_storage_locator_id := NULL;
2768 ELSE
2769 l_storage_locator_id := GMD_QC_MIG12.GET_LOCATOR_ID(v_samp_rec.storage_whse, v_samp_rec.storage_location);
2770 IF (l_storage_locator_id IS NULL) THEN
2771 IF (l_loct_ctl = 2) THEN
2772 /*======================================
2773 Create a Non-validated location.
2774 ======================================*/
2775 SAVEPOINT SAMPLESTORELOC;
2776 INV_MIGRATE_PROCESS_ORG.CREATE_LOCATION (
2777 p_migration_run_id => p_migration_run_id,
2778 p_organization_id => l_storage_org_id,
2779 p_subinventory_code => l_store_subinv,
2780 p_location => v_samp_rec.storage_location,
2781 p_loct_desc => v_samp_rec.storage_location,
2782 p_start_date_active => SYSDATE,
2783 p_commit => p_commit,
2784 x_location_id => l_storage_locator_id,
2785 x_failure_count => l_failure_count);
2786
2787 IF (l_failure_count > 0) THEN
2788 RAISE MIG_STORE_NON_LOC_ERROR;
2789 END IF;
2790 ELSE
2791 RAISE MIG_STORE_LOCATOR_ID;
2792 END IF;
2793 ELSE --location is null
2794 l_storage_locator_id := NULL;
2795 END IF;
2796 END IF; -- location is none;
2797 END IF; -- location is none.
2798 ELSE -- whse is null
2799 l_storage_org_id := NULL;
2800 l_store_subinv := NULL;
2801 l_storage_locator_id := NULL;
2802 END IF;
2803
2804 -- BEGIN Bug# 5261810
2805 -- Added code to get subinventory and locator information for source_whse and source_location
2806 /*=================================================
2807 Get Source Organization id and Subinventory.
2808 =================================================*/
2809 IF (v_samp_rec.source_whse IS NOT NULL) THEN
2810 gmd_qc_mig12.get_whse_info (p_whse_code => v_samp_rec.source_whse
2811 , x_organization_id => l_source_org_id
2812 , x_subinv_ind => l_source_subinv_ind
2813 , x_loct_ctl => l_source_loct_ctl);
2814
2815 IF (l_source_org_id IS NULL) THEN
2816 RAISE mig_source_whse_error;
2817 END IF;
2818
2819 l_source_subinv := v_samp_rec.source_whse;
2820
2821 /*==============================
2822 Get Source Locator Id.
2823 ==============================*/
2824 IF (v_samp_rec.source_location IS NOT NULL) THEN
2825 IF (v_samp_rec.source_location = 'NONE') THEN
2826 l_source_locator_id := NULL;
2827 ELSE
2828 l_source_locator_id :=
2829 gmd_qc_mig12.get_locator_id (v_samp_rec.source_whse, v_samp_rec.source_location);
2830
2831 IF (l_source_locator_id IS NULL) THEN
2832 IF (l_loct_ctl = 2) THEN
2833 /*======================================
2834 Create a Non-validated location.
2835 ======================================*/
2836 SAVEPOINT samplesourceloc;
2837 inv_migrate_process_org.create_location
2838 (p_migration_run_id => p_migration_run_id
2839 , p_organization_id => l_source_org_id
2840 , p_subinventory_code => l_source_subinv
2841 , p_location => v_samp_rec.source_location
2842 , p_loct_desc => v_samp_rec.source_location
2843 , p_start_date_active => SYSDATE
2844 , p_commit => p_commit
2845 , x_location_id => l_source_locator_id
2846 , x_failure_count => l_failure_count);
2847
2848 IF (l_failure_count > 0) THEN
2849 RAISE mig_source_non_loc_error;
2850 END IF;
2851 ELSE
2852 RAISE mig_source_locator_id;
2853 END IF;
2854 ELSE
2855 /*==============================================
2856 Get Subinv associated with
2857 Locator. Check to see if the subinventory
2858 associated with the locator matches the
2859 subinventory code already assigned.
2860 ==============================================*/
2861 gmd_qc_mig12.get_subinv_data (l_source_locator_id
2862 , l_source_subinv_loc
2863 , l_src_sub_organization_id);
2864
2865 IF (l_src_sub_organization_id IS NULL) THEN
2866 RAISE mig_source_subinv_error;
2867 END IF;
2868
2869 IF (l_source_subinv_loc <> l_source_subinv) THEN
2870 /*===================================================
2871 Overlay the subinv with the one from the locator.
2872 ===================================================*/
2873 l_source_subinv := l_source_subinv_loc;
2874 END IF;
2875 END IF;
2876 END IF;
2877 ELSE
2878 l_source_locator_id := NULL;
2879 END IF;
2880 ELSE
2881 l_source_subinv := NULL;
2882 l_source_locator_id := NULL;
2883 l_source_org_id := NULL;
2884 END IF;
2885 -- END Bug# 5261810 End changes to get source subinventory and Locator information
2886
2887 /*=========================
2888 Get Inventory Item id.
2889 =========================*/
2890
2891 IF (v_samp_rec.orgn_code IS NOT NULL AND v_samp_rec.item_id IS NOT NULL) THEN
2892 INV_OPM_ITEM_MIGRATION.GET_ODM_ITEM(
2893 P_MIGRATION_RUN_ID => p_migration_run_id,
2894 P_ITEM_ID => v_samp_rec.item_id,
2895 P_ORGANIZATION_ID => l_organization_id,
2896 P_MODE => NULL,
2897 P_COMMIT => FND_API.G_TRUE,
2898 X_INVENTORY_ITEM_ID => l_inventory_item_id,
2899 X_FAILURE_COUNT => l_failure_count);
2900
2901 IF (l_failure_count > 0) THEN
2902 RAISE MIG_ODM_ITEM;
2903 END IF;
2904 ELSE
2905 l_inventory_item_id := v_samp_rec.inventory_item_id;
2906 END IF;
2907
2908 /*=========================
2909 Get Lot Numbers
2910 =========================*/
2911
2912 -- rework for bug 13025068
2913 -- old code below
2914 /* IF (l_organization_id IS NOT NULL AND v_samp_rec.lot_no IS NOT NULL) THEN
2915 --*==========================================
2916 -- If lot no populated then itemid must be.
2917 -- ==========================================
2918 OPEN get_item_data(v_samp_rec.item_id);
2919 FETCH get_item_data INTO l_sublot_ctl;
2920 IF (get_item_data%NOTFOUND) THEN
2921 CLOSE get_item_data;
2922 RAISE MIG_OPM_ITEM;
2923 END IF;
2924 CLOSE get_item_data;
2925 IF (l_sublot_ctl = 1 AND v_samp_rec.sublot_no IS NULL) THEN
2926 l_get_parent_only := 1;
2927 ELSE
2928 l_get_parent_only := 0;
2929 END IF;
2930 IF (l_get_parent_only = 1) THEN
2931 l_parent_lot_number := v_samp_rec.lot_no;
2932 l_lot_number := null;
2933 ELSE
2934 inv_opm_lot_migration.GET_ODM_LOT (
2935 P_MIGRATION_RUN_ID => p_migration_run_id,
2936 P_ORGN_CODE => v_samp_rec.orgn_code,
2937 P_ITEM_ID => v_samp_rec.item_id,
2938 P_LOT_NO => v_samp_rec.lot_no,
2939 P_SUBLOT_NO => v_samp_rec.sublot_no,
2940 P_WHSE_CODE => NULL,
2941 P_LOCATION => NULL,
2942 P_GET_PARENT_ONLY => 0,
2943 P_COMMIT => FND_API.G_TRUE,
2944 X_LOT_NUMBER => l_lot_number,
2945 X_PARENT_LOT_NUMBER => l_parent_lot_number,
2946 X_FAILURE_COUNT => l_failure_count
2947 );
2948
2949 IF (l_failure_count > 0) THEN
2950 RAISE MIG_LOT_ERROR;
2951 END IF;
2952 END IF;
2953 ELSE -- lot no is null.
2954 l_parent_lot_number := NULL;
2955 l_lot_number := NULL;
2956 END IF; */
2957
2958 --bug 13025068 psuedo code below for code fix
2959
2960 /*
2961 Get_ODM_LOT API has a parameter Parent_only. For sublot control items call the API with parent only when sublot is not present on sample.
2962
2963 If this API returns null for parent lot then
2964
2965 1Query ic_lots_mst with lot_no and item_id for lot num and sublot num
2966 Check for null sublot first , take this case first pref then sublot - make sure get nul once first
2967
2968 ( order by lot_id )
2969
2970 2 If sublot_num is null
2971 Then
2972
2973 call regular get_odm_lot passing OPM LOT_NO as lot to be created. and Lot_no is populated into Lot_number field not parent lot number.
2974 Else -- sublot is not null
2975 Pass lot num and sublot num into GET_ODM_LOT API
2976 Populate parent_lot_number on sample with lot number from the samples
2977
2978 end if
2979
2980 */
2981
2982
2983 IF (l_organization_id IS NOT NULL AND v_samp_rec.lot_no IS NOT NULL) THEN
2984 /*==========================================
2985 If lot no populated then itemid must be.
2986 ==========================================*/
2987 OPEN get_item_data(v_samp_rec.item_id);
2988 FETCH get_item_data INTO l_sublot_ctl;
2989 IF (get_item_data%NOTFOUND) THEN
2990 CLOSE get_item_data;
2991 RAISE MIG_OPM_ITEM;
2992 END IF;
2993 CLOSE get_item_data;
2994
2995
2996 IF (l_sublot_ctl = 1 AND v_samp_rec.sublot_no IS NULL) THEN
2997 l_get_parent_only := 1;
2998 ELSE
2999 l_get_parent_only := 0;
3000 END IF;
3001
3002
3003
3004 -- 13826138 replace call to inv_opm_lot_migration.GET_ODM_LOT with
3005 --P_GET_PARENT_ONLY => 1 with a call to c acusror
3006 -- as this was generating spurious error messages whern not found (i.e
3007 -- non--else had migrated the parent lot _
3008 l_parent_lot_number := null;
3009
3010 IF (l_get_parent_only = 1) THEN
3011 --replace call to get_odm_lot with flag = get parent_lot =1
3012 OPEN get_parent_lot_number_mig(v_samp_rec.item_id, v_samp_rec.lot_no);
3013 FETCH get_parent_lot_number_mig INTO l_parent_lot_number;
3014 CLOSE get_parent_lot_number_mig;
3015
3016
3017 IF l_parent_lot_number is NULL then
3018
3019
3020 OPEN get_lot(v_samp_rec.item_id, v_samp_rec.lot_no);
3021 FETCH get_lot INTO l_lot_no, l_sublot_no;
3022 IF (get_lot%NOTFOUND) THEN
3023 CLOSE get_lot;
3024 RAISE MIG_LOT_ERROR;
3025 END IF;
3026 CLOSE get_lot;
3027
3028 inv_opm_lot_migration.GET_ODM_LOT (
3029 P_MIGRATION_RUN_ID => p_migration_run_id,
3030 P_ORGN_CODE => v_samp_rec.orgn_code,
3031 P_ITEM_ID => v_samp_rec.item_id,
3032 P_LOT_NO => l_lot_no,
3033 P_SUBLOT_NO => l_sublot_no,
3034 P_WHSE_CODE => NULL,
3035 P_LOCATION => NULL,
3036 P_GET_PARENT_ONLY => 0,
3037 P_COMMIT => FND_API.G_TRUE,
3038 X_LOT_NUMBER => l_lot_number,
3039 X_PARENT_LOT_NUMBER => l_parent_lot_number,
3040 X_FAILURE_COUNT => l_failure_count
3041 );
3042
3043 IF (l_failure_count > 0) THEN
3044 RAISE MIG_LOT_ERROR;
3045 END IF;
3046
3047 IF l_sublot_no is NULL then
3048 l_parent_lot_number := NULL;
3049 ELSE
3050 l_lot_number := NULL;
3051
3052 END IF; --IF l_sublot_no is NULL then
3053
3054
3055
3056
3057 END IF; -- IF l_parent_lot_number is NULL then
3058
3059 ELSE -- IF (l_get_parent_only = 1) THEN if here means l_get_parent_only = 0
3060
3061 inv_opm_lot_migration.GET_ODM_LOT (
3062 P_MIGRATION_RUN_ID => p_migration_run_id,
3063 P_ORGN_CODE => v_samp_rec.orgn_code,
3064 P_ITEM_ID => v_samp_rec.item_id,
3065 P_LOT_NO => v_samp_rec.lot_no,
3066 P_SUBLOT_NO => v_samp_rec.sublot_no,
3067 P_WHSE_CODE => NULL,
3068 P_LOCATION => NULL,
3069 P_GET_PARENT_ONLY => 0,
3070 P_COMMIT => FND_API.G_TRUE,
3071 X_LOT_NUMBER => l_lot_number,
3072 X_PARENT_LOT_NUMBER => l_parent_lot_number,
3073 X_FAILURE_COUNT => l_failure_count
3074 );
3075
3076 IF (l_failure_count > 0) THEN
3077 RAISE MIG_LOT_ERROR;
3078 END IF;
3079 END IF;
3080 ELSE -- lot no is null.
3081 l_parent_lot_number := NULL;
3082 l_lot_number := NULL;
3083 END IF; -- IF (l_organization_id IS NOT NULL AND v_samp_rec.lot_no IS NOT NULL) THEN
3084
3085 -- end bug 13025068
3086
3087
3088 -- Bug# 5261810
3089 -- Added code to update Operating Unit Information for Supplier Samples
3090 l_org_id := NULL;
3091 IF v_samp_rec.supplier_site_id IS NOT NULL AND v_samp_rec.source = 'S' THEN
3092 SELECT org_id INTO l_org_id
3093 FROM po_vendor_sites_all
3094 WHERE vendor_site_id = v_samp_rec.supplier_site_id;
3095 ELSE
3096 l_org_id := v_samp_rec.org_id;
3097 END IF;
3098
3099 -- Bug# 5261810
3100 -- Added code to populate material_detail_id so that Line and Type fields are populated when queried from the applications
3101 l_material_detail_id := NULL;
3102 IF v_samp_rec.source = 'W' AND v_samp_rec.batch_id IS NOT NULL AND v_samp_rec.formulaline_id IS NOT NULL THEN
3103 SELECT material_detail_id INTO l_material_detail_id
3104 FROM gme_material_details
3105 WHERE batch_id = v_samp_rec.batch_id
3106 AND formulaline_id = v_samp_rec.formulaline_id;
3107 END IF;
3108
3109
3110 /*==========================
3111 Update gmd_samples.
3112 ==========================*/
3113
3114 UPDATE gmd_samples
3115 SET organization_id = l_organization_id,
3116 subinventory = l_subinventory,
3117 locator_id = l_locator_id,
3118 inventory_item_id = l_inventory_item_id,
3119 parent_lot_number = l_parent_lot_number,
3120 lab_organization_id = l_lab_organization_id,
3121 lot_number = l_lot_number,
3122 source_subinventory = l_source_subinv, -- Bug# 5261810
3123 source_locator_id = l_source_locator_id, -- Bug# 5261810
3124 storage_organization_id = l_storage_org_id,
3125 storage_subinventory = l_store_subinv,
3126 storage_locator_id = l_storage_locator_id,
3127 org_id = l_org_id, -- Bug# 5261810
3128 material_detail_id = l_material_detail_id, -- Bug# 5261810
3129 migrated_ind = 1
3130 WHERE sample_id = v_samp_rec.sample_id;
3131
3132 IF (p_commit = FND_API.G_TRUE) THEN
3133 COMMIT;
3134 END IF;
3135
3136 GMD_QC_MIG12.g_sample_upd_count := GMD_QC_MIG12.g_sample_upd_count + 1;
3137
3138 EXCEPTION
3139
3140 WHEN MIG_NO_ORG THEN
3141 GMA_COMMON_LOGGING.gma_migration_central_log (
3142 p_run_id => p_migration_run_id,
3143 p_log_level => FND_LOG.LEVEL_ERROR,
3144 p_message_token => 'GMD_MIG_NO_ORG',
3145 p_context => 'Quality Samples - gmd_samples',
3146 p_token1 => 'ORG',
3147 p_token2 => 'ONAME',
3148 p_token3 => 'ROWK',
3149 p_token4 => 'ROWV',
3150 p_param1 => v_samp_rec.orgn_code,
3151 p_param2 => 'ORGN_CODE',
3152 p_param3 => 'SAMPLE_ID',
3153 p_param4 => to_char(v_samp_rec.sample_id),
3154 p_app_short_name => 'GMD');
3155 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3156 x_exception_count := x_exception_count + 1;
3157
3158 WHEN MIG_NO_LAB_ORG THEN
3159 GMA_COMMON_LOGGING.gma_migration_central_log (
3160 p_run_id => p_migration_run_id,
3161 p_log_level => FND_LOG.LEVEL_ERROR,
3162 p_message_token => 'GMD_MIG_NO_ORG',
3163 p_context => 'Quality Samples - gmd_samples',
3164 p_token1 => 'ORG',
3165 p_token2 => 'ONAME',
3166 p_token3 => 'ROWK',
3167 p_token4 => 'ROWV',
3168 p_param1 => v_samp_rec.qc_lab_orgn_code,
3169 p_param2 => 'QC_LAB_ORGN_CODE',
3170 p_param3 => 'SAMPLE_ID',
3171 p_param4 => to_char(v_samp_rec.sample_id),
3172 p_app_short_name => 'GMD');
3173 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3174 x_exception_count := x_exception_count + 1;
3175
3176 WHEN MIG_WHSE_ERROR THEN
3177 GMA_COMMON_LOGGING.gma_migration_central_log (
3178 p_run_id => p_migration_run_id,
3179 p_log_level => FND_LOG.LEVEL_ERROR,
3180 p_message_token => 'GMD_MIG_WHSE_ERROR',
3181 p_context => 'Quality Samples - gmd_samples',
3182 p_token1 => 'WHSE',
3183 p_token2 => 'WNAME',
3184 p_token3 => 'ROWK',
3185 p_token4 => 'ROWV',
3186 p_param1 => v_samp_rec.whse_code,
3187 p_param2 => 'WHSE_CODE',
3188 p_param3 => 'SAMPLE_ID',
3189 p_param4 => to_char(v_samp_rec.sample_id),
3190 p_app_short_name => 'GMD');
3191 ROLLBACK;
3192 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3193 x_exception_count := x_exception_count + 1;
3194
3195 WHEN MIG_SUBINV_MISMATCH THEN
3196 GMA_COMMON_LOGGING.gma_migration_central_log (
3197 p_run_id => p_migration_run_id,
3198 p_log_level => FND_LOG.LEVEL_ERROR,
3199 p_message_token => 'GMD_MIG_SUBINV_MISMATCH',
3200 p_table_name => NULL,
3201 p_context => 'Quality Samples - gmd_samples',
3202 p_token1 => 'SAMPLEID',
3203 p_token2 => 'ORG',
3204 p_token3 => 'WHSE',
3205 p_token4 => 'ORGID',
3206 p_token5 => 'WHSEID',
3207 p_param1 => to_char(v_samp_rec.sample_id),
3208 p_param2 => v_samp_rec.orgn_code,
3209 p_param3 => v_samp_rec.whse_code,
3210 p_param4 => to_char(l_organization_id),
3211 p_param5 => to_char(ls_organization_id),
3212 p_app_short_name => 'GMD');
3213 ROLLBACK;
3214 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3215 x_exception_count := x_exception_count + 1;
3216
3217 WHEN MIG_NON_LOC_FAIL THEN
3218 GMA_COMMON_LOGGING.gma_migration_central_log (
3219 p_run_id => p_migration_run_id,
3220 p_log_level => FND_LOG.LEVEL_ERROR,
3221 p_message_token => 'GMD_MIG_NONLOC_FAILURE',
3222 p_context => 'Quality Samples - gmd_samples',
3223 p_token1 => 'ROWK',
3224 p_token2 => 'ROWV',
3225 p_token3 => 'FNAME',
3226 p_param1 => 'SAMPLE_ID',
3227 p_param2 => to_char(v_samp_rec.sample_id),
3228 p_param3 => 'LOCATION',
3229 p_app_short_name => 'GMD');
3230 ROLLBACK;
3231 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3232 x_exception_count := x_exception_count + 1;
3233
3234 WHEN MIG_LOCATOR_ID THEN
3235 GMA_COMMON_LOGGING.gma_migration_central_log (
3236 p_run_id => p_migration_run_id,
3237 p_log_level => FND_LOG.LEVEL_ERROR,
3238 p_message_token => 'GMD_MIG_LOCATOR_ID',
3239 p_context => 'Quality Samples - gmd_samples',
3240 p_token1 => 'WHSE',
3241 p_token2 => 'LOCATION',
3242 p_token3 => 'LFIELD',
3243 p_token4 => 'ROWK',
3244 p_token5 => 'ROWV',
3245 p_param1 => v_samp_rec.whse_code,
3246 p_param2 => v_samp_rec.location,
3247 p_param3 => 'LOCATION',
3248 p_param4 => 'SAMPLE_ID',
3249 p_param5 => to_char(v_samp_rec.sample_id),
3250 p_app_short_name => 'GMD');
3251 ROLLBACK;
3252 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3253 x_exception_count := x_exception_count + 1;
3254
3255 WHEN MIG_SUBINV_ERROR THEN
3256 GMA_COMMON_LOGGING.gma_migration_central_log (
3257 p_run_id => p_migration_run_id,
3258 p_log_level => FND_LOG.LEVEL_ERROR,
3259 p_message_token => 'GMD_MIG_SUBINV',
3260 p_context => 'Quality Samples - gmd_samples',
3261 p_token1 => 'LOCATOR',
3262 p_token2 => 'ROWK',
3263 p_token3 => 'ROWV',
3264 p_param1 => to_char(l_locator_id),
3265 p_param2 => 'SAMPLE_ID',
3266 p_param3 => to_char(v_samp_rec.sample_id),
3267 p_app_short_name => 'GMD');
3268 ROLLBACK;
3269 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3270 x_exception_count := x_exception_count + 1;
3271
3272
3273 WHEN MIG_STORE_WHSE_ERROR THEN
3274 GMA_COMMON_LOGGING.gma_migration_central_log (
3275 p_run_id => p_migration_run_id,
3276 p_log_level => FND_LOG.LEVEL_ERROR,
3277 p_message_token => 'GMD_MIG_WHSE_ERROR',
3278 p_context => 'Quality Samples - gmd_samples',
3279 p_token1 => 'WHSE',
3280 p_token2 => 'WNAME',
3281 p_token3 => 'ROWK',
3282 p_token4 => 'ROWV',
3283 p_param1 => v_samp_rec.storage_whse,
3284 p_param2 => 'STORAGE_WHSE',
3285 p_param3 => 'SAMPLE_ID',
3286 p_param4 => to_char(v_samp_rec.sample_id),
3287 p_app_short_name => 'GMD');
3288 ROLLBACK;
3289 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3290 x_exception_count := x_exception_count + 1;
3291
3292 WHEN MIG_STORE_NON_LOC_ERROR THEN
3293 GMA_COMMON_LOGGING.gma_migration_central_log (
3294 p_run_id => p_migration_run_id,
3295 p_log_level => FND_LOG.LEVEL_ERROR,
3296 p_message_token => 'GMD_MIG_NONLOC_FAILURE',
3297 p_context => 'Quality Samples - gmd_samples',
3298 p_token1 => 'ROWK',
3299 p_token2 => 'ROWV',
3300 p_token3 => 'FNAME',
3301 p_param1 => 'SAMPLE_ID',
3302 p_param2 => to_char(v_samp_rec.sample_id),
3303 p_param3 => 'STORAGE_OCATION',
3304 p_app_short_name => 'GMD');
3305 ROLLBACK;
3306 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3307 x_exception_count := x_exception_count + 1;
3308
3309 WHEN MIG_STORE_LOCATOR_ID THEN
3310 GMA_COMMON_LOGGING.gma_migration_central_log (
3311 p_run_id => p_migration_run_id,
3312 p_log_level => FND_LOG.LEVEL_ERROR,
3313 p_message_token => 'GMD_MIG_LOCATOR_ID',
3314 p_context => 'Quality Samples - gmd_samples',
3315 p_token1 => 'WHSE',
3316 p_token2 => 'LOCATION',
3317 p_token3 => 'LFIELD',
3318 p_token4 => 'ROWK',
3319 p_token5 => 'ROWV',
3320 p_param1 => v_samp_rec.storage_whse,
3321 p_param2 => v_samp_rec.storage_location,
3322 p_param3 => 'STORAGE LOCATION',
3323 p_param4 => 'SAMPLE_ID',
3324 p_param5 => to_char(v_samp_rec.sample_id),
3325 p_app_short_name => 'GMD');
3326 ROLLBACK;
3327 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3328 x_exception_count := x_exception_count + 1;
3329
3330 -- BEGIN Bug# 5261810
3331 -- Added code to handle exceptions for source_whse and source_location
3332 WHEN MIG_SOURCE_WHSE_ERROR THEN
3333 GMA_COMMON_LOGGING.gma_migration_central_log (
3334 p_run_id => p_migration_run_id,
3335 p_log_level => FND_LOG.LEVEL_ERROR,
3336 p_message_token => 'GMD_MIG_WHSE_ERROR',
3337 p_context => 'Quality Samples - gmd_samples',
3338 p_token1 => 'WHSE',
3339 p_token2 => 'WNAME',
3340 p_token3 => 'ROWK',
3341 p_token4 => 'ROWV',
3342 p_param1 => v_samp_rec.source_whse,
3343 p_param2 => 'SOURCE_WHSE',
3344 p_param3 => 'SAMPLE_ID',
3345 p_param4 => to_char(v_samp_rec.sample_id),
3346 p_app_short_name => 'GMD');
3347 ROLLBACK;
3348 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3349 x_exception_count := x_exception_count + 1;
3350
3351 WHEN MIG_SOURCE_NON_LOC_ERROR THEN
3352 GMA_COMMON_LOGGING.gma_migration_central_log (
3353 p_run_id => p_migration_run_id,
3354 p_log_level => FND_LOG.LEVEL_ERROR,
3355 p_message_token => 'GMD_MIG_NONLOC_FAILURE',
3356 p_context => 'Quality Samples - gmd_samples',
3357 p_token1 => 'ROWK',
3358 p_token2 => 'ROWV',
3359 p_token3 => 'FNAME',
3360 p_param1 => 'SAMPLE_ID',
3361 p_param2 => to_char(v_samp_rec.sample_id),
3362 p_param3 => 'SOURCE_LOCATION',
3363 p_app_short_name => 'GMD');
3364 ROLLBACK;
3365 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3366 x_exception_count := x_exception_count + 1;
3367
3368 WHEN MIG_SOURCE_LOCATOR_ID THEN
3369 GMA_COMMON_LOGGING.gma_migration_central_log (
3370 p_run_id => p_migration_run_id,
3371 p_log_level => FND_LOG.LEVEL_ERROR,
3372 p_message_token => 'GMD_MIG_LOCATOR_ID',
3373 p_context => 'Quality Samples - gmd_samples',
3374 p_token1 => 'WHSE',
3375 p_token2 => 'LOCATION',
3376 p_token3 => 'LFIELD',
3377 p_token4 => 'ROWK',
3378 p_token5 => 'ROWV',
3379 p_param1 => v_samp_rec.source_whse,
3380 p_param2 => v_samp_rec.source_location,
3381 p_param3 => 'SOURCE_LOCATION',
3382 p_param4 => 'SAMPLE_ID',
3383 p_param5 => to_char(v_samp_rec.sample_id),
3384 p_app_short_name => 'GMD');
3385 ROLLBACK;
3386 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3387 x_exception_count := x_exception_count + 1;
3388
3389 WHEN MIG_SOURCE_SUBINV_ERROR THEN
3390 GMA_COMMON_LOGGING.gma_migration_central_log (
3391 p_run_id => p_migration_run_id,
3392 p_log_level => FND_LOG.LEVEL_ERROR,
3393 p_message_token => 'GMD_MIG_SUBINV',
3394 p_context => 'Quality Samples - gmd_samples',
3395 p_token1 => 'LOCATOR',
3396 p_token2 => 'ROWK',
3397 p_token3 => 'ROWV',
3398 p_param1 => to_char(l_source_locator_id),
3399 p_param2 => 'SAMPLE_ID',
3400 p_param3 => to_char(v_samp_rec.sample_id),
3401 p_app_short_name => 'GMD');
3402 ROLLBACK;
3403 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3404 x_exception_count := x_exception_count + 1;
3405 -- End Bug# 5261810
3406 WHEN MIG_ODM_ITEM THEN
3407 GMA_COMMON_LOGGING.gma_migration_central_log (
3408 p_run_id => p_migration_run_id,
3409 p_log_level => FND_LOG.LEVEL_ERROR,
3410 p_message_token => 'GMD_MIG_ODM_ITEM',
3411 p_context => 'Quality Samples - gmd_samples',
3412 p_token1 => 'ORG',
3413 p_token2 => 'ITEMID',
3414 p_token3 => 'ROWK',
3415 p_token4 => 'ROWV',
3416 p_param1 => to_char(l_organization_id),
3417 p_param2 => to_char(v_samp_rec.item_id),
3418 p_param3 => 'SAMPLE_ID',
3419 p_param4 => to_char(v_samp_rec.sample_id),
3420 p_app_short_name => 'GMD');
3421 ROLLBACK;
3422 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3423 x_exception_count := x_exception_count + 1;
3424
3425 WHEN MIG_OPM_ITEM THEN
3426 GMA_COMMON_LOGGING.gma_migration_central_log (
3427 p_run_id => p_migration_run_id,
3428 p_log_level => FND_LOG.LEVEL_ERROR,
3429 p_message_token => 'GMD_MIG_OPM_ITEM',
3430 p_context => 'Quality Samples - gmd_samples',
3431 p_token1 => 'ITEMID',
3432 p_token2 => 'ROWK',
3433 p_token3 => 'ROWV',
3434 p_param1 => to_char(v_samp_rec.item_id),
3435 p_param2 => 'SAMPLE_ID',
3436 p_param3 => to_char(v_samp_rec.sample_id),
3437 p_app_short_name => 'GMD');
3438 ROLLBACK;
3439 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3440 x_exception_count := x_exception_count + 1;
3441
3442 WHEN MIG_LOT_ERROR THEN
3443 GMA_COMMON_LOGGING.gma_migration_central_log (
3444 p_run_id => p_migration_run_id,
3445 p_log_level => FND_LOG.LEVEL_ERROR,
3446 p_message_token => 'GMD_MIG_LOT',
3447 p_context => 'Quality Samples - gmd_samples',
3448 p_token1 => 'ROWK',
3449 p_token2 => 'ROWV',
3450 p_param1 => 'SAMPLE_ID',
3451 p_param2 => to_char(v_samp_rec.sample_id),
3452 p_app_short_name => 'GMD');
3453 ROLLBACK;
3454 GMD_QC_MIG12.g_sample_err_count := GMD_QC_MIG12.g_sample_err_count + 1;
3455 x_exception_count := x_exception_count + 1;
3456
3457 WHEN OTHERS THEN
3458
3459 GMA_COMMON_LOGGING.gma_migration_central_log (
3460 p_run_id => p_migration_run_id,
3461 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
3462 p_message_token => 'GMA_MIGRATION_DB_ERROR',
3463 p_context => 'Quality Samples - gmd_samples',
3464 p_db_error => SQLERRM,
3465 p_app_short_name => 'GMA');
3466 ROLLBACK;
3467 x_exception_count := x_exception_count + 1;
3468
3469 END; -- end sample subprogram
3470
3471 END LOOP; -- loop of sample record.
3472
3473
3474 /*==============================================
3475 Log number of updates to gmd_samples.
3476 ==============================================*/
3477
3478 LOG_SAMPLE_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
3479
3480
3481 /*==============================================
3482 Log Start of gmd_sampling_events migration.
3483 ==============================================*/
3484
3485 GMA_COMMON_LOGGING.gma_migration_central_log (
3486 p_run_id => p_migration_run_id,
3487 p_log_level => FND_LOG.LEVEL_EVENT,
3488 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
3489 p_table_name => 'GMD_SAMPLING_EVENTS',
3490 p_token1 => 'TABLE_NAME',
3491 p_param1 => 'GMD_SAMPLING_EVENTS',
3492 p_context => 'Quality Samples',
3493 p_app_short_name => 'GMA');
3494
3495
3496 GMD_QC_MIG12.g_sample_event_upd_count := 0;
3497 GMD_QC_MIG12.g_sample_event_err_count := 0;
3498 GMD_QC_MIG12.g_sample_event_pro_count := 0;
3499 GMD_QC_MIG12.g_progress_ind := 2;
3500
3501 FOR v_samp_event IN get_sampling_event LOOP
3502
3503 BEGIN -- sample event subprogram
3504
3505 GMD_QC_MIG12.g_sample_event_pro_count := GMD_QC_MIG12.g_sample_event_pro_count + 1;
3506 -- ===============================
3507 -- Get Data from gmd_samples.
3508 --===============================
3509 OPEN get_sample_data(v_samp_event.sampling_event_id);
3510 FETCH get_sample_data INTO l_samp_data;
3511 IF (get_sample_data%NOTFOUND) THEN
3512 CLOSE get_sample_data;
3513 RAISE MIG_GET_SAMPLE_ERROR;
3514 END IF;
3515 CLOSE get_sample_data;
3516 --==============================
3517 -- Update gmd_sampling_events.
3518 --===============================
3519 UPDATE gmd_sampling_events
3520 SET organization_id = l_samp_data.organization_id,
3521 inventory_item_id = l_samp_data.inventory_item_id,
3522 lot_number = l_samp_data.lot_number,
3523 subinventory = l_samp_data.subinventory,
3524 locator_id = l_samp_data.locator_id,
3525 revision = l_samp_data.revision,
3526 parent_lot_number = l_samp_data.parent_lot_number,
3527 org_id = l_samp_data.org_id, -- Bug# 5261810
3528 material_detail_id = l_samp_data.material_detail_id, -- Bug# 5261810
3529 migrated_ind = 1
3530 WHERE sampling_event_id = v_samp_event.sampling_event_id;
3531
3532 IF (p_commit = FND_API.G_TRUE) THEN
3533 COMMIT;
3534 END IF;
3535
3536 GMD_QC_MIG12.g_sample_event_upd_count := GMD_QC_MIG12.g_sample_event_upd_count + 1;
3537
3538 EXCEPTION
3539
3540 WHEN MIG_GET_SAMPLE_ERROR THEN
3541 -- Bug# 5462876
3542 -- Supress logging of the following message since there are lot of rows in gmd_sampling_events where there is no corresponding sample row.
3543 /*GMA_COMMON_LOGGING.gma_migration_central_log (
3544 p_run_id => p_migration_run_id,
3545 p_log_level => FND_LOG.LEVEL_ERROR,
3546 p_message_token => 'GMD_MIG_GET_SAMPLE',
3547 p_context => 'Quality Samples - gmd_sampling_events',
3548 p_token1 => 'SAMPLEVT',
3549 p_param1 => to_char(v_samp_event.sampling_event_id),
3550 p_app_short_name => 'GMD'); */
3551 GMD_QC_MIG12.g_sample_event_err_count := GMD_QC_MIG12.g_sample_event_err_count + 1;
3552 x_exception_count := x_exception_count + 1;
3553
3554 WHEN OTHERS THEN
3555 LOG_SAMPLE_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
3556 GMA_COMMON_LOGGING.gma_migration_central_log (
3557 p_run_id => p_migration_run_id,
3558 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
3559 p_message_token => 'GMA_MIGRATION_DB_ERROR',
3560 p_context => 'Quality Samples - gmd_sampling_events',
3561 p_db_error => SQLERRM,
3562 p_app_short_name => 'GMA');
3563 x_exception_count := x_exception_count + 1;
3564
3565 END; -- end sample event subprogram
3566
3567 END LOOP;
3568
3569
3570
3571 /* Start of Merged code for trying a fix
3572
3573 Merge into
3574 ( Select * from gmd_sampling_events where migrated_ind is null ) gse
3575 Using gmd_samples gs On ( gs.rowId BETWEEN p_start_rowid AND p_end_rowid AND
3576 gs.sampling_event_id = gse.sampling_event_id AND
3577 (gs.migrated_ind = 1 OR gs.organization_id IS NOT NULL) )
3578 When Matched then Update
3579 Set gse.organization_id = gs.organization_id,
3580 gse.inventory_item_id = gs.inventory_item_id,
3581 gse.lot_number = gs.lot_number,
3582 gse.subinventory = gs.subinventory,
3583 gse.locator_id = gs.locator_id,
3584 gse.revision = gs.revision,
3585 gse.parent_lot_number = gs.parent_lot_number,
3586 gse.org_id = gs.org_id,
3587 gse.material_detail_id = gs.material_detail_id,
3588 gse.migrated_ind = 1;
3589
3590 End of Merged code for trying a fix */
3591
3592 /*==============================================
3593 Log number of updates to gmd_sampling_event.
3594 ==============================================*/
3595
3596 LOG_SAMPLE_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
3597
3598
3599 EXCEPTION
3600
3601 WHEN OTHERS THEN
3602 LOG_SAMPLE_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
3603 GMA_COMMON_LOGGING.gma_migration_central_log (
3604 p_run_id => p_migration_run_id,
3605 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
3606 p_message_token => 'GMA_MIGRATION_DB_ERROR',
3607 p_context => 'Quality Samples - general',
3608 p_db_error => SQLERRM,
3609 p_app_short_name => 'GMA');
3610 x_exception_count := x_exception_count + 1;
3611
3612 END GMD_QC_MIGRATE_SAMPLES;
3613
3614
3615 /*===========================================================================
3616 -- PROCEDURE
3617 -- GMD_QC_MIGRATE_RESULTS
3618 --
3619 -- DESCRIPTION:
3620 -- This procedure migrates the Quality Results Data.
3621 --
3622 -- PARAMETERS:
3623 --
3624 -- p_migration_run_id IN NUMBER - Migration Id.
3625 -- p_commit IN VARCHAR2 - Commit Flag
3626 -- p_start_rowid IN ROWID
3627 -- p_end_rowid IN ROWID
3628 -- x_exception_count OUT NUMBER - Exception Count
3629 --
3630 -- The following columns will be migrated by the Common migration script.
3631 -- gmd_results lab_organization_id
3632 -- gmd_results test_qty_uom
3633 --===========================================================================
3634 in cases , these were being used to populate samples
3635 */
3636 PROCEDURE GMD_QC_MIGRATE_RESULTS
3637 ( p_migration_run_id IN NUMBER
3638 , p_commit IN VARCHAR2
3639 , p_start_rowid IN ROWID
3640 , p_end_rowid IN ROWID
3641 , x_exception_count OUT NOCOPY NUMBER
3642 ) IS
3643
3644 MIG_NO_LAB_ORG EXCEPTION;
3645 NEXTRESULT EXCEPTION;
3646 MIG_LOT_ERROR EXCEPTION;
3647 MIG_ODM_ITEM EXCEPTION;
3648
3649 l_parent_lot_number gmd_samples.parent_lot_number%TYPE;
3650 l_inventory_item_id gmd_samples.inventory_item_id%TYPE;
3651 l_failure_count NUMBER;
3652 l_lot_number gmd_samples.lot_number%TYPE;
3653
3654 CURSOR get_results IS
3655 SELECT result_id, qc_lab_orgn_code, lab_organization_id,
3656 test_kit_item_id, test_kit_lot_no, test_kit_sublot_no,
3657 test_kit_inv_item_id
3658 FROM gmd_results
3659 WHERE rowid BETWEEN p_start_rowid AND p_end_rowid -- Bug 14198664 support ad_parallel
3660 AND migrated_ind IS NULL
3661 AND test_kit_item_id is not null;
3662
3663 BEGIN
3664
3665
3666 /*=====================================
3667 Log Start of gmd_results.
3668 =====================================*/
3669
3670 GMA_COMMON_LOGGING.gma_migration_central_log (
3671 p_run_id => p_migration_run_id,
3672 p_log_level => FND_LOG.LEVEL_EVENT,
3673 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
3674 p_table_name => 'GMD_RESULTS',
3675 p_token1 => 'TABLE_NAME',
3676 p_param1 => 'GMD_RESULTS',
3677 p_context => 'Quality Results',
3678 p_app_short_name => 'GMA');
3679
3680 GMD_QC_MIG12.g_result_upd_count := 0;
3681 GMD_QC_MIG12.g_result_pro_count := 0;
3682 GMD_QC_MIG12.g_result_err_count := 0;
3683 GMD_QC_MIG12.g_progress_ind := 3;
3684
3685 UPDATE gmd_results
3686 SET migrated_ind = 1
3687 WHERE test_kit_item_id is null
3688 AND test_kit_inv_item_id is null
3689 AND rowid BETWEEN p_start_rowid AND p_end_rowid -- Bug 14198664 support ad_parallel
3690 AND migrated_ind IS NULL ;
3691 COMMIT;
3692 FOR v_result IN get_results LOOP
3693
3694 BEGIN -- results subprogram
3695
3696 GMD_QC_MIG12.g_result_pro_count := GMD_QC_MIG12.g_result_pro_count + 1;
3697 /*======================================
3698 Check if organizations migrated.
3699 ======================================*/
3700 IF (v_result.lab_organization_id IS NULL and v_result.qc_lab_orgn_code IS NOT NULL) THEN
3701 RAISE MIG_NO_LAB_ORG;
3702 END IF;
3703
3704 /*======================================
3705 Check if uom migrated successfully.
3706 Removed this check.
3707 ======================================*/
3708
3709 /*=========================
3710 Get Inventory Item id.
3711 =========================*/
3712
3713 IF (v_result.test_kit_item_id IS NOT NULL) THEN
3714 INV_OPM_ITEM_MIGRATION.GET_ODM_ITEM(
3715 P_MIGRATION_RUN_ID => p_migration_run_id,
3716 P_ITEM_ID => v_result.test_kit_item_id,
3717 P_ORGANIZATION_ID => v_result.lab_organization_id,
3718 P_MODE => NULL,
3719 P_COMMIT => FND_API.G_TRUE,
3720 X_INVENTORY_ITEM_ID => l_inventory_item_id,
3721 X_FAILURE_COUNT => l_failure_count);
3722
3723 IF (l_failure_count > 0) THEN
3724 RAISE MIG_ODM_ITEM;
3725 END IF;
3726 ELSE -- null item id
3727 /*============================================
3728 If inv item is not null then do nothing.
3729 ============================================*/
3730 IF (v_result.test_kit_inv_item_id IS NOT NULL) THEN
3731 RAISE NEXTRESULT;
3732 ELSE
3733 l_inventory_item_id := NULL;
3734 END IF;
3735 END IF;
3736
3737
3738 /*=======================
3739 Get Lot Number.
3740 =======================*/
3741
3742 IF (v_result.test_kit_lot_no IS NOT NULL AND l_inventory_item_id IS NOT NULL) THEN
3743 inv_opm_lot_migration.GET_ODM_LOT (
3744 P_MIGRATION_RUN_ID => p_migration_run_id,
3745 P_ORGN_CODE => v_result.qc_lab_orgn_code,
3746 P_ITEM_ID => v_result.test_kit_item_id,
3747 P_LOT_NO => v_result.test_kit_lot_no,
3748 P_SUBLOT_NO => v_result.test_kit_sublot_no,
3749 P_WHSE_CODE => NULL,
3750 P_LOCATION => NULL,
3751 P_GET_PARENT_ONLY => 0,
3752 P_COMMIT => FND_API.G_TRUE,
3753 X_LOT_NUMBER => l_lot_number,
3754 X_PARENT_LOT_NUMBER => l_parent_lot_number,
3755 X_FAILURE_COUNT => l_failure_count
3756 );
3757
3758 IF (l_failure_count > 0) THEN
3759 RAISE MIG_LOT_ERROR;
3760 END IF;
3761 ELSE -- lot no is null.
3762 l_parent_lot_number := NULL;
3763 l_lot_number := NULL;
3764 END IF;
3765
3766
3767 /*==========================
3768 Update gmd_results.
3769 ==========================*/
3770
3771 UPDATE gmd_results
3772 SET test_kit_lot_number = l_lot_number,
3773 test_kit_inv_item_id = l_inventory_item_id,
3774 migrated_ind = 1
3775 WHERE result_id = v_result.result_id;
3776
3777 IF (p_commit = FND_API.G_TRUE) THEN
3778 COMMIT;
3779 END IF;
3780
3781 GMD_QC_MIG12.g_result_upd_count := GMD_QC_MIG12.g_result_upd_count + 1;
3782
3783 EXCEPTION
3784
3785 WHEN MIG_NO_LAB_ORG THEN
3786 GMA_COMMON_LOGGING.gma_migration_central_log (
3787 p_run_id => p_migration_run_id,
3788 p_log_level => FND_LOG.LEVEL_ERROR,
3789 p_message_token => 'GMD_MIG_NO_ORG',
3790 p_context => 'Quality Results - gmd_results',
3791 p_token1 => 'ORG',
3792 p_token2 => 'ONAME',
3793 p_token3 => 'ROWK',
3794 p_token4 => 'ROWV',
3795 p_param1 => v_result.qc_lab_orgn_code,
3796 p_param2 => 'QC_LAB_ORGN_CODE',
3797 p_param3 => 'RESULT_ID',
3798 p_param4 => to_char(v_result.result_id),
3799 p_app_short_name => 'GMD');
3800 GMD_QC_MIG12.g_result_err_count := GMD_QC_MIG12.g_result_err_count + 1;
3801 x_exception_count := x_exception_count + 1;
3802
3803 WHEN NEXTRESULT THEN
3804 NULL;
3805
3806 WHEN MIG_ODM_ITEM THEN
3807 GMA_COMMON_LOGGING.gma_migration_central_log (
3808 p_run_id => p_migration_run_id,
3809 p_log_level => FND_LOG.LEVEL_ERROR,
3810 p_message_token => 'GMD_MIG_ODM_ITEM',
3811 p_context => 'Quality Results - gmd_results',
3812 p_token1 => 'ORG',
3813 p_token2 => 'ITEMID',
3814 p_token3 => 'ROWK',
3815 p_token4 => 'ROWV',
3816 p_param1 => to_char(v_result.lab_organization_id),
3817 p_param2 => to_char(v_result.test_kit_item_id),
3818 p_param3 => 'RESULT_ID',
3819 p_param4 => to_char(v_result.result_id),
3820 p_app_short_name => 'GMD');
3821 GMD_QC_MIG12.g_result_err_count := GMD_QC_MIG12.g_result_err_count + 1;
3822 x_exception_count := x_exception_count + 1;
3823
3824 WHEN MIG_LOT_ERROR THEN
3825 GMA_COMMON_LOGGING.gma_migration_central_log (
3826 p_run_id => p_migration_run_id,
3827 p_log_level => FND_LOG.LEVEL_ERROR,
3828 p_message_token => 'GMD_MIG_LOT',
3829 p_context => 'Quality Results - gmd_results',
3830 p_token1 => 'ROWK',
3831 p_token2 => 'ROWV',
3832 p_param1 => 'RESULT_ID',
3833 p_param2 => to_char(v_result.result_id),
3834 p_app_short_name => 'GMD');
3835 GMD_QC_MIG12.g_result_err_count := GMD_QC_MIG12.g_result_err_count + 1;
3836 x_exception_count := x_exception_count + 1;
3837
3838 WHEN OTHERS THEN
3839 LOG_SAMPLE_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
3840 GMA_COMMON_LOGGING.gma_migration_central_log (
3841 p_run_id => p_migration_run_id,
3842 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
3843 p_message_token => 'GMA_MIGRATION_DB_ERROR',
3844 p_context => 'Quality Results - gmd_results',
3845 p_db_error => SQLERRM,
3846 p_app_short_name => 'GMA');
3847 x_exception_count := x_exception_count + 1;
3848
3849 END; -- end results subprogram
3850
3851 END LOOP;
3852
3853 /*==============================================
3854 Log number of updates to gmd_results.
3855 ==============================================*/
3856
3857 LOG_SAMPLE_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
3858
3859 EXCEPTION
3860
3861 WHEN OTHERS THEN
3862 LOG_SAMPLE_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
3863 GMA_COMMON_LOGGING.gma_migration_central_log (
3864 p_run_id => p_migration_run_id,
3865 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
3866 p_message_token => 'GMA_MIGRATION_DB_ERROR',
3867 p_context => 'Quality Results - general',
3868 p_db_error => SQLERRM,
3869 p_app_short_name => 'GMA');
3870 x_exception_count := x_exception_count + 1;
3871
3872 END GMD_QC_MIGRATE_RESULTS;
3873
3874 /*===========================================================================
3875 -- PROCEDURE
3876 -- gmd_qc_migrate_specs
3877 --
3878 -- DESCRIPTION:
3879 -- This migrates the Quality Specification Data.
3880 --
3881 -- PARAMETERS:
3882 --
3883 -- p_migration_run_id IN NUMBER - Migration Id.
3884 -- p_commit IN VARCHAR2 - Commit Flag
3885 --
3886 -- x_exception_count OUT NUMBER - Exception Count
3887 --
3888 -- The following columns will be migrated by the Common migration script.
3889 --
3890 -- gmd_specifications_b owner_organization_id
3891 -- gmd_spec_tests_b test_qty_uom
3892 -- gmd_spec_tests_b to_qty_uom
3893 -- gmd_inventory_spec_vrs organization_id
3894 -- gmd_wip_spec_vrs organization_id
3895 -- gmd_customer_spec_vrs organization_id
3896 -- gmd_supplier_spec_vrs organization_id
3897 -- gmd_monitoring_spec_vrs organization_id
3898 -- gmd_monitoring_spec_vrs resource_organization_id
3899 --===========================================================================*/
3900
3901 PROCEDURE GMD_QC_MIGRATE_SPECS
3902 ( p_migration_run_id IN NUMBER
3903 , p_commit IN VARCHAR2
3904 , x_exception_count OUT NOCOPY NUMBER)
3905 IS
3906
3907
3908 /*==============================
3909 Exceptions
3910 ==============================*/
3911 MIG_NO_ORG EXCEPTION;
3912 MIG_ODM_ITEM EXCEPTION;
3913 ISPEC_NO_ORG EXCEPTION;
3914 ISPEC_WHSE_ERROR EXCEPTION;
3915 ISPEC_SUB_MISMATCH EXCEPTION;
3916 ISPEC_NON_LOC EXCEPTION;
3917 ISPEC_LOCATOR_ID EXCEPTION;
3918 ISPEC_SUBINV EXCEPTION;
3919 ISPEC_GET_OPM_LOT EXCEPTION;
3920 ISPEC_GET_OPM_ITEM EXCEPTION;
3921 ISPEC_MIG_LOT EXCEPTION;
3922 ISPEC_IN_STATUS EXCEPTION;
3923 ISPEC_OUT_STATUS EXCEPTION;
3924 ISPEC_SAMPLE_ORG EXCEPTION;
3925 ISPEC_SAMPLE_ORG_ID EXCEPTION;
3926 ISPEC_DELETE_INVSPEC EXCEPTION;
3927 NEXT_IN_INV_LINE EXCEPTION;
3928 WIP_NO_ORG EXCEPTION;
3929 WIP_IN_STATUS EXCEPTION;
3930 WIP_OUT_STATUS EXCEPTION;
3931 WIP_SPEC_DELETE EXCEPTION;
3932 WIP_SAMPLE_ORG EXCEPTION;
3933 WIP_SAMPLE_ORG_ID EXCEPTION;
3934 NEXT_IN_WIP_LINE EXCEPTION;
3935 CUST_NO_ORG EXCEPTION;
3936 CUST_SPEC_DELETE EXCEPTION;
3937 CUST_NO_ORG_ID EXCEPTION;
3938 NEXT_IN_CUST_LINE EXCEPTION;
3939 SUP_NO_ORG EXCEPTION;
3940 SUP_IN_STATUS EXCEPTION;
3941 SUP_OUT_STATUS EXCEPTION;
3942 SUP_SPEC_DELETE EXCEPTION;
3943 SUP_NO_ORG_ID EXCEPTION;
3944 NEXT_IN_SUPL_LINE EXCEPTION;
3945 MON_NO_ORG EXCEPTION;
3946 MON_NO_RES_ORG EXCEPTION;
3947 MON_WHSE_ERROR EXCEPTION;
3948 MON_SUB_MISMATCH EXCEPTION;
3949 MON_CREATE_LOC EXCEPTION;
3950 MON_LOCATOR_ID EXCEPTION;
3951 MON_SUBINV_ERROR EXCEPTION;
3952 MON_SPEC_DELETE EXCEPTION;
3953 MON_NO_ORG_ID EXCEPTION;
3954 NEXT_IN_MON_LINE EXCEPTION;
3955 ISPEC_GET_SPEC_ITEM EXCEPTION;
3956
3957 /*==============================
3958 Placeholders.
3959 ==============================*/
3960
3961 l_organization_id gmd_samples.organization_id%TYPE;
3962 ls_organization_id gmd_samples.organization_id%TYPE;
3963 l_subinventory mtl_item_locations.subinventory_code%TYPE;
3964 l_subinv_ind ic_whse_mst.subinventory_ind_flag%TYPE;
3965 l_locator_id ic_loct_mst.inventory_location_id%TYPE;
3966 l_subinv mtl_item_locations.subinventory_code%TYPE;
3967 lsub_organization_id mtl_item_locations.organization_id%TYPE;
3968 l_loct_ctl ic_whse_mst.loct_ctl%TYPE;
3969 l_mon_loct_ctl ic_whse_mst.loct_ctl%TYPE;
3970 l_parent_lot_number gmd_samples.parent_lot_number%TYPE;
3971 l_lot_number gmd_samples.lot_number%TYPE;
3972 l_get_parent_only NUMBER := 0;
3973 l_failure_count NUMBER;
3974 l_return_status NUMBER;
3975 l_in_spec_status_id ic_lots_sts.status_id%TYPE;
3976 l_out_spec_status_id ic_lots_sts.status_id%TYPE;
3977 l_clone NUMBER;
3978 l_text_code NUMBER;
3979
3980 -- Bug# 5482253
3981 l_supl_org_id NUMBER;
3982 l_material_detail_id NUMBER;
3983
3984
3985 /*=======================================
3986 Cursor for gmd_specifications_b.
3987 Add organization id null check to
3988 select rows that have not migrated.
3989 Org id not null means either it was
3990 migrated or row was created post-migration.
3991 =======================================*/
3992
3993 -- Bug# 5097457
3994 -- Removed owner_organization_id IS NULL from the where clause and added owner_orgn_code IS NOT NULL.
3995 CURSOR get_specs IS
3996 SELECT item_id, owner_organization_id, owner_orgn_code, spec_id
3997 FROM gmd_specifications_b
3998 WHERE migrated_ind IS NULL
3999 AND owner_orgn_code IS NOT NULL;
4000
4001 l_spec_inv_item_id gmd_specifications_b.inventory_item_id%TYPE;
4002 l_owner_org_id gmd_specifications_b.owner_organization_id%TYPE;
4003
4004 /*=======================================
4005 Cursor for gmd_inventory_spec_vrs.
4006 =======================================*/
4007
4008 CURSOR get_inv_spec IS
4009 SELECT * from gmd_inventory_spec_vrs
4010 WHERE migrated_ind IS NULL
4011 ORDER BY orgn_code;
4012
4013 l_inv_spec gmd_inventory_spec_vrs%ROWTYPE;
4014
4015
4016 /*=======================================
4017 Cursor to get Item_id for a Lot.
4018 =======================================*/
4019
4020 l_item_id gmd_specifications_b.item_id%TYPE;
4021
4022 -- If item_id for lot is not available from lot, get it from the spec.
4023
4024 CURSOR get_spec_item_id (p_spec_id gmd_specifications.spec_id%TYPE) IS
4025 SELECT item_id
4026 FROM gmd_specifications_b
4027 WHERE spec_id = p_spec_id;
4028
4029 /*=======================================
4030 Cursor to get Item lot control info.
4031 =======================================*/
4032
4033 CURSOR get_item_data IS
4034 SELECT sublot_ctl
4035 FROM ic_item_mst_b
4036 WHERE item_id = l_item_id;
4037
4038 l_sublot_ctl ic_item_mst_b.sublot_ctl%TYPE;
4039
4040 /*====================================================
4041 Cursor to check if gmd_inventory_spec_vrs exists.
4042 ====================================================*/
4043
4044 l_sample_orgn_code gmd_sampling_events.orgn_code%TYPE;
4045
4046 -- Bug# 5482253
4047 -- Commented the following cursor definition and added it with the new where clause.
4048
4049 /*CURSOR check_inv_spec IS
4050 SELECT spec_vr_id
4051 FROM gmd_inventory_spec_vrs
4052 WHERE orgn_code = l_sample_orgn_code
4053 AND whse_code = l_inv_spec.whse_code
4054 AND location = l_inv_spec.location
4055 AND lot_no = l_inv_spec.lot_no
4056 AND sublot_no = l_inv_spec.sublot_no;*/
4057
4058 CURSOR check_inv_spec IS
4059 SELECT spec_vr_id
4060 FROM gmd_inventory_spec_vrs
4061 WHERE orgn_code = l_sample_orgn_code
4062 AND spec_id = l_inv_spec.spec_id
4063 AND ( (whse_code IS NULL AND l_inv_spec.whse_code IS NULL) OR
4064 (whse_code = l_inv_spec.whse_code)
4065 )
4066 AND ( (location IS NULL AND l_inv_spec.location IS NULL) OR
4067 (location = l_inv_spec.location)
4068 )
4069 AND ( (lot_no IS NULL AND l_inv_spec.lot_no IS NULL) OR
4070 (lot_no = l_inv_spec.lot_no)
4071 )
4072 AND ( (sublot_no IS NULL AND l_inv_spec.sublot_no IS NULL) OR
4073 (sublot_no = l_inv_spec.sublot_no)
4074 );
4075
4076
4077 l_check_vrid gmd_inventory_spec_vrs.spec_vr_id%TYPE;
4078
4079
4080 /*=======================================
4081 Cursor to get orgn_codes for sample
4082 that inventory validity rule is tied to.
4083 =======================================*/
4084
4085 CURSOR get_sample_org (v_spec_id gmd_inventory_spec_vrs.spec_vr_id%TYPE) IS
4086 SELECT DISTINCT gse.orgn_code, gse.organization_id
4087 FROM gmd_sampling_events gse, gmd_event_spec_disp gesd,
4088 gmd_inventory_spec_vrs gisv
4089 WHERE gse.sampling_event_id = gesd.sampling_event_id
4090 AND gesd.spec_vr_id = gisv.spec_vr_id
4091 AND gisv.spec_vr_id = v_spec_id;
4092
4093 l_sample_organization_id gmd_sampling_events.organization_id%TYPE;
4094
4095
4096 /*=======================================
4097 Cursor for gmd_wip_spec.
4098 =======================================*/
4099
4100 -- Bug# 5109249
4101 -- Commented the organization_id from the where clause
4102 CURSOR get_wip_spec IS
4103 SELECT * from gmd_wip_spec_vrs
4104 WHERE migrated_ind IS NULL
4105 --AND organization_id IS NULL
4106 ORDER BY orgn_code;
4107
4108 l_wip_spec gmd_wip_spec_vrs%ROWTYPE;
4109 l_wip_org_id gmd_wip_spec_vrs.organization_id%TYPE;
4110
4111 /*=======================================
4112 Cursor to get orgn_codes for sample
4113 that wip validity rule is tied to.
4114 =======================================*/
4115
4116 CURSOR get_wip_sample_org (v_spec_id gmd_wip_spec_vrs.spec_vr_id%TYPE) IS
4117 SELECT DISTINCT gse.orgn_code, gse.organization_id
4118 FROM gmd_sampling_events gse, gmd_event_spec_disp gesd,
4119 gmd_wip_spec_vrs gwsv
4120 WHERE gse.sampling_event_id = gesd.sampling_event_id
4121 AND gesd.spec_vr_id = gwsv.spec_vr_id
4122 AND gwsv.spec_vr_id = v_spec_id;
4123
4124 /*=======================================
4125 Cursor to check if wip validity rule
4126 exists.
4127 =======================================*/
4128
4129 -- Bug# 5482253
4130 -- Commented the following cursor definition and added it with the new where clause.
4131
4132 /*CURSOR check_wip_spec IS
4133 SELECT spec_vr_id
4134 FROM gmd_wip_spec_vrs
4135 WHERE orgn_code = l_sample_orgn_code;*/
4136
4137 CURSOR check_wip_spec IS
4138 SELECT spec_vr_id
4139 FROM gmd_wip_spec_vrs
4140 WHERE orgn_code = l_sample_orgn_code
4141 AND spec_id = l_wip_spec.spec_id
4142 AND ( (batch_id IS NULL AND l_wip_spec.batch_id IS NULL) OR
4143 (batch_id = l_wip_spec.batch_id)
4144 )
4145 AND ( (recipe_id IS NULL AND l_wip_spec.recipe_id IS NULL) OR
4146 (recipe_id = l_wip_spec.recipe_id)
4147 )
4148 AND ( (recipe_no IS NULL AND l_wip_spec.recipe_no IS NULL) OR
4149 (recipe_no = l_wip_spec.recipe_no)
4150 )
4151 AND ( (formula_id IS NULL AND l_wip_spec.formula_id IS NULL) OR
4152 (formula_id = l_wip_spec.formula_id)
4153 )
4154 AND ( (formula_no IS NULL AND l_wip_spec.formula_no IS NULL) OR
4155 (formula_no = l_wip_spec.formula_no)
4156 )
4157 AND ( (formulaline_id IS NULL AND l_wip_spec.formulaline_id IS NULL) OR
4158 (formulaline_id = l_wip_spec.formulaline_id)
4159 )
4160 AND ( (routing_id IS NULL AND l_wip_spec.routing_id IS NULL) OR
4161 (routing_id = l_wip_spec.routing_id)
4162 )
4163 AND ( (routing_no IS NULL AND l_wip_spec.routing_no IS NULL) OR
4164 (routing_no = l_wip_spec.routing_no)
4165 )
4166 AND ( (step_id IS NULL AND l_wip_spec.step_id IS NULL) OR
4167 (step_id = l_wip_spec.step_id)
4168 )
4169 AND ( (oprn_id IS NULL AND l_wip_spec.oprn_id IS NULL) OR
4170 (oprn_id = l_wip_spec.oprn_id)
4171 )
4172 AND ( (oprn_no IS NULL AND l_wip_spec.oprn_no IS NULL) OR
4173 (oprn_no = l_wip_spec.oprn_no)
4174 )
4175 AND ( (charge IS NULL AND l_wip_spec.charge IS NULL) OR
4176 (charge = l_wip_spec.charge)
4177 );
4178
4179 /*=======================================
4180 Cursor for gmd_customer_spec_vrs.
4181 =======================================*/
4182
4183 CURSOR get_cust_spec IS
4184 SELECT * from gmd_customer_spec_vrs
4185 WHERE migrated_ind IS NULL
4186 ORDER BY orgn_code;
4187
4188 l_cust_spec gmd_customer_spec_vrs%ROWTYPE;
4189
4190 /*=======================================
4191 Cursor to get orgn_codes for sample
4192 that customer validity rule is tied to.
4193 =======================================*/
4194
4195 CURSOR get_cust_sample_org (v_spec_id gmd_wip_spec_vrs.spec_vr_id%TYPE) IS
4196 SELECT DISTINCT gse.orgn_code, gse.organization_id
4197 FROM gmd_sampling_events gse, gmd_event_spec_disp gesd,
4198 gmd_customer_spec_vrs gcsv
4199 WHERE gse.sampling_event_id = gesd.sampling_event_id
4200 AND gesd.spec_vr_id = gcsv.spec_vr_id
4201 AND gcsv.spec_vr_id = v_spec_id;
4202
4203 /*=======================================
4204 Cursor to check if customer validity
4205 rule exists.
4206 =======================================*/
4207
4208 -- Bug# 5482253
4209 -- Commented the following cursor definition and added it with the new where clause.
4210
4211 /*CURSOR check_cust_spec IS
4212 SELECT spec_vr_id
4213 FROM gmd_customer_spec_vrs
4214 WHERE orgn_code = l_sample_orgn_code;*/
4215
4216 CURSOR check_cust_spec IS
4217 SELECT spec_vr_id
4218 FROM gmd_customer_spec_vrs
4219 WHERE orgn_code = l_sample_orgn_code
4220 AND spec_id = l_cust_spec.spec_id
4221 AND ( (cust_id IS NULL AND l_cust_spec.cust_id IS NULL) OR
4222 (cust_id = l_cust_spec.cust_id)
4223 )
4224 AND ( (org_id IS NULL AND l_cust_spec.org_id IS NULL) OR
4225 (org_id = l_cust_spec.org_id)
4226 )
4227 AND ( (order_id IS NULL AND l_cust_spec.order_id IS NULL) OR
4228 (order_id = l_cust_spec.order_id)
4229 )
4230 AND ( (order_line IS NULL AND l_cust_spec.order_line IS NULL) OR
4231 (order_line = l_cust_spec.order_line)
4232 )
4233 AND ( (order_line_id IS NULL AND l_cust_spec.order_line_id IS NULL) OR
4234 (order_line_id = l_cust_spec.order_line_id)
4235 )
4236 AND ( (ship_to_site_id IS NULL AND l_cust_spec.ship_to_site_id IS NULL) OR
4237 (ship_to_site_id = l_cust_spec.ship_to_site_id)
4238 );
4239
4240 /*=======================================
4241 Cursor for gmd_supplier_spec.
4242 =======================================*/
4243
4244 CURSOR get_supplier_spec IS
4245 SELECT *
4246 FROM gmd_supplier_spec_vrs
4247 WHERE migrated_ind IS NULL
4248 ORDER BY orgn_code;
4249
4250 l_supl_spec gmd_supplier_spec_vrs%ROWTYPE;
4251
4252 /*=======================================
4253 Cursor to get orgn_codes for sample
4254 that supplier validity rule is tied to.
4255 =======================================*/
4256
4257 CURSOR get_supl_sample_org (v_spec_id gmd_wip_spec_vrs.spec_vr_id%TYPE) IS
4258 SELECT DISTINCT gse.orgn_code, gse.organization_id
4259 FROM gmd_sampling_events gse, gmd_event_spec_disp gesd,
4260 gmd_supplier_spec_vrs gssv
4261 WHERE gse.sampling_event_id = gesd.sampling_event_id
4262 AND gesd.spec_vr_id = gssv.spec_vr_id
4263 AND gssv.spec_vr_id = v_spec_id;
4264
4265 /*=======================================
4266 Cursor to check if Supplier validity
4267 rule exists.
4268 =======================================*/
4269
4270 -- Bug# 5482253
4271 -- Commented the following cursor definition and added it with the new where clause.
4272
4273 /*CURSOR check_supl_spec IS
4274 SELECT spec_vr_id
4275 FROM gmd_supplier_spec_vrs
4276 WHERE orgn_code = l_sample_orgn_code;*/
4277
4278 CURSOR check_supl_spec IS
4279 SELECT spec_vr_id
4280 FROM gmd_supplier_spec_vrs
4281 WHERE orgn_code = l_sample_orgn_code
4282 AND spec_id = l_supl_spec.spec_id
4283 AND ( (supplier_id IS NULL AND l_supl_spec.supplier_id IS NULL) OR
4284 (supplier_id = l_supl_spec.supplier_id)
4285 )
4286 AND ( (supplier_site_id IS NULL AND l_supl_spec.supplier_site_id IS NULL) OR
4287 (supplier_site_id = l_supl_spec.supplier_site_id)
4288 )
4289 AND ( (po_header_id IS NULL AND l_supl_spec.po_header_id IS NULL) OR
4290 (po_header_id = l_supl_spec.po_header_id)
4291 )
4292 AND ( (po_line_id IS NULL AND l_supl_spec.po_line_id IS NULL) OR
4293 (po_line_id = l_supl_spec.po_line_id)
4294 );
4295
4296
4297 /*=======================================
4298 Cursor for gmd_monitoring_spec_vrs.
4299 =======================================*/
4300
4301 -- Bug# 5097487
4302 -- Added rule_type = 'L' in the where clause since we dont want to process VR for resource as it is already done by gma upgrade script
4303 CURSOR get_monitor_spec IS
4304 SELECT *
4305 FROM gmd_monitoring_spec_vrs
4306 WHERE migrated_ind IS NULL
4307 AND rule_type = 'L'
4308 ORDER BY loct_orgn_code;
4309
4310 l_mon_spec gmd_monitoring_spec_vrs%ROWTYPE;
4311
4312 /*==========================================
4313 Cursor to get orgn_codes for sample
4314 that monitoring validity rule is tied to.
4315 ==========================================*/
4316
4317 CURSOR get_mon_sample_org (v_spec_id gmd_monitoring_spec_vrs.spec_vr_id%TYPE) IS
4318 SELECT DISTINCT gse.orgn_code, gse.organization_id
4319 FROM gmd_sampling_events gse, gmd_event_spec_disp gesd,
4320 gmd_monitoring_spec_vrs gmsv
4321 WHERE gse.sampling_event_id = gesd.sampling_event_id
4322 AND gesd.spec_vr_id = gmsv.spec_vr_id
4323 AND gmsv.spec_vr_id = v_spec_id;
4324
4325 /*=======================================
4326 Cursor to check if monitoring
4327 validity rule exists.
4328 =======================================*/
4329
4330 -- Bug# 5482253
4331 -- Commented the following cursor definition and added it with the new where clause.
4332
4333 /*CURSOR check_mon_spec IS
4334 SELECT spec_vr_id
4335 FROM gmd_monitoring_spec_vrs
4336 WHERE loct_orgn_code = l_sample_orgn_code
4337 AND whse_code = l_mon_spec.whse_code
4338 AND location = l_mon_spec.location;*/
4339
4340 CURSOR check_mon_spec IS
4341 SELECT spec_vr_id
4342 FROM gmd_monitoring_spec_vrs
4343 WHERE loct_orgn_code = l_sample_orgn_code
4344 AND spec_id = l_mon_spec.spec_id
4345 AND ( (whse_code IS NULL AND l_mon_spec.whse_code IS NULL) OR
4346 (whse_code = l_mon_spec.whse_code)
4347 )
4348 AND ( (location IS NULL AND l_mon_spec.location IS NULL) OR
4349 (location = l_mon_spec.location)
4350 );
4351
4352 BEGIN
4353
4354 x_exception_count := 0;
4355
4356 /*==============================================
4357 Log Start of gmd_specifications_b.
4358 ==============================================*/
4359
4360 GMA_COMMON_LOGGING.gma_migration_central_log (
4361 p_run_id => p_migration_run_id,
4362 p_log_level => FND_LOG.LEVEL_EVENT,
4363 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
4364 p_table_name => 'GMD_SPECIFICATIONS',
4365 p_token1 => 'TABLE_NAME',
4366 p_param1 => 'GMD_SPECIFICATIONS',
4367 p_context => 'Quality Specifications',
4368 p_app_short_name => 'GMA');
4369
4370 /*====================================
4371 Migrate gmd_specifications_b.
4372 ====================================*/
4373
4374 GMD_QC_MIG12.g_progress_ind := 1;
4375 GMD_QC_MIG12.g_specs_pro_count := 0;
4376 GMD_QC_MIG12.g_specs_upd_count := 0;
4377 GMD_QC_MIG12.g_specs_err_count := 0;
4378
4379 FOR v_specs_b IN get_specs LOOP
4380 BEGIN -- specs subprogram
4381 GMD_QC_MIG12.g_specs_pro_count := GMD_QC_MIG12.g_specs_pro_count + 1;
4382 /*==========================================
4383 Get organization_id.
4384 ==========================================*/
4385 l_owner_org_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(v_specs_b.owner_orgn_code);
4386 IF (l_owner_org_id IS NULL) THEN
4387 RAISE MIG_NO_ORG;
4388 END IF;
4389
4390 /*=========================
4391 Get Inventory Item id.
4392 =========================*/
4393
4394 IF (v_specs_b.item_id IS NOT NULL and l_owner_org_id IS NOT NULL) THEN
4395 INV_OPM_ITEM_MIGRATION.GET_ODM_ITEM(
4396 P_MIGRATION_RUN_ID => p_migration_run_id,
4397 P_ITEM_ID => v_specs_b.item_id,
4398 P_ORGANIZATION_ID => l_owner_org_id,
4399 P_MODE => NULL,
4400 P_COMMIT => FND_API.G_TRUE,
4401 X_INVENTORY_ITEM_ID => l_spec_inv_item_id,
4402 X_FAILURE_COUNT => l_failure_count);
4403
4404 IF (l_failure_count > 0) THEN
4405 RAISE MIG_ODM_ITEM;
4406 END IF;
4407 ELSE
4408 l_spec_inv_item_id := NULL;
4409 END IF;
4410
4411 /*==================================
4412 Update gmd_specifications_b.
4413 ==================================*/
4414
4415 -- Bug# 5097457
4416 -- Added grade_code in the update statement
4417 UPDATE gmd_specifications_b
4418 SET inventory_item_id = l_spec_inv_item_id,
4419 owner_organization_id = l_owner_org_id,
4420 grade_code = grade,
4421 migrated_ind = 1
4422 WHERE spec_id = v_specs_b.spec_id;
4423
4424 IF (p_commit = FND_API.G_TRUE) THEN
4425 COMMIT;
4426 END IF;
4427
4428 GMD_QC_MIG12.g_specs_upd_count := GMD_QC_MIG12.g_specs_upd_count + 1;
4429
4430 EXCEPTION
4431
4432 WHEN MIG_NO_ORG THEN
4433 GMA_COMMON_LOGGING.gma_migration_central_log (
4434 p_run_id => p_migration_run_id,
4435 p_log_level => FND_LOG.LEVEL_ERROR,
4436 p_message_token => 'GMD_MIG_NO_ORG',
4437 p_table_name => NULL,
4438 p_context => 'Quality Specifications - gmd_specifications_b',
4439 p_token1 => 'ORG',
4440 p_token2 => 'ONAME',
4441 p_token3 => 'ROWK',
4442 p_token4 => 'ROWV',
4443 p_param1 => v_specs_b.owner_orgn_code,
4444 p_param2 => 'OWNER_ORGN_CODE',
4445 p_param3 => 'SPEC_ID',
4446 p_param4 => to_char(v_specs_b.spec_id),
4447 p_app_short_name => 'GMD');
4448 GMD_QC_MIG12.g_specs_err_count := GMD_QC_MIG12.g_specs_err_count + 1;
4449 x_exception_count := x_exception_count + 1;
4450
4451 WHEN MIG_ODM_ITEM THEN
4452 GMA_COMMON_LOGGING.gma_migration_central_log (
4453 p_run_id => p_migration_run_id,
4454 p_log_level => FND_LOG.LEVEL_ERROR,
4455 p_message_token => 'GMD_MIG_ODM_ITEM',
4456 p_context => 'Quality Specifications - gmd_specifications_b',
4457 p_token1 => 'ORG',
4458 p_token2 => 'ITEMID',
4459 p_token3 => 'ROWK',
4460 p_token4 => 'ROWV',
4461 p_param1 => to_char(v_specs_b.owner_organization_id),
4462 p_param2 => to_char(v_specs_b.item_id),
4463 p_param3 => 'SPEC_ID',
4464 p_param4 => to_char(v_specs_b.spec_id),
4465 p_app_short_name => 'GMD');
4466 GMD_QC_MIG12.g_specs_err_count := GMD_QC_MIG12.g_specs_err_count + 1;
4467 x_exception_count := x_exception_count + 1;
4468
4469 WHEN OTHERS THEN
4470 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
4471 GMA_COMMON_LOGGING.gma_migration_central_log (
4472 p_run_id => p_migration_run_id,
4473 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
4474 p_message_token => 'GMA_MIGRATION_DB_ERROR',
4475 p_context => 'Quality Specifications - gmd_specifications_b',
4476 p_db_error => SQLERRM,
4477 p_app_short_name => 'GMA');
4478 x_exception_count := x_exception_count + 1;
4479
4480 END; -- end specs subprogram
4481
4482 END LOOP;
4483
4484 /*==============================================
4485 Log end of gmd_specifications_b migration.
4486 ==============================================*/
4487
4488 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
4489
4490 /*===============================================
4491 NOTE: gmd_spec_tests_b will be migrated by
4492 Common migration scripts. We will not
4493 confirm that it was successful via the
4494 Quality script.
4495 ===============================================*/
4496
4497 /*=======================================
4498 Migrate gmd_inventory_spec_vrs.
4499 =======================================*/
4500
4501 GMA_COMMON_LOGGING.gma_migration_central_log (
4502 p_run_id => p_migration_run_id,
4503 p_log_level => FND_LOG.LEVEL_EVENT,
4504 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
4505 p_table_name => 'GMD_INVENTORY_SPEC_VRS',
4506 p_token1 => 'TABLE_NAME',
4507 p_param1 => 'GMD_INVENTORY_SPEC_VRS',
4508 p_context => 'Quality Specifications',
4509 p_app_short_name => 'GMA');
4510
4511 GMD_QC_MIG12.g_progress_ind := 2;
4512 GMD_QC_MIG12.g_inv_spec_pro_count := 0;
4513 GMD_QC_MIG12.g_inv_spec_ins_count := 0;
4514 GMD_QC_MIG12.g_inv_spec_del_count := 0;
4515 GMD_QC_MIG12.g_inv_spec_upd_count := 0;
4516 GMD_QC_MIG12.g_inv_spec_err_count := 0;
4517
4518 FOR l_inv_spec IN get_inv_spec LOOP
4519 BEGIN -- inv spec subprogram
4520 GMD_QC_MIG12.g_inv_spec_pro_count := GMD_QC_MIG12.g_inv_spec_pro_count + 1;
4521 /*======================================
4522 Check if organizations migrated.
4523 ======================================*/
4524 IF (l_inv_spec.organization_id IS NULL and l_inv_spec.orgn_code IS NOT NULL) THEN
4525 RAISE ISPEC_NO_ORG;
4526 END IF;
4527
4528 /*========================================
4529 Check to see if rule will be cloned for
4530 each sample the rule is tied to.
4531 ========================================*/
4532
4533 IF (l_inv_spec.orgn_code IS NOT NULL) THEN
4534 l_clone := 0;
4535 ELSE
4536 IF (l_inv_spec.lot_no IS NOT NULL AND
4537 l_inv_spec.whse_code IS NULL and l_inv_spec.location IS NULL) THEN
4538 l_clone := 1;
4539 ELSE
4540 l_clone := 0;
4541 END IF;
4542 END IF;
4543
4544 l_organization_id := l_inv_spec.organization_id;
4545
4546 IF (l_inv_spec.orgn_code IS NOT NULL) THEN
4547 /*========================
4548 Get Subinventory.
4549 ========================*/
4550 IF (l_inv_spec.whse_code IS NOT NULL) THEN
4551 GMD_QC_MIG12.GET_WHSE_INFO(
4552 l_inv_spec.whse_code,
4553 ls_organization_id,
4554 l_subinv_ind,
4555 l_loct_ctl);
4556
4557 IF (ls_organization_id IS NULL) THEN
4558 RAISE ISPEC_WHSE_ERROR;
4559 END IF;
4560
4561 /*==========================================
4562 If Whse code is subinventory and
4563 org differs from org mapped then
4564 flag as an error.
4565 ==========================================*/
4566
4567 IF (l_subinv_ind = 'Y') THEN
4568 IF (ls_organization_id <> l_organization_id) THEN
4569 /*=========================================
4570 Log error and do not migrate.
4571 =========================================*/
4572 RAISE ISPEC_SUB_MISMATCH;
4573 END IF;
4574 ELSE
4575 l_organization_id := ls_organization_id;
4576 END IF;
4577 l_subinventory := l_inv_spec.whse_code;
4578
4579 /*=========================
4580 Get Locator Id.
4581 =========================*/
4582
4583 IF (l_inv_spec.location IS NOT NULL) THEN
4584 IF (l_inv_spec.location = 'NONE') THEN
4585 l_locator_id := NULL;
4586 ELSE
4587 l_locator_id := GMD_QC_MIG12.GET_LOCATOR_ID(l_inv_spec.whse_code, l_inv_spec.location);
4588 IF (l_locator_id IS NULL) THEN
4589 IF (l_loct_ctl = 2) THEN
4590 /*======================================
4591 Create a Non-validated location.
4592 ======================================*/
4593 INV_MIGRATE_PROCESS_ORG.CREATE_LOCATION (
4594 p_migration_run_id => p_migration_run_id,
4595 p_organization_id => l_organization_id,
4596 p_subinventory_code => l_subinventory,
4597 p_location => l_inv_spec.location,
4598 p_loct_desc => l_inv_spec.location,
4599 p_start_date_active => SYSDATE,
4600 p_commit => p_commit,
4601 x_location_id => l_locator_id,
4602 x_failure_count => l_failure_count);
4603
4604 IF (l_failure_count > 0) THEN
4605 RAISE ISPEC_NON_LOC;
4606 END IF;
4607 ELSE
4608 RAISE ISPEC_LOCATOR_ID;
4609 END IF;
4610 ELSE
4611 GMD_QC_MIG12.GET_SUBINV_DATA(l_locator_id,
4612 l_subinv,
4613 lsub_organization_id);
4614
4615 IF (lsub_organization_id IS NULL) THEN
4616 RAISE ISPEC_SUBINV;
4617 END IF;
4618
4619 IF (l_subinv <> l_subinventory) THEN
4620 /*==============================================
4621 Overlay subinventory with locator subinv.
4622 ==============================================*/
4623 l_subinventory := l_subinv;
4624 END IF;
4625 END IF;
4626 END IF; -- location code is none
4627 ELSE -- location code is null
4628 l_locator_id := NULL;
4629 END IF; -- location is null
4630 ELSE -- whse code is null
4631 l_subinventory := NULL;
4632 l_locator_id := NULL;
4633 END IF; -- whse code is null
4634 ELSE -- orgn code is null
4635 l_organization_id := NULL;
4636 l_subinventory := NULL;
4637 l_locator_id := NULL;
4638 END IF; -- orgn code is null.
4639
4640 /*=================================
4641 Get Item Id from ic_lots_mst
4642 for use in Lot creation.
4643 =================================*/
4644
4645
4646 /*========================
4647 Get ODM Lot.
4648 ========================*/
4649
4650 IF (l_inv_spec.lot_no IS NOT NULL AND
4651 l_inv_spec.orgn_code IS NOT NULL) THEN
4652 l_item_id := NULL;
4653 OPEN get_spec_item_id (l_inv_spec.spec_id);
4654 FETCH get_spec_item_id INTO l_item_id;
4655 IF (get_spec_item_id%NOTFOUND) THEN
4656 CLOSE get_spec_item_id;
4657 RAISE ISPEC_GET_SPEC_ITEM;
4658 END IF;
4659 CLOSE get_spec_item_id;
4660 IF (l_item_id IS NULL) THEN
4661 RAISE ISPEC_GET_SPEC_ITEM;
4662 END IF;
4663
4664 OPEN get_item_data;
4665 FETCH get_item_data INTO l_sublot_ctl;
4666 IF (get_item_data%NOTFOUND) THEN
4667 CLOSE get_item_data;
4668 RAISE ISPEC_GET_OPM_ITEM;
4669 END IF;
4670 CLOSE get_item_data;
4671 IF (l_sublot_ctl = 1 AND l_inv_spec.sublot_no IS NULL) THEN
4672 l_get_parent_only := 1;
4673 ELSE
4674 l_get_parent_only := 0;
4675 END IF;
4676 IF (l_get_parent_only = 1) THEN
4677 l_parent_lot_number := l_inv_spec.lot_no;
4678 l_lot_number := null;
4679 ELSE
4680 inv_opm_lot_migration.GET_ODM_LOT (
4681 P_MIGRATION_RUN_ID => p_migration_run_id,
4682 P_ORGN_CODE => l_inv_spec.orgn_code,
4683 P_ITEM_ID => l_item_id,
4684 P_LOT_NO => l_inv_spec.lot_no,
4685 P_SUBLOT_NO => l_inv_spec.sublot_no,
4686 P_WHSE_CODE => NULL,
4687 P_LOCATION => NULL,
4688 P_GET_PARENT_ONLY => 0,
4689 P_COMMIT => FND_API.G_TRUE,
4690 X_LOT_NUMBER => l_lot_number,
4691 X_PARENT_LOT_NUMBER => l_parent_lot_number,
4692 X_FAILURE_COUNT => l_failure_count
4693 );
4694
4695 IF (l_failure_count > 0) THEN
4696 RAISE ISPEC_MIG_LOT;
4697 END IF;
4698 END IF;
4699 ELSE -- lot id is null.
4700 l_parent_lot_number := NULL;
4701 l_lot_number := NULL;
4702 END IF;
4703
4704 /*=====================================
4705 Get Status Ids.
4706 =====================================*/
4707
4708 IF (l_inv_spec.in_spec_lot_status IS NULL) THEN
4709 l_in_spec_status_id := NULL;
4710 ELSE
4711 l_in_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(l_inv_spec.in_spec_lot_status);
4712 IF (l_in_spec_status_id IS NULL) THEN
4713 RAISE ISPEC_IN_STATUS;
4714 END IF;
4715 END IF;
4716
4717 IF (l_inv_spec.out_of_spec_lot_status IS NULL) THEN
4718 l_out_spec_status_id := NULL;
4719 ELSE
4720 l_out_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(l_inv_spec.out_of_spec_lot_status);
4721 IF (l_out_spec_status_id IS NULL) THEN
4722 RAISE ISPEC_OUT_STATUS;
4723 END IF;
4724 END IF;
4725
4726 IF (l_clone = 0) THEN
4727
4728 /*================================
4729 Update gmd_inventory_spec_vrs
4730 ================================*/
4731
4732 UPDATE gmd_inventory_spec_vrs
4733 SET organization_id = l_organization_id,
4734 lot_number = l_lot_number,
4735 parent_lot_number = l_parent_lot_number,
4736 subinventory = l_subinventory,
4737 locator_id = l_locator_id,
4738 out_of_spec_lot_status_id = l_out_spec_status_id,
4739 in_spec_lot_status_id = l_in_spec_status_id,
4740 migrated_ind = 1
4741 WHERE spec_vr_id = l_inv_spec.spec_vr_id;
4742
4743 IF (p_commit = FND_API.G_TRUE) THEN
4744 COMMIT;
4745 END IF;
4746
4747 GMD_QC_MIG12.g_inv_spec_upd_count := GMD_QC_MIG12.g_inv_spec_upd_count + 1;
4748
4749 ELSE -- clone else
4750 /*================================================
4751 For each Sample orgn the rule is attached to
4752 create a new row. First overlay the null row.
4753 ================================================*/
4754 OPEN get_sample_org (l_inv_spec.spec_vr_id);
4755 FETCH get_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
4756 IF (get_sample_org%NOTFOUND) THEN
4757 CLOSE get_sample_org;
4758 /*========================================
4759 Log the spec record and Delete it
4760 as it is not tied to any Sample.
4761 ========================================*/
4762 GMA_COMMON_LOGGING.gma_migration_central_log (
4763 p_run_id => p_migration_run_id,
4764 p_log_level => FND_LOG.LEVEL_EVENT,
4765 p_message_token => 'GMD_MIG_SPEC_DELETE',
4766 p_table_name => NULL,
4767 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
4768 p_token1 => 'TAB',
4769 p_token2 => 'ORG',
4770 p_token3 => 'LOT',
4771 p_token4 => 'SUBLOT',
4772 p_param1 => 'gmd_inventory_spec_vrs',
4773 p_param2 => NVL(l_inv_spec.orgn_code,' '),
4774 p_param3 => NVL(l_inv_spec.lot_no,' '),
4775 p_param4 => NVL(l_inv_spec.sublot_no,' '),
4776 p_app_short_name => 'GMD');
4777
4778 /*==========================================
4779 This is not marked as an error.
4780 ==========================================*/
4781
4782 DELETE gmd_inventory_spec_vrs
4783 WHERE spec_vr_id = l_inv_spec.spec_vr_id;
4784
4785 IF (p_commit = FND_API.G_TRUE) THEN
4786 COMMIT;
4787 END IF;
4788
4789 GMD_QC_MIG12.g_inv_spec_del_count := GMD_QC_MIG12.g_inv_spec_del_count + 1;
4790 RAISE ISPEC_DELETE_INVSPEC; -- goes to next invspec record.
4791 END IF;
4792
4793 /*================================
4794 Check if combination exists
4795 for the first Sample related
4796 record.
4797 ================================*/
4798 BEGIN -- subprogram for check inv spec
4799 OPEN check_inv_spec;
4800 FETCH check_inv_spec INTO l_check_vrid;
4801 IF (check_inv_spec%FOUND) THEN
4802 CLOSE check_inv_spec;
4803 RAISE NEXT_IN_INV_LINE;
4804 END IF;
4805 CLOSE check_inv_spec;
4806
4807 /*=========================================
4808 Convert Sample org to organization_id,
4809 =========================================*/
4810 IF (l_sample_organization_id IS NULL) THEN
4811 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
4812 IF (l_sample_organization_id IS NULL) THEN
4813 CLOSE get_sample_org;
4814 RAISE ISPEC_SAMPLE_ORG; -- goes to next invspec record.
4815 END IF;
4816 END IF;
4817
4818 /*===================================
4819 Get ODM Lot for the new orgn.
4820 ===================================*/
4821
4822 l_item_id := NULL;
4823 OPEN get_spec_item_id (l_inv_spec.spec_id);
4824 FETCH get_spec_item_id INTO l_item_id;
4825 IF (get_spec_item_id%NOTFOUND) THEN
4826 CLOSE get_spec_item_id;
4827 RAISE ISPEC_GET_SPEC_ITEM;
4828 END IF;
4829 CLOSE get_spec_item_id;
4830 IF (l_item_id IS NULL) THEN
4831 RAISE ISPEC_GET_SPEC_ITEM;
4832 END IF;
4833
4834 OPEN get_item_data;
4835 FETCH get_item_data INTO l_sublot_ctl;
4836 IF (get_item_data%NOTFOUND) THEN
4837 CLOSE get_item_data;
4838 RAISE ISPEC_GET_OPM_ITEM;
4839 END IF;
4840 CLOSE get_item_data;
4841 IF (l_sublot_ctl = 1 AND l_inv_spec.sublot_no IS NULL) THEN
4842 l_get_parent_only := 1;
4843 ELSE
4844 l_get_parent_only := 0;
4845 END IF;
4846 IF (l_get_parent_only = 1) THEN
4847 l_parent_lot_number := l_inv_spec.lot_no;
4848 l_lot_number := null;
4849 ELSE
4850 inv_opm_lot_migration.GET_ODM_LOT (
4851 P_MIGRATION_RUN_ID => p_migration_run_id,
4852 P_ORGN_CODE => l_sample_orgn_code,
4853 P_ITEM_ID => l_item_id,
4854 P_LOT_NO => l_inv_spec.lot_no,
4855 P_SUBLOT_NO => l_inv_spec.sublot_no,
4856 P_WHSE_CODE => NULL,
4857 P_LOCATION => NULL,
4858 P_GET_PARENT_ONLY => 0,
4859 P_COMMIT => FND_API.G_TRUE,
4860 X_LOT_NUMBER => l_lot_number,
4861 X_PARENT_LOT_NUMBER => l_parent_lot_number,
4862 X_FAILURE_COUNT => l_failure_count
4863 );
4864
4865 IF (l_failure_count > 0) THEN
4866 RAISE ISPEC_MIG_LOT;
4867 END IF;
4868 END IF;
4869
4870 UPDATE gmd_inventory_spec_vrs
4871 SET organization_id = l_sample_organization_id,
4872 orgn_code = l_sample_orgn_code,
4873 lot_number = l_lot_number,
4874 parent_lot_number = l_parent_lot_number,
4875 subinventory = l_subinventory,
4876 locator_id = l_locator_id,
4877 out_of_spec_lot_status_id = l_out_spec_status_id,
4878 in_spec_lot_status_id = l_in_spec_status_id,
4879 migrated_ind = 1
4880 WHERE spec_vr_id = l_inv_spec.spec_vr_id;
4881
4882 GMD_QC_MIG12.g_inv_spec_upd_count := GMD_QC_MIG12.g_inv_spec_upd_count + 1;
4883
4884 EXCEPTION
4885 WHEN NEXT_IN_INV_LINE THEN
4886 NULL;
4887 /*========================================
4888 Continue to Sample records attached
4889 beyond the first one.
4890 *========================================*/
4891 END; -- end subprogram for check inv spec
4892
4893 FETCH get_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
4894
4895 WHILE get_sample_org%FOUND LOOP
4896 IF (get_sample_org%NOTFOUND) THEN
4897 EXIT;
4898 END IF;
4899
4900 /*================================
4901 Check if combination exists
4902 ================================*/
4903
4904 OPEN check_inv_spec;
4905 FETCH check_inv_spec INTO l_check_vrid;
4906 IF (check_inv_spec%FOUND) THEN
4907 CLOSE check_inv_spec;
4908 GOTO NEXT_SAMPLE_HEADER;
4909 END IF;
4910 CLOSE check_inv_spec;
4911 /*=========================================
4912 Convert Sample org to organization_id,
4913 =========================================*/
4914 IF (l_sample_organization_id IS NULL) THEN
4915 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
4916 IF (l_sample_organization_id IS NULL) THEN
4917 CLOSE get_sample_org;
4918 RAISE ISPEC_SAMPLE_ORG_ID;
4919 END IF;
4920 END IF;
4921
4922
4923 /*===================================
4924 Get ODM Lot for the new orgn.
4925 ===================================*/
4926 l_item_id := NULL;
4927 OPEN get_spec_item_id (l_inv_spec.spec_id);
4928 FETCH get_spec_item_id INTO l_item_id;
4929 IF (get_spec_item_id%NOTFOUND) THEN
4930 CLOSE get_spec_item_id;
4931 RAISE ISPEC_GET_SPEC_ITEM;
4932 END IF;
4933 CLOSE get_spec_item_id;
4934 IF (l_item_id IS NULL) THEN
4935 RAISE ISPEC_GET_SPEC_ITEM;
4936 END IF;
4937
4938 OPEN get_item_data;
4939 FETCH get_item_data INTO l_sublot_ctl;
4940 IF (get_item_data%NOTFOUND) THEN
4941 CLOSE get_item_data;
4942 RAISE ISPEC_GET_OPM_ITEM;
4943 END IF;
4944 CLOSE get_item_data;
4945 IF (l_sublot_ctl = 1 AND l_inv_spec.sublot_no IS NULL) THEN
4946 l_get_parent_only := 1;
4947 ELSE
4948 l_get_parent_only := 0;
4949 END IF;
4950 IF (l_get_parent_only = 1) THEN
4951 l_parent_lot_number := l_inv_spec.lot_no;
4952 l_lot_number := null;
4953 ELSE
4954 inv_opm_lot_migration.GET_ODM_LOT (
4955 P_MIGRATION_RUN_ID => p_migration_run_id,
4956 P_ORGN_CODE => l_sample_orgn_code,
4957 P_ITEM_ID => l_item_id,
4958 P_LOT_NO => l_inv_spec.lot_no,
4959 P_SUBLOT_NO => l_inv_spec.sublot_no,
4960 P_WHSE_CODE => NULL,
4961 P_LOCATION => NULL,
4962 P_GET_PARENT_ONLY => 0,
4963 P_COMMIT => FND_API.G_TRUE,
4964 X_LOT_NUMBER => l_lot_number,
4965 X_PARENT_LOT_NUMBER => l_parent_lot_number,
4966 X_FAILURE_COUNT => l_failure_count
4967 );
4968
4969 IF (l_failure_count > 0) THEN
4970 RAISE ISPEC_MIG_LOT;
4971 END IF;
4972 END IF;
4973
4974 /*================================
4975 Clone the record.
4976 Note erecord field assignment.
4977 ================================*/
4978
4979 IF (l_inv_spec.text_code IS NOT NULL AND l_inv_spec.text_code > 0) THEN
4980 l_text_code := GMD_QC_MIG12.COPY_TEXT(l_inv_spec.text_code, p_migration_run_id);
4981 ELSE
4982 l_text_code := NULL;
4983 END IF;
4984
4985 INSERT INTO gmd_inventory_spec_vrs (
4986 SPEC_VR_ID,
4987 SPEC_ID,
4988 ORGN_CODE,
4989 LOT_ID,
4990 LOT_NO,
4991 SUBLOT_NO,
4992 WHSE_CODE,
4993 LOCATION,
4994 SPEC_VR_STATUS,
4995 START_DATE,
4996 END_DATE,
4997 SAMPLING_PLAN_ID,
4998 SAMPLE_INV_TRANS_IND,
4999 CONTROL_LOT_ATTRIB_IND,
5000 LOT_OPTIONAL_ON_SAMPLE,
5001 IN_SPEC_LOT_STATUS,
5002 OUT_OF_SPEC_LOT_STATUS,
5003 CONTROL_BATCH_STEP_IND,
5004 COA_TYPE,
5005 COA_AT_SHIP_IND,
5006 COA_AT_INVOICE_IND,
5007 COA_REQ_FROM_SUPL_IND,
5008 DELETE_MARK,
5009 TEXT_CODE,
5010 ATTRIBUTE_CATEGORY,
5011 ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5, ATTRIBUTE6, ATTRIBUTE7,
5012 ATTRIBUTE8, ATTRIBUTE9, ATTRIBUTE10, ATTRIBUTE11, ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14,
5013 ATTRIBUTE15, ATTRIBUTE16, ATTRIBUTE17, ATTRIBUTE18, ATTRIBUTE19, ATTRIBUTE20, ATTRIBUTE21,
5014 ATTRIBUTE22, ATTRIBUTE23, ATTRIBUTE24, ATTRIBUTE25, ATTRIBUTE26, ATTRIBUTE27, ATTRIBUTE28,
5015 ATTRIBUTE29, ATTRIBUTE30,
5016 CREATION_DATE,
5017 CREATED_BY,
5018 LAST_UPDATED_BY,
5019 LAST_UPDATE_DATE,
5020 LAST_UPDATE_LOGIN,
5021 AUTO_SAMPLE_IND,
5022 DELAYED_LOT_ENTRY,
5023 MIGRATED_IND,
5024 ERECORD_SPEC_VR_ID,
5025 ORGANIZATION_ID,
5026 LOT_NUMBER,
5027 PARENT_LOT_NUMBER,
5028 SUBINVENTORY,
5029 LOCATOR_ID,
5030 OUT_OF_SPEC_LOT_STATUS_ID,
5031 IN_SPEC_LOT_STATUS_ID
5032 )
5033 VALUES
5034 (
5035 gmd_qc_spec_vr_id_s.nextval,
5036 l_inv_spec.SPEC_ID,
5037 l_sample_orgn_code,
5038 l_inv_spec.LOT_ID,
5039 l_inv_spec.LOT_NO,
5040 l_inv_spec.SUBLOT_NO,
5041 l_inv_spec.WHSE_CODE,
5042 l_inv_spec.LOCATION,
5043 l_inv_spec.SPEC_VR_STATUS,
5044 l_inv_spec.START_DATE,
5045 l_inv_spec.END_DATE,
5046 l_inv_spec.SAMPLING_PLAN_ID,
5047 l_inv_spec.SAMPLE_INV_TRANS_IND,
5048 l_inv_spec.CONTROL_LOT_ATTRIB_IND,
5049 l_inv_spec.LOT_OPTIONAL_ON_SAMPLE,
5050 l_inv_spec.IN_SPEC_LOT_STATUS,
5051 l_inv_spec.OUT_OF_SPEC_LOT_STATUS,
5052 l_inv_spec.CONTROL_BATCH_STEP_IND,
5053 l_inv_spec.COA_TYPE,
5054 l_inv_spec.COA_AT_SHIP_IND,
5055 l_inv_spec.COA_AT_INVOICE_IND,
5056 l_inv_spec.COA_REQ_FROM_SUPL_IND,
5057 l_inv_spec.DELETE_MARK,
5058 l_text_code,
5059 l_inv_spec.ATTRIBUTE_CATEGORY,
5060 l_inv_spec.ATTRIBUTE1, l_inv_spec.ATTRIBUTE2, l_inv_spec.ATTRIBUTE3, l_inv_spec.ATTRIBUTE4,
5061 l_inv_spec.ATTRIBUTE5, l_inv_spec.ATTRIBUTE6, l_inv_spec.ATTRIBUTE7, l_inv_spec.ATTRIBUTE8,
5062 l_inv_spec.ATTRIBUTE9, l_inv_spec.ATTRIBUTE10, l_inv_spec.ATTRIBUTE11, l_inv_spec.ATTRIBUTE12,
5063 l_inv_spec.ATTRIBUTE13, l_inv_spec.ATTRIBUTE14, l_inv_spec.ATTRIBUTE15, l_inv_spec.ATTRIBUTE16,
5064 l_inv_spec.ATTRIBUTE17, l_inv_spec.ATTRIBUTE18, l_inv_spec.ATTRIBUTE19, l_inv_spec.ATTRIBUTE20,
5065 l_inv_spec.ATTRIBUTE21, l_inv_spec.ATTRIBUTE22, l_inv_spec.ATTRIBUTE23, l_inv_spec.ATTRIBUTE24,
5066 l_inv_spec.ATTRIBUTE25, l_inv_spec.ATTRIBUTE26, l_inv_spec.ATTRIBUTE27, l_inv_spec.ATTRIBUTE28,
5067 l_inv_spec.ATTRIBUTE29, l_inv_spec.ATTRIBUTE30,
5068 SYSDATE,
5069 0,
5070 0,
5071 SYSDATE,
5072 NULL,
5073 l_inv_spec.AUTO_SAMPLE_IND,
5074 l_inv_spec.DELAYED_LOT_ENTRY,
5075 1,
5076 l_inv_spec.SPEC_VR_ID,
5077 l_sample_organization_id,
5078 l_lot_number,
5079 l_parent_lot_number,
5080 l_subinventory,
5081 l_locator_id,
5082 l_out_spec_status_id,
5083 l_in_spec_status_id
5084 );
5085
5086 GMD_QC_MIG12.g_inv_spec_ins_count := GMD_QC_MIG12.g_inv_spec_ins_count + 1;
5087
5088 <<NEXT_SAMPLE_HEADER>>
5089
5090 FETCH get_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
5091
5092 END LOOP; -- get_sample_org
5093
5094 CLOSE get_sample_org;
5095
5096 IF (p_commit = FND_API.G_TRUE) THEN
5097 COMMIT;
5098 END IF;
5099
5100 END IF; -- clone endif
5101
5102 EXCEPTION
5103
5104 WHEN ISPEC_NO_ORG THEN
5105 GMA_COMMON_LOGGING.gma_migration_central_log (
5106 p_run_id => p_migration_run_id,
5107 p_log_level => FND_LOG.LEVEL_ERROR,
5108 p_message_token => 'GMD_MIG_NO_ORG',
5109 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5110 p_token1 => 'ORG',
5111 p_token2 => 'ONAME',
5112 p_token3 => 'ROWK',
5113 p_token4 => 'ROWV',
5114 p_param1 => l_inv_spec.orgn_code,
5115 p_param2 => 'ORGN_CODE',
5116 p_param3 => 'SPEC_VR_ID',
5117 p_param4 => to_char(l_inv_spec.spec_vr_id),
5118 p_app_short_name => 'GMD');
5119 ROLLBACK;
5120 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5121 x_exception_count := x_exception_count + 1;
5122
5123
5124 WHEN ISPEC_WHSE_ERROR THEN
5125
5126 GMA_COMMON_LOGGING.gma_migration_central_log (
5127 p_run_id => p_migration_run_id,
5128 p_log_level => FND_LOG.LEVEL_ERROR,
5129 p_message_token => 'GMD_MIG_WHSE_ERROR',
5130 p_table_name => NULL,
5131 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5132 p_token1 => 'WHSE',
5133 p_token2 => 'WNAME',
5134 p_token3 => 'ROWK',
5135 p_token4 => 'ROWV',
5136 p_param1 => l_inv_spec.whse_code,
5137 p_param2 => 'WHSE_CODE',
5138 p_param3 => 'SPEC_VR_ID',
5139 p_param4 => to_char(l_inv_spec.spec_vr_id),
5140 p_app_short_name => 'GMD');
5141 ROLLBACK;
5142 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5143 x_exception_count := x_exception_count + 1;
5144
5145 WHEN ISPEC_SUB_MISMATCH THEN
5146 GMA_COMMON_LOGGING.gma_migration_central_log (
5147 p_run_id => p_migration_run_id,
5148 p_log_level => FND_LOG.LEVEL_ERROR,
5149 p_message_token => 'GMD_MIG_ISPEC_SUB_MISMATCH',
5150 p_table_name => NULL,
5151 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5152 p_token1 => 'VRID',
5153 p_token2 => 'ORG',
5154 p_token3 => 'WHSE',
5155 p_token4 => 'ORGID',
5156 p_token5 => 'WHSEID',
5157 p_param1 => to_char(l_inv_spec.spec_vr_id),
5158 p_param2 => l_inv_spec.orgn_code,
5159 p_param3 => l_inv_spec.whse_code,
5160 p_param4 => to_char(l_organization_id),
5161 p_param5 => to_char(ls_organization_id),
5162 p_app_short_name => 'GMD');
5163 ROLLBACK;
5164 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5165 x_exception_count := x_exception_count + 1;
5166
5167 WHEN ISPEC_NON_LOC THEN
5168 GMA_COMMON_LOGGING.gma_migration_central_log (
5169 p_run_id => p_migration_run_id,
5170 p_log_level => FND_LOG.LEVEL_ERROR,
5171 p_message_token => 'GMD_MIG_NONLOC_FAILURE',
5172 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5173 p_token1 => 'ROWK',
5174 p_token2 => 'ROWV',
5175 p_token3 => 'FNAME',
5176 p_param1 => 'SPEC_VR_ID',
5177 p_param2 => to_char(l_inv_spec.spec_vr_id),
5178 p_param3 => 'LOCATION',
5179 p_app_short_name => 'GMD');
5180 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5181 x_exception_count := x_exception_count + 1;
5182
5183
5184
5185 WHEN ISPEC_LOCATOR_ID THEN
5186 GMA_COMMON_LOGGING.gma_migration_central_log (
5187 p_run_id => p_migration_run_id,
5188 p_log_level => FND_LOG.LEVEL_ERROR,
5189 p_message_token => 'GMD_MIG_LOCATOR_ID',
5190 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5191 p_token1 => 'WHSE',
5192 p_token2 => 'LOCATION',
5193 p_token3 => 'LFIELD',
5194 p_token4 => 'ROWK',
5195 p_token5 => 'ROWV',
5196 p_param1 => l_inv_spec.whse_code,
5197 p_param2 => l_inv_spec.location,
5198 p_param3 => 'LOCATION',
5199 p_param4 => 'SPEC_VR_ID',
5200 p_param5 => to_char(l_inv_spec.spec_vr_id),
5201 p_app_short_name => 'GMD');
5202 ROLLBACK;
5203 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5204 x_exception_count := x_exception_count + 1;
5205
5206
5207 WHEN ISPEC_SUBINV THEN
5208 GMA_COMMON_LOGGING.gma_migration_central_log (
5209 p_run_id => p_migration_run_id,
5210 p_log_level => FND_LOG.LEVEL_ERROR,
5211 p_message_token => 'GMD_MIG_SUBINV',
5212 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5213 p_token1 => 'LOCATOR',
5214 p_token2 => 'ROWK',
5215 p_token3 => 'ROWV',
5216 p_param1 => to_char(l_locator_id),
5217 p_param2 => 'SPEC_VR_ID',
5218 p_param3 => to_char(l_inv_spec.spec_vr_id),
5219 p_app_short_name => 'GMD');
5220 ROLLBACK;
5221 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5222 x_exception_count := x_exception_count + 1;
5223
5224
5225 WHEN ISPEC_GET_OPM_LOT THEN
5226 GMA_COMMON_LOGGING.gma_migration_central_log (
5227 p_run_id => p_migration_run_id,
5228 p_log_level => FND_LOG.LEVEL_ERROR,
5229 p_message_token => 'GMD_MIG_GET_OPM_LOT',
5230 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5231 p_token1 => 'LOTID',
5232 p_token2 => 'ROWK',
5233 p_token3 => 'ROWV',
5234 p_param1 => to_char(l_inv_spec.lot_id),
5235 p_param2 => 'SPEC_VR_ID',
5236 p_param3 => to_char(l_inv_spec.spec_vr_id),
5237 p_app_short_name => 'GMD');
5238 ROLLBACK;
5239 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5240 x_exception_count := x_exception_count + 1;
5241
5242 WHEN ISPEC_GET_SPEC_ITEM THEN
5243 GMA_COMMON_LOGGING.gma_migration_central_log (
5244 p_run_id => p_migration_run_id,
5245 p_log_level => FND_LOG.LEVEL_ERROR,
5246 p_message_token => 'GMD_MIG_GET_ITEM_SPEC',
5247 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5248 p_token1 => 'SPECID',
5249 p_token2 => 'ROWK',
5250 p_token3 => 'ROWV',
5251 p_param1 => to_char(l_inv_spec.spec_id),
5252 p_param2 => 'SPEC_VR_ID',
5253 p_param3 => to_char(l_inv_spec.spec_vr_id),
5254 p_app_short_name => 'GMD');
5255 ROLLBACK;
5256 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5257 x_exception_count := x_exception_count + 1;
5258
5259
5260 WHEN ISPEC_GET_OPM_ITEM THEN
5261 GMA_COMMON_LOGGING.gma_migration_central_log (
5262 p_run_id => p_migration_run_id,
5263 p_log_level => FND_LOG.LEVEL_ERROR,
5264 p_message_token => 'GMD_MIG_OPM_ITEM',
5265 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5266 p_token1 => 'ITEMID',
5267 p_token2 => 'ROWK',
5268 p_token3 => 'ROWV',
5269 p_param1 => to_char(l_item_id),
5270 p_param2 => 'SPEC_VR_ID',
5271 p_param3 => to_char(l_inv_spec.spec_vr_id),
5272 p_app_short_name => 'GMD');
5273 ROLLBACK;
5274 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5275 x_exception_count := x_exception_count + 1;
5276
5277
5278 WHEN ISPEC_MIG_LOT THEN
5279 GMA_COMMON_LOGGING.gma_migration_central_log (
5280 p_run_id => p_migration_run_id,
5281 p_log_level => FND_LOG.LEVEL_ERROR,
5282 p_message_token => 'GMD_MIG_LOT',
5283 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5284 p_token1 => 'ROWK',
5285 p_token2 => 'ROWV',
5286 p_param1 => 'SPEC_VR_ID',
5287 p_param2 => to_char(l_inv_spec.spec_vr_id),
5288 p_app_short_name => 'GMD');
5289 ROLLBACK;
5290 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5291 x_exception_count := x_exception_count + 1;
5292
5293
5294 WHEN ISPEC_IN_STATUS THEN
5295 GMA_COMMON_LOGGING.gma_migration_central_log (
5296 p_run_id => p_migration_run_id,
5297 p_log_level => FND_LOG.LEVEL_ERROR,
5298 p_message_token => 'GMD_MIG_STATUS_ID',
5299 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5300 p_token1 => 'STAT',
5301 p_token2 => 'ROWK',
5302 p_token3 => 'ROWV',
5303 p_param1 => l_inv_spec.in_spec_lot_status,
5304 p_param2 => 'SPEC_VR_ID',
5305 p_param3 => to_char(l_inv_spec.spec_vr_id),
5306 p_app_short_name => 'GMD');
5307 ROLLBACK;
5308 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5309 x_exception_count := x_exception_count + 1;
5310
5311
5312 WHEN ISPEC_OUT_STATUS THEN
5313 GMA_COMMON_LOGGING.gma_migration_central_log (
5314 p_run_id => p_migration_run_id,
5315 p_log_level => FND_LOG.LEVEL_ERROR,
5316 p_message_token => 'GMD_MIG_STATUS_ID',
5317 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5318 p_token1 => 'STAT',
5319 p_token2 => 'ROWK',
5320 p_token3 => 'ROWV',
5321 p_param1 => l_inv_spec.out_of_spec_lot_status,
5322 p_param2 => 'SPEC_VR_ID',
5323 p_param3 => to_char(l_inv_spec.spec_vr_id),
5324 p_app_short_name => 'GMD');
5325 ROLLBACK;
5326 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5327 x_exception_count := x_exception_count + 1;
5328
5329 WHEN ISPEC_DELETE_INVSPEC THEN
5330 NULL;
5331
5332 WHEN ISPEC_SAMPLE_ORG THEN
5333 GMA_COMMON_LOGGING.gma_migration_central_log (
5334 p_run_id => p_migration_run_id,
5335 p_log_level => FND_LOG.LEVEL_ERROR,
5336 p_message_token => 'GMD_MIG_NULL_ORG_ID',
5337 p_table_name => NULL,
5338 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5339 p_token1 => 'ORG',
5340 p_token2 => 'ROWK',
5341 p_token3 => 'ROWV',
5342 p_param1 => l_sample_orgn_code,
5343 p_param2 => 'SPEC_VR_ID',
5344 p_param3 => to_char(l_inv_spec.spec_vr_id),
5345 p_app_short_name => 'GMD');
5346 ROLLBACK;
5347 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5348 x_exception_count := x_exception_count + 1;
5349
5350
5351 WHEN ISPEC_SAMPLE_ORG_ID THEN
5352 GMA_COMMON_LOGGING.gma_migration_central_log (
5353 p_run_id => p_migration_run_id,
5354 p_log_level => FND_LOG.LEVEL_ERROR,
5355 p_message_token => 'GMD_MIG_NULL_ORG_ID',
5356 p_table_name => NULL,
5357 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5358 p_token1 => 'ORG',
5359 p_token2 => 'ROWK',
5360 p_token3 => 'ROWV',
5361 p_param1 => l_sample_orgn_code,
5362 p_param2 => 'SPEC_VR_ID',
5363 p_param3 => to_char(l_inv_spec.spec_vr_id),
5364 p_app_short_name => 'GMD');
5365 ROLLBACK;
5366 GMD_QC_MIG12.g_inv_spec_err_count := GMD_QC_MIG12.g_inv_spec_err_count + 1;
5367 x_exception_count := x_exception_count + 1;
5368
5369 WHEN OTHERS THEN
5370 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
5371 GMA_COMMON_LOGGING.gma_migration_central_log (
5372 p_run_id => p_migration_run_id,
5373 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
5374 p_message_token => 'GMA_MIGRATION_DB_ERROR',
5375 p_context => 'Quality Specifications - gmd_inventory_spec_vrs',
5376 p_db_error => SQLERRM,
5377 p_app_short_name => 'GMA');
5378 ROLLBACK;
5379 x_exception_count := x_exception_count + 1;
5380
5381 END; -- end inv spec subprogram
5382
5383 END LOOP; -- end of get_inv_spec loop
5384
5385
5386
5387 /*==============================================
5388 Log end of gmd_inventory_spec_vrs migration.
5389 ==============================================*/
5390
5391 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
5392
5393
5394 /*================================
5395 Migrate gmd_wip_spec_vrs.
5396 ================================*/
5397
5398 GMA_COMMON_LOGGING.gma_migration_central_log (
5399 p_run_id => p_migration_run_id,
5400 p_log_level => FND_LOG.LEVEL_EVENT,
5401 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
5402 p_table_name => 'GMD_WIP_SPEC_VRS',
5403 p_token1 => 'TABLE_NAME',
5404 p_param1 => 'GMD_WIP_SPEC_VRS',
5405 p_context => 'Quality Specifications',
5406 p_app_short_name => 'GMA');
5407
5408 GMD_QC_MIG12.g_progress_ind := 3;
5409 GMD_QC_MIG12.g_wip_spec_pro_count := 0;
5410 GMD_QC_MIG12.g_wip_spec_ins_count := 0;
5411 GMD_QC_MIG12.g_wip_spec_del_count := 0;
5412 GMD_QC_MIG12.g_wip_spec_upd_count := 0;
5413 GMD_QC_MIG12.g_wip_spec_err_count := 0;
5414
5415 FOR l_wip_spec IN get_wip_spec LOOP
5416 BEGIN -- wip spec subprogram
5417 GMD_QC_MIG12.g_wip_spec_pro_count := GMD_QC_MIG12.g_wip_spec_pro_count + 1;
5418 /*===============================
5419 Migrate orgn_code.
5420 ===============================*/
5421
5422 -- Bug# 5438990
5423 -- Added IF condition to check if orgn_code is not null
5424 IF l_wip_spec.orgn_code IS NOT NULL THEN
5425 l_wip_org_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_wip_spec.orgn_code);
5426 IF (l_wip_org_id IS NULL) THEN
5427 RAISE WIP_NO_ORG;
5428 END IF;
5429 END IF;
5430
5431 /*=====================================
5432 Get Status Ids.
5433 =====================================*/
5434
5435 IF (l_wip_spec.in_spec_lot_status IS NULL) THEN
5436 l_in_spec_status_id := NULL;
5437 ELSE
5438 l_in_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(l_wip_spec.in_spec_lot_status);
5439 IF (l_in_spec_status_id IS NULL) THEN
5440 RAISE WIP_IN_STATUS;
5441 END IF;
5442 END IF;
5443
5444 IF (l_wip_spec.out_of_spec_lot_status IS NULL) THEN
5445 l_out_spec_status_id := NULL;
5446 ELSE
5447 l_out_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(l_wip_spec.out_of_spec_lot_status);
5448 IF (l_out_spec_status_id IS NULL) THEN
5449 RAISE WIP_OUT_STATUS;
5450 END IF;
5451 END IF;
5452
5453 -- Bug# 5482253
5454 -- Added code to populate material_detail_id so that Line and Type fields are populated when queried from the applications
5455 l_material_detail_id := NULL;
5456 IF l_wip_spec.batch_id IS NOT NULL AND l_wip_spec.formulaline_id IS NOT NULL THEN
5457 BEGIN
5458 SELECT material_detail_id INTO l_material_detail_id
5459 FROM gme_material_details
5460 WHERE batch_id = l_wip_spec.batch_id
5461 AND formulaline_id = l_wip_spec.formulaline_id;
5462 EXCEPTION
5463 WHEN OTHERS THEN
5464 l_material_detail_id := NULL;
5465 END;
5466 END IF;
5467
5468 /*=====================================
5469 Set Organization id.
5470 =====================================*/
5471
5472 IF (l_wip_spec.orgn_code IS NOT NULL) THEN
5473 l_organization_id := l_wip_org_id;
5474 /*=====================================
5475 Update gmd_wip_spec_vrs.
5476 =====================================*/
5477 UPDATE gmd_wip_spec_vrs
5478 SET out_of_spec_lot_status_id = l_out_spec_status_id,
5479 in_spec_lot_status_id = l_in_spec_status_id,
5480 organization_id = l_organization_id,
5481 material_detail_id = l_material_detail_id, -- Bug# 5482253
5482 migrated_ind = 1
5483 WHERE spec_vr_id = l_wip_spec.spec_vr_id;
5484
5485 GMD_QC_MIG12.g_wip_spec_upd_count := GMD_QC_MIG12.g_wip_spec_upd_count + 1;
5486
5487 IF (p_commit = FND_API.G_TRUE) THEN
5488 COMMIT;
5489 END IF;
5490
5491 ELSE -- org is null
5492 /*=====================================
5493 Loop and get all samples orgs that
5494 the Wip validity rule is tied to.
5495 =====================================*/
5496 OPEN get_wip_sample_org (l_wip_spec.spec_vr_id);
5497 FETCH get_wip_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
5498 IF (get_wip_sample_org%NOTFOUND) THEN
5499 CLOSE get_wip_sample_org;
5500 /*========================================
5501 Log the spec record and Delete it.
5502 ========================================*/
5503
5504 /*==========================================
5505 This is not marked as an error.
5506 ==========================================*/
5507
5508 DELETE gmd_wip_spec_vrs
5509 WHERE spec_vr_id = l_wip_spec.spec_vr_id;
5510
5511 IF (p_commit = FND_API.G_TRUE) THEN
5512 COMMIT;
5513 END IF;
5514
5515 GMD_QC_MIG12.g_wip_spec_del_count := GMD_QC_MIG12.g_wip_spec_del_count + 1;
5516
5517 RAISE WIP_SPEC_DELETE;
5518
5519 END IF ;
5520
5521 /*================================
5522 Check if combination exists
5523 for first sample orgn_code.
5524 ================================*/
5525 BEGIN -- subprogram for check wip spec
5526 OPEN check_wip_spec;
5527 FETCH check_wip_spec INTO l_check_vrid;
5528 IF (check_wip_spec%FOUND) THEN
5529 CLOSE check_wip_spec;
5530 RAISE NEXT_IN_WIP_LINE;
5531 END IF;
5532 CLOSE check_wip_spec;
5533
5534 /*=========================================
5535 Convert Sample org to organization_id,
5536 =========================================*/
5537 IF (l_sample_organization_id IS NULL) THEN
5538 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
5539 END IF;
5540
5541 IF (l_sample_organization_id IS NULL) THEN
5542 CLOSE get_wip_sample_org; -- Bug# 5554719 -- Changed it from get_sample_org to get_wip_sample_org
5543 RAISE WIP_SAMPLE_ORG;
5544 END IF;
5545
5546 /*=====================================
5547 Update gmd_wip_spec_vrs.
5548 =====================================*/
5549 UPDATE gmd_wip_spec_vrs
5550 SET out_of_spec_lot_status_id = l_out_spec_status_id,
5551 in_spec_lot_status_id = l_in_spec_status_id,
5552 organization_id = l_sample_organization_id,
5553 orgn_code = l_sample_orgn_code,
5554 material_detail_id = l_material_detail_id, -- Bug# 5482253
5555 migrated_ind = 1
5556 WHERE spec_vr_id = l_wip_spec.spec_vr_id;
5557
5558 GMD_QC_MIG12.g_wip_spec_upd_count := GMD_QC_MIG12.g_wip_spec_upd_count + 1;
5559
5560 EXCEPTION
5561 WHEN NEXT_IN_WIP_LINE THEN
5562 NULL;
5563
5564 END; -- end subprogram for check wip spec
5565
5566 FETCH get_wip_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
5567
5568 WHILE get_wip_sample_org%FOUND LOOP
5569 IF (get_wip_sample_org%NOTFOUND) THEN
5570 EXIT;
5571 END IF;
5572 /*================================
5573 Check if combination exists
5574 ================================*/
5575 OPEN check_wip_spec;
5576 FETCH check_wip_spec INTO l_check_vrid;
5577 IF (check_wip_spec%FOUND) THEN
5578 CLOSE check_wip_spec;
5579 GOTO NEXT_WIP_SAMPLE_HEADER;
5580 END IF;
5581 CLOSE check_wip_spec;
5582
5583 /*================================
5584 Convert the Sample Org.
5585 ================================*/
5586
5587 IF (l_sample_organization_id IS NULL) THEN
5588 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
5589 IF (l_sample_organization_id IS NULL) THEN
5590 CLOSE get_wip_sample_org;
5591 RAISE WIP_SAMPLE_ORG_ID;
5592 END IF;
5593 END IF;
5594
5595 /*==============================================
5596 Clone the null orgn_code record using the
5597 Sample orgn_code.
5598 ==============================================*/
5599 IF (l_wip_spec.text_code IS NOT NULL AND l_wip_spec.text_code > 0) THEN
5600 l_text_code := GMD_QC_MIG12.COPY_TEXT(l_wip_spec.text_code, p_migration_run_id);
5601 ELSE
5602 l_text_code := NULL;
5603 END IF;
5604
5605 INSERT INTO gmd_wip_spec_vrs
5606 (
5607 SPEC_VR_ID,
5608 SPEC_ID,
5609 ORGN_CODE,
5610 BATCH_ID,
5611 RECIPE_ID,
5612 RECIPE_NO,
5613 RECIPE_VERSION,
5614 FORMULA_ID,
5615 FORMULALINE_ID,
5616 FORMULA_NO,
5617 FORMULA_VERS,
5618 ROUTING_ID,
5619 ROUTING_NO,
5620 ROUTING_VERS,
5621 STEP_ID,
5622 STEP_NO,
5623 OPRN_ID,
5624 OPRN_NO,
5625 OPRN_VERS,
5626 CHARGE,
5627 SPEC_VR_STATUS,
5628 START_DATE,
5629 END_DATE,
5630 SAMPLING_PLAN_ID,
5631 SAMPLE_INV_TRANS_IND,
5632 LOT_OPTIONAL_ON_SAMPLE,
5633 CONTROL_LOT_ATTRIB_IND,
5634 OUT_OF_SPEC_LOT_STATUS,
5635 IN_SPEC_LOT_STATUS,
5636 COA_TYPE,
5637 CONTROL_BATCH_STEP_IND,
5638 COA_AT_SHIP_IND,
5639 COA_AT_INVOICE_IND,
5640 COA_REQ_FROM_SUPL_IND,
5641 DELETE_MARK,
5642 TEXT_CODE,
5643 ATTRIBUTE_CATEGORY,
5644 ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5, ATTRIBUTE6, ATTRIBUTE7,
5645 ATTRIBUTE8, ATTRIBUTE9, ATTRIBUTE10, ATTRIBUTE11, ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14,
5646 ATTRIBUTE15, ATTRIBUTE16, ATTRIBUTE17, ATTRIBUTE18, ATTRIBUTE19, ATTRIBUTE20, ATTRIBUTE21,
5647 ATTRIBUTE22, ATTRIBUTE23, ATTRIBUTE24, ATTRIBUTE25, ATTRIBUTE26, ATTRIBUTE27, ATTRIBUTE28,
5648 ATTRIBUTE29, ATTRIBUTE30,
5649 CREATION_DATE,
5650 CREATED_BY,
5651 LAST_UPDATED_BY,
5652 LAST_UPDATE_DATE,
5653 LAST_UPDATE_LOGIN,
5654 AUTO_SAMPLE_IND,
5655 DELAYED_LOT_ENTRY,
5656 MIGRATED_IND,
5657 ERECORD_SPEC_VR_ID,
5658 ORGANIZATION_ID,
5659 OUT_OF_SPEC_LOT_STATUS_ID,
5660 IN_SPEC_LOT_STATUS_ID,
5661 MATERIAL_DETAIL_ID -- Bug# 5482253
5662 )
5663 VALUES
5664 (
5665 gmd_qc_spec_vr_id_s.nextval,
5666 l_wip_spec.SPEC_ID,
5667 l_sample_orgn_code,
5668 l_wip_spec.BATCH_ID,
5669 l_wip_spec.RECIPE_ID,
5670 l_wip_spec.RECIPE_NO,
5671 l_wip_spec.RECIPE_VERSION,
5672 l_wip_spec.FORMULA_ID,
5673 l_wip_spec.FORMULALINE_ID,
5674 l_wip_spec.FORMULA_NO,
5675 l_wip_spec.FORMULA_VERS,
5676 l_wip_spec.ROUTING_ID,
5677 l_wip_spec.ROUTING_NO,
5678 l_wip_spec.ROUTING_VERS,
5679 l_wip_spec.STEP_ID,
5680 l_wip_spec.STEP_NO,
5681 l_wip_spec.OPRN_ID,
5682 l_wip_spec.OPRN_NO,
5683 l_wip_spec.OPRN_VERS,
5684 l_wip_spec.CHARGE,
5685 l_wip_spec.SPEC_VR_STATUS,
5686 l_wip_spec.START_DATE,
5687 l_wip_spec.END_DATE,
5688 l_wip_spec.SAMPLING_PLAN_ID,
5689 l_wip_spec.SAMPLE_INV_TRANS_IND,
5690 l_wip_spec.LOT_OPTIONAL_ON_SAMPLE,
5691 l_wip_spec.CONTROL_LOT_ATTRIB_IND,
5692 l_wip_spec.OUT_OF_SPEC_LOT_STATUS,
5693 l_wip_spec.IN_SPEC_LOT_STATUS,
5694 l_wip_spec.COA_TYPE,
5695 l_wip_spec.CONTROL_BATCH_STEP_IND,
5696 l_wip_spec.COA_AT_SHIP_IND,
5697 l_wip_spec.COA_AT_INVOICE_IND,
5698 l_wip_spec.COA_REQ_FROM_SUPL_IND,
5699 l_wip_spec.DELETE_MARK,
5700 l_text_code,
5701 l_wip_spec.ATTRIBUTE_CATEGORY,
5702 l_wip_spec.ATTRIBUTE1, l_wip_spec.ATTRIBUTE2, l_wip_spec.ATTRIBUTE3, l_wip_spec.ATTRIBUTE4,
5703 l_wip_spec.ATTRIBUTE5, l_wip_spec.ATTRIBUTE6, l_wip_spec.ATTRIBUTE7, l_wip_spec.ATTRIBUTE8,
5704 l_wip_spec.ATTRIBUTE9, l_wip_spec.ATTRIBUTE10, l_wip_spec.ATTRIBUTE11, l_wip_spec.ATTRIBUTE12,
5705 l_wip_spec.ATTRIBUTE13, l_wip_spec.ATTRIBUTE14, l_wip_spec.ATTRIBUTE15, l_wip_spec.ATTRIBUTE16,
5706 l_wip_spec.ATTRIBUTE17, l_wip_spec.ATTRIBUTE18, l_wip_spec.ATTRIBUTE19, l_wip_spec.ATTRIBUTE20,
5707 l_wip_spec.ATTRIBUTE21, l_wip_spec.ATTRIBUTE22, l_wip_spec.ATTRIBUTE23, l_wip_spec.ATTRIBUTE24,
5708 l_wip_spec.ATTRIBUTE25, l_wip_spec.ATTRIBUTE26, l_wip_spec.ATTRIBUTE27, l_wip_spec.ATTRIBUTE28,
5709 l_wip_spec.ATTRIBUTE29, l_wip_spec.ATTRIBUTE30,
5710 SYSDATE,
5711 0,
5712 0,
5713 SYSDATE,
5714 NULL,
5715 l_wip_spec.AUTO_SAMPLE_IND,
5716 l_wip_spec.DELAYED_LOT_ENTRY,
5717 1,
5718 l_wip_spec.SPEC_VR_ID,
5719 l_sample_organization_id,
5720 l_out_spec_status_id,
5721 l_in_spec_status_id,
5722 l_material_detail_id -- Bug# 5482253
5723 );
5724
5725 GMD_QC_MIG12.g_wip_spec_ins_count := GMD_QC_MIG12.g_wip_spec_ins_count + 1;
5726
5727 << NEXT_WIP_SAMPLE_HEADER >>
5728
5729 FETCH get_wip_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
5730
5731 END LOOP;
5732
5733 CLOSE get_wip_sample_org;
5734
5735 END IF; -- org is null
5736
5737 EXCEPTION
5738
5739 WHEN WIP_NO_ORG THEN
5740 GMA_COMMON_LOGGING.gma_migration_central_log (
5741 p_run_id => p_migration_run_id,
5742 p_log_level => FND_LOG.LEVEL_ERROR,
5743 p_message_token => 'GMD_MIG_NO_ORG',
5744 p_context => 'Quality Specifications - gmd_wip_spec_vrs',
5745 p_token1 => 'ORG',
5746 p_token2 => 'ONAME',
5747 p_token3 => 'ROWK',
5748 p_token4 => 'ROWV',
5749 p_param1 => l_wip_spec.orgn_code,
5750 p_param2 => 'ORGN_CODE',
5751 p_param3 => 'SPEC_VR_ID',
5752 p_param4 => to_char(l_wip_spec.spec_vr_id),
5753 p_app_short_name => 'GMD');
5754 GMD_QC_MIG12.g_wip_spec_err_count := GMD_QC_MIG12.g_wip_spec_err_count + 1;
5755 x_exception_count := x_exception_count + 1;
5756
5757 WHEN WIP_IN_STATUS THEN
5758 GMA_COMMON_LOGGING.gma_migration_central_log (
5759 p_run_id => p_migration_run_id,
5760 p_log_level => FND_LOG.LEVEL_ERROR,
5761 p_message_token => 'GMD_MIG_STATUS_ID',
5762 p_context => 'Quality Specifications - gmd_wip_spec_vrs',
5763 p_token1 => 'STAT',
5764 p_token2 => 'ROWK',
5765 p_token3 => 'ROWV',
5766 p_param1 => l_wip_spec.in_spec_lot_status,
5767 p_param2 => 'SPEC_VR_ID',
5768 p_param3 => to_char(l_wip_spec.spec_vr_id),
5769 p_app_short_name => 'GMD');
5770 GMD_QC_MIG12.g_wip_spec_err_count := GMD_QC_MIG12.g_wip_spec_err_count + 1;
5771 x_exception_count := x_exception_count + 1;
5772
5773
5774 WHEN WIP_OUT_STATUS THEN
5775 GMA_COMMON_LOGGING.gma_migration_central_log (
5776 p_run_id => p_migration_run_id,
5777 p_log_level => FND_LOG.LEVEL_ERROR,
5778 p_message_token => 'GMD_MIG_STATUS_ID',
5779 p_context => 'Quality Specifications - gmd_wip_spec_vrs',
5780 p_token1 => 'STAT',
5781 p_token2 => 'ROWK',
5782 p_token3 => 'ROWV',
5783 p_param1 => l_wip_spec.out_of_spec_lot_status,
5784 p_param2 => 'SPEC_VR_ID',
5785 p_param3 => to_char(l_wip_spec.spec_vr_id),
5786 p_app_short_name => 'GMD');
5787 GMD_QC_MIG12.g_wip_spec_err_count := GMD_QC_MIG12.g_wip_spec_err_count + 1;
5788 x_exception_count := x_exception_count + 1;
5789
5790
5791 WHEN WIP_SPEC_DELETE THEN
5792 GMA_COMMON_LOGGING.gma_migration_central_log (
5793 p_run_id => p_migration_run_id,
5794 p_log_level => FND_LOG.LEVEL_EVENT,
5795 p_message_token => 'GMD_MIG_COMMON_SPEC_DELETE',
5796 p_table_name => NULL,
5797 p_context => 'Quality Specifications - gmd_wip_spec_vrs',
5798 p_token1 => 'TAB',
5799 p_param1 => 'gmd_wip_spec_vrs',
5800 p_app_short_name => 'GMD');
5801
5802 WHEN WIP_SAMPLE_ORG THEN
5803 GMA_COMMON_LOGGING.gma_migration_central_log (
5804 p_run_id => p_migration_run_id,
5805 p_log_level => FND_LOG.LEVEL_ERROR,
5806 p_message_token => 'GMD_MIG_NULL_ORG_ID',
5807 p_table_name => NULL,
5808 p_context => 'Quality Specifications - gmd_wip_spec_vrs',
5809 p_token1 => 'ORG',
5810 p_token2 => 'ROWK',
5811 p_token3 => 'ROWV',
5812 p_param1 => l_sample_orgn_code,
5813 p_param2 => 'SPEC_VR_ID',
5814 p_param3 => to_char(l_wip_spec.spec_vr_id),
5815 p_app_short_name => 'GMD');
5816 GMD_QC_MIG12.g_wip_spec_err_count := GMD_QC_MIG12.g_wip_spec_err_count + 1;
5817 x_exception_count := x_exception_count + 1;
5818
5819 WHEN WIP_SAMPLE_ORG_ID THEN
5820 GMA_COMMON_LOGGING.gma_migration_central_log (
5821 p_run_id => p_migration_run_id,
5822 p_log_level => FND_LOG.LEVEL_ERROR,
5823 p_message_token => 'GMD_MIG_NULL_ORG_ID',
5824 p_table_name => NULL,
5825 p_context => 'Quality Specifications - gmd_wip_spec_vrs',
5826 p_token1 => 'ORG',
5827 p_token2 => 'ROWK',
5828 p_token3 => 'ROWV',
5829 p_param1 => l_sample_orgn_code,
5830 p_param2 => 'SPEC_VR_ID',
5831 p_param3 => to_char(l_wip_spec.spec_vr_id),
5832 p_app_short_name => 'GMD');
5833 GMD_QC_MIG12.g_wip_spec_err_count := GMD_QC_MIG12.g_wip_spec_err_count + 1;
5834 x_exception_count := x_exception_count + 1;
5835
5836
5837 WHEN OTHERS THEN
5838 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
5839 GMA_COMMON_LOGGING.gma_migration_central_log (
5840 p_run_id => p_migration_run_id,
5841 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
5842 p_message_token => 'GMA_MIGRATION_DB_ERROR',
5843 p_context => 'Quality Specifications - gmd_wip_spec_vrs',
5844 p_db_error => SQLERRM,
5845 p_app_short_name => 'GMA');
5846 ROLLBACK;
5847 x_exception_count := x_exception_count + 1;
5848
5849 END; -- wip spec subprogram
5850
5851
5852 END LOOP; -- get_wip_spec
5853
5854
5855
5856 /*==============================================
5857 Log end of gmd_wip_spec_vrs migration.
5858 ==============================================*/
5859
5860 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
5861
5862 /*=======================================
5863 Migrate gmd_customer_spec_vrs.
5864 =======================================*/
5865
5866 GMA_COMMON_LOGGING.gma_migration_central_log (
5867 p_run_id => p_migration_run_id,
5868 p_log_level => FND_LOG.LEVEL_EVENT,
5869 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
5870 p_table_name => 'GMD_CUSTOMER_SPEC_VRS',
5871 p_token1 => 'TABLE_NAME',
5872 p_param1 => 'GMD_CUSTOMER_SPEC_VRS',
5873 p_context => 'Quality Specifications',
5874 p_app_short_name => 'GMA');
5875
5876 GMD_QC_MIG12.g_progress_ind := 4;
5877 GMD_QC_MIG12.g_cust_spec_pro_count := 0;
5878 GMD_QC_MIG12.g_cust_spec_ins_count := 0;
5879 GMD_QC_MIG12.g_cust_spec_del_count := 0;
5880 GMD_QC_MIG12.g_cust_spec_upd_count := 0;
5881 GMD_QC_MIG12.g_cust_spec_err_count := 0;
5882
5883 FOR l_cust_spec IN get_cust_spec LOOP
5884 BEGIN -- cust spec subprogram
5885 GMD_QC_MIG12.g_cust_spec_pro_count := GMD_QC_MIG12.g_cust_spec_pro_count + 1;
5886 IF (l_cust_spec.organization_id IS NULL and l_cust_spec.orgn_code IS NOT NULL) THEN
5887 RAISE CUST_NO_ORG;
5888 END IF;
5889
5890 IF (l_cust_spec.organization_id IS NOT NULL) THEN
5891 /*====================================
5892 Update gmd_customer_spec_vrs.
5893 ====================================*/
5894 UPDATE gmd_customer_spec_vrs
5895 SET migrated_ind = 1
5896 WHERE spec_vr_id = l_cust_spec.spec_vr_id;
5897
5898 IF (p_commit = FND_API.G_TRUE) THEN
5899 COMMIT;
5900 END IF;
5901
5902 GMD_QC_MIG12.g_cust_spec_upd_count := GMD_QC_MIG12.g_cust_spec_upd_count + 1;
5903
5904 ELSE -- org is null
5905 /*=======================================
5906 Loop and get all samples orgs that
5907 the Customer validity rule is tied to.
5908 =======================================*/
5909 OPEN get_cust_sample_org (l_cust_spec.spec_vr_id);
5910 FETCH get_cust_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
5911 IF (get_cust_sample_org%NOTFOUND) THEN
5912 CLOSE get_cust_sample_org;
5913 /*========================================
5914 Log the spec record and Delete it.
5915 ========================================*/
5916
5917 /*==========================================
5918 This is not marked as an error.
5919 ==========================================*/
5920
5921 DELETE gmd_customer_spec_vrs
5922 WHERE spec_vr_id = l_wip_spec.spec_vr_id;
5923
5924 IF (p_commit = FND_API.G_TRUE) THEN
5925 COMMIT;
5926 END IF;
5927
5928 GMD_QC_MIG12.g_cust_spec_del_count := GMD_QC_MIG12.g_cust_spec_del_count + 1;
5929 RAISE CUST_SPEC_DELETE;
5930 END IF ;
5931
5932 /*================================
5933 Check if combination exists
5934 for first sample related record.
5935 ================================*/
5936 BEGIN -- subprogram for check cust spec.
5937 OPEN check_cust_spec;
5938 FETCH check_cust_spec INTO l_check_vrid;
5939 IF (check_cust_spec%FOUND) THEN
5940 CLOSE check_cust_spec;
5941 RAISE NEXT_IN_CUST_LINE;
5942 END IF;
5943 CLOSE check_cust_spec;
5944
5945 /*================================
5946 Convert the Sample Org.
5947 ================================*/
5948 IF (l_sample_organization_id IS NULL) THEN
5949 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
5950 IF (l_sample_organization_id IS NULL) THEN
5951 CLOSE get_cust_sample_org; -- Bug# 5554719 -- Changed it from get_sample_org to get_cust_sample_org
5952 RAISE CUST_NO_ORG_ID;
5953 END IF;
5954 END IF;
5955
5956 /*=====================================
5957 Update gmd_customer_spec_vrs.
5958 =====================================*/
5959 UPDATE gmd_customer_spec_vrs
5960 SET orgn_code = l_sample_orgn_code,
5961 organization_id = l_sample_organization_id,
5962 migrated_ind = 1
5963 WHERE spec_vr_id = l_cust_spec.spec_vr_id;
5964
5965 GMD_QC_MIG12.g_cust_spec_upd_count := GMD_QC_MIG12.g_cust_spec_upd_count + 1;
5966
5967 EXCEPTION
5968
5969 WHEN NEXT_IN_CUST_LINE THEN
5970 NULL;
5971
5972 WHEN OTHERS THEN
5973 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
5974 GMA_COMMON_LOGGING.gma_migration_central_log (
5975 p_run_id => p_migration_run_id,
5976 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
5977 p_message_token => 'GMA_MIGRATION_DB_ERROR',
5978 p_context => 'Quality Specifications - gmd_customer_spec_vrs',
5979 p_db_error => SQLERRM,
5980 p_app_short_name => 'GMA');
5981 ROLLBACK;
5982 x_exception_count := x_exception_count + 1;
5983
5984
5985 END; -- end subprogram for check cust spec.
5986
5987 FETCH get_cust_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
5988
5989 WHILE get_cust_sample_org%FOUND LOOP
5990 /*================================
5991 Check if combination exists
5992 ================================*/
5993 IF (get_cust_sample_org%NOTFOUND) THEN
5994 EXIT;
5995 END IF;
5996 OPEN check_cust_spec;
5997 FETCH check_cust_spec INTO l_check_vrid;
5998 IF (check_cust_spec%FOUND) THEN
5999 CLOSE check_cust_spec;
6000 GOTO NEXT_CUST_SAMPLE;
6001 END IF;
6002 CLOSE check_cust_spec;
6003 /*================================
6004 Convert the Sample Org.
6005 ================================*/
6006 IF (l_sample_organization_id IS NULL) THEN
6007 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
6008 IF (l_sample_organization_id IS NULL) THEN
6009 CLOSE get_cust_sample_org; -- Bug# 5554719 -- Changed it from get_sample_org to get_cust_sample_org
6010 RAISE CUST_NO_ORG_ID;
6011 END IF;
6012 END IF;
6013
6014 /*===========================
6015 Clone the record.
6016 ===========================*/
6017 IF (l_cust_spec.text_code IS NOT NULL AND l_cust_spec.text_code > 0) THEN
6018 l_text_code := GMD_QC_MIG12.COPY_TEXT(l_cust_spec.text_code, p_migration_run_id);
6019 ELSE
6020 l_text_code := NULL;
6021 END IF;
6022
6023 INSERT INTO gmd_customer_spec_vrs
6024 (
6025 SPEC_VR_ID,
6026 SPEC_ID,
6027 ORGN_CODE,
6028 CUST_ID,
6029 ORDER_ID,
6030 ORDER_LINE,
6031 ORDER_LINE_ID,
6032 SHIP_TO_SITE_ID,
6033 ORG_ID,
6034 SPEC_VR_STATUS,
6035 START_DATE,
6036 END_DATE,
6037 SAMPLING_PLAN_ID,
6038 SAMPLE_INV_TRANS_IND,
6039 LOT_OPTIONAL_ON_SAMPLE,
6040 COA_TYPE,
6041 COA_AT_SHIP_IND,
6042 COA_AT_INVOICE_IND,
6043 COA_REQ_FROM_SUPL_IND,
6044 DELETE_MARK,
6045 TEXT_CODE,
6046 ATTRIBUTE_CATEGORY,
6047 ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5, ATTRIBUTE6, ATTRIBUTE7,
6048 ATTRIBUTE8, ATTRIBUTE9, ATTRIBUTE10, ATTRIBUTE11, ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14,
6049 ATTRIBUTE15, ATTRIBUTE16, ATTRIBUTE17, ATTRIBUTE18, ATTRIBUTE19, ATTRIBUTE20, ATTRIBUTE21,
6050 ATTRIBUTE22, ATTRIBUTE23, ATTRIBUTE24, ATTRIBUTE25, ATTRIBUTE26, ATTRIBUTE27, ATTRIBUTE28,
6051 ATTRIBUTE29, ATTRIBUTE30,
6052 CREATION_DATE,
6053 CREATED_BY,
6054 LAST_UPDATED_BY,
6055 LAST_UPDATE_DATE,
6056 LAST_UPDATE_LOGIN,
6057 MIGRATED_IND,
6058 ERECORD_SPEC_VR_ID,
6059 ORGANIZATION_ID
6060 )
6061 VALUES
6062 (
6063 gmd_qc_spec_vr_id_s.nextval,
6064 l_cust_spec.SPEC_ID,
6065 l_sample_orgn_code,
6066 l_cust_spec.CUST_ID,
6067 l_cust_spec.ORDER_ID,
6068 l_cust_spec.ORDER_LINE,
6069 l_cust_spec.ORDER_LINE_ID,
6070 l_cust_spec.SHIP_TO_SITE_ID,
6071 l_cust_spec.ORG_ID,
6072 l_cust_spec.SPEC_VR_STATUS,
6073 l_cust_spec.START_DATE,
6074 l_cust_spec.END_DATE,
6075 l_cust_spec.SAMPLING_PLAN_ID,
6076 l_cust_spec.SAMPLE_INV_TRANS_IND,
6077 l_cust_spec.LOT_OPTIONAL_ON_SAMPLE,
6078 l_cust_spec.COA_TYPE,
6079 l_cust_spec.COA_AT_SHIP_IND,
6080 l_cust_spec.COA_AT_INVOICE_IND,
6081 l_cust_spec.COA_REQ_FROM_SUPL_IND,
6082 l_cust_spec.DELETE_MARK,
6083 l_text_code,
6084 l_cust_spec.ATTRIBUTE_CATEGORY,
6085 l_cust_spec.ATTRIBUTE1, l_cust_spec.ATTRIBUTE2, l_cust_spec.ATTRIBUTE3, l_cust_spec.ATTRIBUTE4,
6086 l_cust_spec.ATTRIBUTE5, l_cust_spec.ATTRIBUTE6, l_cust_spec.ATTRIBUTE7, l_cust_spec.ATTRIBUTE8,
6087 l_cust_spec.ATTRIBUTE9, l_cust_spec.ATTRIBUTE10, l_cust_spec.ATTRIBUTE11, l_cust_spec.ATTRIBUTE12,
6088 l_cust_spec.ATTRIBUTE13, l_cust_spec.ATTRIBUTE14, l_cust_spec.ATTRIBUTE15, l_cust_spec.ATTRIBUTE16,
6089 l_cust_spec.ATTRIBUTE17, l_cust_spec.ATTRIBUTE18, l_cust_spec.ATTRIBUTE19, l_cust_spec.ATTRIBUTE20,
6090 l_cust_spec.ATTRIBUTE21, l_cust_spec.ATTRIBUTE22, l_cust_spec.ATTRIBUTE23, l_cust_spec.ATTRIBUTE24,
6091 l_cust_spec.ATTRIBUTE25, l_cust_spec.ATTRIBUTE26, l_cust_spec.ATTRIBUTE27, l_cust_spec.ATTRIBUTE28,
6092 l_cust_spec.ATTRIBUTE29, l_cust_spec.ATTRIBUTE30,
6093 SYSDATE,
6094 0,
6095 0,
6096 SYSDATE,
6097 NULL,
6098 1,
6099 l_cust_spec.SPEC_VR_ID,
6100 l_sample_organization_id
6101 );
6102
6103 GMD_QC_MIG12.g_cust_spec_ins_count := GMD_QC_MIG12.g_cust_spec_ins_count + 1;
6104
6105 << NEXT_CUST_SAMPLE>>
6106
6107 FETCH get_cust_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
6108
6109 END LOOP;
6110
6111 CLOSE get_cust_sample_org; -- Bug# 5554719
6112
6113 END IF; -- orgn code is null check
6114
6115 IF (p_commit = FND_API.G_TRUE) THEN
6116 COMMIT;
6117 END IF;
6118
6119 EXCEPTION
6120
6121 WHEN CUST_NO_ORG THEN
6122 GMA_COMMON_LOGGING.gma_migration_central_log (
6123 p_run_id => p_migration_run_id,
6124 p_log_level => FND_LOG.LEVEL_ERROR,
6125 p_message_token => 'GMD_MIG_NO_ORG',
6126 p_context => 'Quality Specifications - gmd_customer_spec_vrs',
6127 p_token1 => 'ORG',
6128 p_token2 => 'ONAME',
6129 p_token3 => 'ROWK',
6130 p_token4 => 'ROWV',
6131 p_param1 => l_cust_spec.orgn_code,
6132 p_param2 => 'ORGN_CODE',
6133 p_param3 => 'SPEC_VR_ID',
6134 p_param4 => to_char(l_cust_spec.spec_vr_id),
6135 p_app_short_name => 'GMD');
6136 ROLLBACK;
6137 GMD_QC_MIG12.g_cust_spec_err_count := GMD_QC_MIG12.g_cust_spec_err_count + 1;
6138 x_exception_count := x_exception_count + 1;
6139
6140 WHEN CUST_SPEC_DELETE THEN
6141 GMA_COMMON_LOGGING.gma_migration_central_log (
6142 p_run_id => p_migration_run_id,
6143 p_log_level => FND_LOG.LEVEL_ERROR,
6144 p_message_token => 'GMD_MIG_COMMON_SPEC_DELETE',
6145 p_table_name => NULL,
6146 p_context => 'Quality Specifications - gmd_customer_spec_vrs',
6147 p_token1 => 'TAB',
6148 p_param1 => 'gmd_customer_spec_vrs',
6149 p_app_short_name => 'GMD');
6150
6151
6152 WHEN CUST_NO_ORG_ID THEN
6153 GMA_COMMON_LOGGING.gma_migration_central_log (
6154 p_run_id => p_migration_run_id,
6155 p_log_level => FND_LOG.LEVEL_ERROR,
6156 p_message_token => 'GMD_MIG_NULL_ORG_ID',
6157 p_table_name => NULL,
6158 p_context => 'Quality Specifications - gmd_customer_spec_vrs',
6159 p_token1 => 'ORG',
6160 p_token2 => 'ROWK',
6161 p_token3 => 'ROWV',
6162 p_param1 => l_sample_orgn_code,
6163 p_param2 => 'SPEC_VR_ID',
6164 p_param3 => to_char(l_cust_spec.spec_vr_id),
6165 p_app_short_name => 'GMD');
6166 ROLLBACK;
6167 GMD_QC_MIG12.g_cust_spec_err_count := GMD_QC_MIG12.g_cust_spec_err_count + 1;
6168 x_exception_count := x_exception_count + 1;
6169
6170 WHEN OTHERS THEN
6171 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
6172 GMA_COMMON_LOGGING.gma_migration_central_log (
6173 p_run_id => p_migration_run_id,
6174 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
6175 p_message_token => 'GMA_MIGRATION_DB_ERROR',
6176 p_context => 'Quality Specifications - gmd_customer_spec_vrs',
6177 p_db_error => SQLERRM,
6178 p_app_short_name => 'GMA');
6179 ROLLBACK;
6180 x_exception_count := x_exception_count + 1;
6181
6182 END; -- cust spec subprogram
6183
6184 END LOOP; -- end get_cust_spec
6185
6186
6187
6188
6189 /*==============================================
6190 Log end of gmd_customer_spec_vrs migration.
6191 ==============================================*/
6192
6193 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
6194
6195
6196
6197 /*===================================
6198 Migrate gmd_supplier_spec_vrs.
6199 ===================================*/
6200
6201 GMA_COMMON_LOGGING.gma_migration_central_log (
6202 p_run_id => p_migration_run_id,
6203 p_log_level => FND_LOG.LEVEL_EVENT,
6204 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
6205 p_table_name => 'GMD_SUPPLIER_SPEC_VRS',
6206 p_token1 => 'TABLE_NAME',
6207 p_param1 => 'GMD_SUPPLIER_SPEC_VRS',
6208 p_context => 'Quality Specifications',
6209 p_app_short_name => 'GMA');
6210
6211 GMD_QC_MIG12.g_progress_ind := 5;
6212 GMD_QC_MIG12.g_supl_spec_pro_count := 0;
6213 GMD_QC_MIG12.g_supl_spec_ins_count := 0;
6214 GMD_QC_MIG12.g_supl_spec_del_count := 0;
6215 GMD_QC_MIG12.g_supl_spec_upd_count := 0;
6216 GMD_QC_MIG12.g_supl_spec_err_count := 0;
6217
6218 FOR l_supl_spec IN get_supplier_spec LOOP
6219 BEGIN -- supplier_spec subprogram
6220 GMD_QC_MIG12.g_supl_spec_pro_count := GMD_QC_MIG12.g_supl_spec_pro_count + 1;
6221 IF (l_supl_spec.organization_id IS NULL and l_supl_spec.orgn_code IS NOT NULL) THEN
6222 RAISE SUP_NO_ORG;
6223 END IF;
6224
6225 /*=====================================
6226 Get Status Ids.
6227 =====================================*/
6228
6229 -- Bug# 5482253
6230 -- Added code to select org_id for Supplier VRs
6231 l_supl_org_id := NULL;
6232 IF l_supl_spec.supplier_site_id IS NOT NULL THEN
6233 BEGIN
6234 SELECT org_id INTO l_supl_org_id
6235 FROM po_vendor_sites_all
6236 WHERE vendor_site_id = l_supl_spec.supplier_site_id;
6237 EXCEPTION
6238 WHEN OTHERS THEN
6239 l_supl_org_id := NULL;
6240 END;
6241 END IF;
6242
6243 IF (l_supl_spec.in_spec_lot_status IS NULL) THEN
6244 l_in_spec_status_id := NULL;
6245 ELSE
6246 l_in_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(l_supl_spec.in_spec_lot_status);
6247 IF (l_in_spec_status_id IS NULL) THEN
6248 RAISE SUP_IN_STATUS;
6249 END IF;
6250 END IF;
6251
6252 IF (l_supl_spec.out_of_spec_lot_status IS NULL) THEN
6253 l_out_spec_status_id := NULL;
6254 ELSE
6255 l_out_spec_status_id := GMD_QC_MIG12.GET_STATUS_ID(l_supl_spec.out_of_spec_lot_status);
6256 IF (l_out_spec_status_id IS NULL) THEN
6257 RAISE SUP_OUT_STATUS;
6258 END IF;
6259 END IF;
6260
6261
6262 IF (l_supl_spec.organization_id IS NOT NULL) THEN
6263 /*=====================================
6264 Update gmd_supplier_spec_vrs.
6265 =====================================*/
6266
6267 -- Bug# 5482253
6268 -- Added org_id in the update statement
6269 UPDATE gmd_supplier_spec_vrs
6270 SET out_of_spec_lot_status_id = l_out_spec_status_id,
6271 in_spec_lot_status_id = l_in_spec_status_id,
6272 org_id = l_supl_org_id,
6273 migrated_ind = 1
6274 WHERE spec_vr_id = l_supl_spec.spec_vr_id;
6275
6276 IF (p_commit = FND_API.G_TRUE) THEN
6277 COMMIT;
6278 END IF;
6279
6280 GMD_QC_MIG12.g_supl_spec_upd_count := GMD_QC_MIG12.g_supl_spec_upd_count + 1;
6281
6282 ELSE
6283 /*=========================================
6284 Loop and get all samples orgs that
6285 the Supplier validity rule is tied to.
6286 =========================================*/
6287 OPEN get_supl_sample_org (l_supl_spec.spec_vr_id);
6288 FETCH get_supl_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
6289 IF (get_supl_sample_org%NOTFOUND) THEN
6290 CLOSE get_supl_sample_org;
6291 /*========================================
6292 Log the spec record and Delete it.
6293 ========================================*/
6294
6295 /*==========================================
6296 This is not marked as an error.
6297 ==========================================*/
6298
6299 DELETE gmd_supplier_spec_vrs
6300 WHERE spec_vr_id = l_supl_spec.spec_vr_id;
6301
6302 IF (p_commit = FND_API.G_TRUE) THEN
6303 COMMIT;
6304 END IF;
6305
6306 GMD_QC_MIG12.g_supl_spec_del_count := GMD_QC_MIG12.g_supl_spec_del_count + 1;
6307
6308 RAISE SUP_SPEC_DELETE;
6309
6310 END IF;
6311
6312 /*================================
6313 Check if combination exists
6314 for the first sample related
6315 record.
6316 ================================*/
6317 BEGIN -- subprogram for check sup spec
6318 OPEN check_supl_spec;
6319 FETCH check_supl_spec INTO l_check_vrid;
6320 IF (check_supl_spec%FOUND) THEN
6321 CLOSE check_supl_spec;
6322 RAISE NEXT_IN_SUPL_LINE;
6323 END IF;
6324 CLOSE check_supl_spec;
6325 /*================================
6326 Convert the Sample Org.
6327 ================================*/
6328 IF (l_sample_organization_id IS NULL) THEN
6329 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
6330 IF (l_sample_organization_id IS NULL) THEN
6331 CLOSE get_supl_sample_org; -- Bug# 5554719 -- Changed it from get_sample_org to get_supl_sample_org
6332 RAISE SUP_NO_ORG_ID;
6333 END IF;
6334 END IF;
6335
6336 -- Bug# 5482253
6337 -- Added org_id in the update statement
6338 UPDATE gmd_supplier_spec_vrs
6339 SET out_of_spec_lot_status_id = l_out_spec_status_id,
6340 in_spec_lot_status_id = l_in_spec_status_id,
6341 organization_id = l_sample_organization_id,
6342 orgn_code = l_sample_orgn_code,
6343 org_id = l_supl_org_id,
6344 migrated_ind = 1
6345 WHERE spec_vr_id = l_supl_spec.spec_vr_id;
6346
6347 IF (p_commit = FND_API.G_TRUE) THEN
6348 COMMIT;
6349 END IF;
6350
6351 GMD_QC_MIG12.g_supl_spec_upd_count := GMD_QC_MIG12.g_supl_spec_upd_count + 1;
6352
6353 EXCEPTION
6354 WHEN NEXT_IN_SUPL_LINE THEN
6355 NULL;
6356
6357 END; -- subprogram for check sup spec
6358
6359 FETCH get_supl_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
6360
6361 WHILE get_supl_sample_org%FOUND LOOP
6362 /*================================
6363 Check if combination exists
6364 ================================*/
6365 IF (get_supl_sample_org%NOTFOUND) THEN
6366 EXIT;
6367 END IF;
6368 OPEN check_supl_spec;
6369 FETCH check_supl_spec INTO l_check_vrid;
6370 IF (check_supl_spec%FOUND) THEN
6371 CLOSE check_supl_spec;
6372 GOTO NEXT_SUPL_SAMPLE;
6373 END IF;
6374 CLOSE check_supl_spec;
6375 /*================================
6376 Convert the Sample Org.
6377 ================================*/
6378 IF (l_sample_organization_id IS NULL) THEN
6379 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
6380 IF (l_sample_organization_id IS NULL) THEN
6381 CLOSE get_supl_sample_org; -- Bug# 5554719 -- Changed it from get_sample_org to get_supl_sample_org
6382 RAISE SUP_NO_ORG_ID;
6383 END IF;
6384 END IF;
6385
6386 /*===========================
6387 Clone the record.
6388 ===========================*/
6389 IF (l_supl_spec.text_code IS NOT NULL AND l_supl_spec.text_code > 0) THEN
6390 l_text_code := GMD_QC_MIG12.COPY_TEXT(l_supl_spec.text_code, p_migration_run_id);
6391 ELSE
6392 l_text_code := NULL;
6393 END IF;
6394
6395 INSERT INTO gmd_supplier_spec_vrs
6396 (
6397 PO_HEADER_ID,
6398 SPEC_VR_ID,
6399 SPEC_ID,
6400 ORGN_CODE,
6401 SUPPLIER_ID,
6402 SUPPLIER_SITE_ID,
6403 PO_LINE_ID,
6404 SPEC_VR_STATUS,
6405 START_DATE,
6406 END_DATE,
6407 SAMPLING_PLAN_ID,
6408 SAMPLE_INV_TRANS_IND,
6409 LOT_OPTIONAL_ON_SAMPLE,
6410 COA_TYPE,
6411 COA_AT_SHIP_IND,
6412 COA_AT_INVOICE_IND,
6413 COA_REQ_FROM_SUPL_IND,
6414 DELETE_MARK,
6415 TEXT_CODE,
6416 ATTRIBUTE_CATEGORY,
6417 ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5, ATTRIBUTE6, ATTRIBUTE7,
6418 ATTRIBUTE8, ATTRIBUTE9, ATTRIBUTE10, ATTRIBUTE11, ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14,
6419 ATTRIBUTE15, ATTRIBUTE16, ATTRIBUTE17, ATTRIBUTE18, ATTRIBUTE19, ATTRIBUTE20, ATTRIBUTE21,
6420 ATTRIBUTE22, ATTRIBUTE23, ATTRIBUTE24, ATTRIBUTE25, ATTRIBUTE26, ATTRIBUTE27, ATTRIBUTE28,
6421 ATTRIBUTE29, ATTRIBUTE30,
6422 CREATION_DATE,
6423 CREATED_BY,
6424 LAST_UPDATED_BY,
6425 LAST_UPDATE_DATE,
6426 LAST_UPDATE_LOGIN,
6427 AUTO_SAMPLE_IND,
6428 CONTROL_LOT_ATTRIB_IND,
6429 IN_SPEC_LOT_STATUS,
6430 OUT_OF_SPEC_LOT_STATUS,
6431 DELAYED_LOT_ENTRY,
6432 MIGRATED_IND,
6433 ERECORD_SPEC_VR_ID,
6434 ORGANIZATION_ID,
6435 ORG_ID,
6436 OUT_OF_SPEC_LOT_STATUS_ID,
6437 IN_SPEC_LOT_STATUS_ID
6438 )
6439 VALUES
6440 (
6441 l_supl_spec.PO_HEADER_ID,
6442 gmd_qc_spec_vr_id_s.nextval,
6443 l_supl_spec.SPEC_ID,
6444 l_sample_orgn_code,
6445 l_supl_spec.SUPPLIER_ID,
6446 l_supl_spec.SUPPLIER_SITE_ID,
6447 l_supl_spec.PO_LINE_ID,
6448 l_supl_spec.SPEC_VR_STATUS,
6449 l_supl_spec.START_DATE,
6450 l_supl_spec.END_DATE,
6451 l_supl_spec.SAMPLING_PLAN_ID,
6452 l_supl_spec.SAMPLE_INV_TRANS_IND,
6453 l_supl_spec.LOT_OPTIONAL_ON_SAMPLE,
6454 l_supl_spec.COA_TYPE,
6455 l_supl_spec.COA_AT_SHIP_IND,
6456 l_supl_spec.COA_AT_INVOICE_IND,
6457 l_supl_spec.COA_REQ_FROM_SUPL_IND,
6458 l_supl_spec.DELETE_MARK,
6459 l_text_code,
6460 l_supl_spec.ATTRIBUTE_CATEGORY,
6461 l_supl_spec.ATTRIBUTE1, l_supl_spec.ATTRIBUTE2, l_supl_spec.ATTRIBUTE3, l_supl_spec.ATTRIBUTE4,
6462 l_supl_spec.ATTRIBUTE5, l_supl_spec.ATTRIBUTE6, l_supl_spec.ATTRIBUTE7, l_supl_spec.ATTRIBUTE8,
6463 l_supl_spec.ATTRIBUTE9, l_supl_spec.ATTRIBUTE10, l_supl_spec.ATTRIBUTE11, l_supl_spec.ATTRIBUTE12,
6464 l_supl_spec.ATTRIBUTE13, l_supl_spec.ATTRIBUTE14, l_supl_spec.ATTRIBUTE15, l_supl_spec.ATTRIBUTE16,
6465 l_supl_spec.ATTRIBUTE17, l_supl_spec.ATTRIBUTE18, l_supl_spec.ATTRIBUTE19, l_supl_spec.ATTRIBUTE20,
6466 l_supl_spec.ATTRIBUTE21, l_supl_spec.ATTRIBUTE22, l_supl_spec.ATTRIBUTE23, l_supl_spec.ATTRIBUTE24,
6467 l_supl_spec.ATTRIBUTE25, l_supl_spec.ATTRIBUTE26, l_supl_spec.ATTRIBUTE27, l_supl_spec.ATTRIBUTE28,
6468 l_supl_spec.ATTRIBUTE29, l_supl_spec.ATTRIBUTE30,
6469 SYSDATE,
6470 0,
6471 0,
6472 SYSDATE,
6473 NULL,
6474 l_supl_spec.AUTO_SAMPLE_IND,
6475 l_supl_spec.CONTROL_LOT_ATTRIB_IND,
6476 l_supl_spec.IN_SPEC_LOT_STATUS,
6477 l_supl_spec.OUT_OF_SPEC_LOT_STATUS,
6478 l_supl_spec.DELAYED_LOT_ENTRY,
6479 1,
6480 l_supl_spec.SPEC_VR_ID,
6481 l_sample_organization_id,
6482 l_supl_org_id, -- Bug# 5482253
6483 l_out_spec_status_id,
6484 l_in_spec_status_id
6485 );
6486
6487 GMD_QC_MIG12.g_supl_spec_ins_count := GMD_QC_MIG12.g_supl_spec_ins_count + 1;
6488
6489 << NEXT_SUPL_SAMPLE >>
6490
6491 FETCH get_supl_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
6492
6493 END LOOP;
6494
6495 CLOSE get_supl_sample_org;
6496
6497 END IF; -- orgn code not null
6498
6499 IF (p_commit = FND_API.G_TRUE) THEN
6500 COMMIT;
6501 END IF;
6502
6503
6504 EXCEPTION
6505
6506 WHEN SUP_NO_ORG THEN
6507 GMA_COMMON_LOGGING.gma_migration_central_log (
6508 p_run_id => p_migration_run_id,
6509 p_log_level => FND_LOG.LEVEL_ERROR,
6510 p_message_token => 'GMD_MIG_NO_ORG',
6511 p_context => 'Quality Specifications - gmd_supplier_spec_vrs',
6512 p_token1 => 'ORG',
6513 p_token2 => 'ONAME',
6514 p_token3 => 'ROWK',
6515 p_token4 => 'ROWV',
6516 p_param1 => l_supl_spec.orgn_code,
6517 p_param2 => 'ORGN_CODE',
6518 p_param3 => 'SPEC_VR_ID',
6519 p_param4 => to_char(l_supl_spec.spec_vr_id),
6520 p_app_short_name => 'GMD');
6521 GMD_QC_MIG12.g_supl_spec_err_count := GMD_QC_MIG12.g_supl_spec_err_count + 1;
6522 x_exception_count := x_exception_count + 1;
6523
6524 WHEN SUP_IN_STATUS THEN
6525 GMA_COMMON_LOGGING.gma_migration_central_log (
6526 p_run_id => p_migration_run_id,
6527 p_log_level => FND_LOG.LEVEL_ERROR,
6528 p_message_token => 'GMD_MIG_STATUS_ID',
6529 p_context => 'Quality Specifications - gmd_supplier_spec_vrs',
6530 p_token1 => 'STAT',
6531 p_token2 => 'ROWK',
6532 p_token3 => 'ROWV',
6533 p_param1 => l_supl_spec.in_spec_lot_status,
6534 p_param2 => 'SPEC_VR_ID',
6535 p_param3 => to_char(l_supl_spec.spec_vr_id),
6536 p_app_short_name => 'GMD');
6537 GMD_QC_MIG12.g_supl_spec_err_count := GMD_QC_MIG12.g_supl_spec_err_count + 1;
6538 x_exception_count := x_exception_count + 1;
6539
6540 WHEN SUP_OUT_STATUS THEN
6541 GMA_COMMON_LOGGING.gma_migration_central_log (
6542 p_run_id => p_migration_run_id,
6543 p_log_level => FND_LOG.LEVEL_ERROR,
6544 p_message_token => 'GMD_MIG_STATUS_ID',
6545 p_context => 'Quality Specifications - gmd_supplier_spec_vrs',
6546 p_token1 => 'STAT',
6547 p_token2 => 'ROWK',
6548 p_token3 => 'ROWV',
6549 p_param1 => l_supl_spec.out_of_spec_lot_status,
6550 p_param2 => 'SPEC_VR_ID',
6551 p_param3 => to_char(l_supl_spec.spec_vr_id),
6552 p_app_short_name => 'GMD');
6553 GMD_QC_MIG12.g_supl_spec_err_count := GMD_QC_MIG12.g_supl_spec_err_count + 1;
6554 x_exception_count := x_exception_count + 1;
6555
6556 WHEN SUP_SPEC_DELETE THEN
6557 GMA_COMMON_LOGGING.gma_migration_central_log (
6558 p_run_id => p_migration_run_id,
6559 p_log_level => FND_LOG.LEVEL_ERROR,
6560 p_message_token => 'GMD_MIG_COMMON_SPEC_DELETE',
6561 p_table_name => NULL,
6562 p_context => 'Quality Specifications - gmd_supplier_spec_vrs',
6563 p_token1 => 'TAB',
6564 p_param1 => 'gmd_supplier_spec_vrs',
6565 p_app_short_name => 'GMD');
6566
6567
6568 WHEN SUP_NO_ORG_ID THEN
6569 GMA_COMMON_LOGGING.gma_migration_central_log (
6570 p_run_id => p_migration_run_id,
6571 p_log_level => FND_LOG.LEVEL_ERROR,
6572 p_message_token => 'GMD_MIG_NULL_ORG_ID',
6573 p_table_name => NULL,
6574 p_context => 'Quality Specifications - gmd_supplier_spec_vrs',
6575 p_token1 => 'ORG',
6576 p_token2 => 'ROWK',
6577 p_token3 => 'ROWV',
6578 p_param1 => l_sample_orgn_code,
6579 p_param2 => 'SPEC_VR_ID',
6580 p_param3 => to_char(l_supl_spec.spec_vr_id),
6581 p_app_short_name => 'GMD');
6582 GMD_QC_MIG12.g_supl_spec_err_count := GMD_QC_MIG12.g_supl_spec_err_count + 1;
6583 x_exception_count := x_exception_count + 1;
6584
6585 WHEN OTHERS THEN
6586 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
6587 GMA_COMMON_LOGGING.gma_migration_central_log (
6588 p_run_id => p_migration_run_id,
6589 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
6590 p_message_token => 'GMA_MIGRATION_DB_ERROR',
6591 p_context => 'Quality Specifications - gmd_supplier_spec_vrs',
6592 p_db_error => SQLERRM,
6593 p_app_short_name => 'GMA');
6594 ROLLBACK;
6595 x_exception_count := x_exception_count + 1;
6596
6597
6598 END; -- end supplier_spec subprogram
6599
6600 END LOOP; -- supplier spec loop
6601
6602
6603
6604 /*==============================================
6605 Log end of gmd_supplier_spec_vrs migration.
6606 ==============================================*/
6607
6608 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
6609
6610 /*====================================
6611 Migrate gmd_monitoring_spec_vrs;
6612 ====================================*/
6613
6614 GMA_COMMON_LOGGING.gma_migration_central_log (
6615 p_run_id => p_migration_run_id,
6616 p_log_level => FND_LOG.LEVEL_EVENT,
6617 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
6618 p_table_name => 'GMD_MONITORING_SPEC_VRS',
6619 p_token1 => 'TABLE_NAME',
6620 p_param1 => 'GMD_MONITORING_SPEC_VRS',
6621 p_context => 'Quality Specifications',
6622 p_app_short_name => 'GMA');
6623
6624 GMD_QC_MIG12.g_progress_ind := 6;
6625 GMD_QC_MIG12.g_mon_spec_pro_count := 0;
6626 GMD_QC_MIG12.g_mon_spec_ins_count := 0;
6627 GMD_QC_MIG12.g_mon_spec_del_count := 0;
6628 GMD_QC_MIG12.g_mon_spec_upd_count := 0;
6629 GMD_QC_MIG12.g_mon_spec_err_count := 0;
6630
6631
6632 FOR l_mon_spec IN get_monitor_spec LOOP
6633
6634 BEGIN -- monitor spec subprogram
6635 GMD_QC_MIG12.g_mon_spec_pro_count := GMD_QC_MIG12.g_mon_spec_pro_count + 1;
6636
6637 IF (l_mon_spec.locator_organization_id IS NULL and l_mon_spec.loct_orgn_code IS NOT NULL) THEN
6638 RAISE MON_NO_ORG;
6639 END IF;
6640
6641 IF (l_mon_spec.resource_organization_id IS NULL and l_mon_spec.resource_orgn_code IS NOT NULL) THEN
6642 RAISE MON_NO_RES_ORG;
6643 END IF;
6644 l_organization_id := l_mon_spec.locator_organization_id;
6645 IF (l_mon_spec.locator_organization_id IS NOT NULL) THEN
6646 /*========================
6647 Get Subinventory.
6648 ========================*/
6649 IF (l_mon_spec.whse_code IS NOT NULL) THEN
6650 GMD_QC_MIG12.GET_WHSE_INFO(
6651 l_mon_spec.whse_code,
6652 ls_organization_id,
6653 l_subinv_ind,
6654 l_mon_loct_ctl);
6655 IF (ls_organization_id IS NULL) THEN
6656 RAISE MON_WHSE_ERROR;
6657 END IF;
6658
6659 /*==========================================
6660 If Whse code is subinventory and
6661 org differs from org mapped then
6662 flag as an error.
6663 ==========================================*/
6664
6665 IF (l_subinv_ind = 'Y') THEN
6666 IF (ls_organization_id <> l_organization_id) THEN
6667 /*=========================================
6668 Log error and do not migrate.
6669 =========================================*/
6670 RAISE MON_SUB_MISMATCH;
6671 END IF; -- Bug# 5257068
6672 ELSE
6673 l_organization_id := ls_organization_id;
6674 END IF;
6675
6676 l_subinventory := l_mon_spec.whse_code;
6677
6678 /*=========================
6679 Get Locator Id.
6680 =========================*/
6681
6682 IF (l_mon_spec.location IS NOT NULL) THEN
6683 l_locator_id := GMD_QC_MIG12.GET_LOCATOR_ID(l_mon_spec.whse_code, l_mon_spec.location);
6684 IF (l_locator_id IS NULL) THEN
6685 IF (l_mon_loct_ctl = 2) THEN
6686 /*======================================
6687 Create a Non-validated location.
6688 ======================================*/
6689 INV_MIGRATE_PROCESS_ORG.CREATE_LOCATION (
6690 p_migration_run_id => p_migration_run_id,
6691 p_organization_id => l_organization_id,
6692 p_subinventory_code => l_subinventory,
6693 p_location => l_mon_spec.location,
6694 p_loct_desc => l_mon_spec.location,
6695 p_start_date_active => SYSDATE,
6696 p_commit => p_commit,
6697 x_location_id => l_locator_id,
6698 x_failure_count => l_failure_count);
6699
6700 IF (l_failure_count > 0) THEN
6701 RAISE MON_CREATE_LOC;
6702 END IF;
6703 ELSE
6704 RAISE MON_LOCATOR_ID;
6705 END IF;
6706 ELSE
6707 GMD_QC_MIG12.GET_SUBINV_DATA(l_locator_id,
6708 l_subinv,
6709 lsub_organization_id);
6710
6711 IF (lsub_organization_id IS NULL) THEN
6712 RAISE MON_SUBINV_ERROR;
6713 END IF;
6714
6715 IF (l_subinv <> l_subinventory) THEN
6716 /*============================================
6717 Overlay subinventory with one from locator.
6718 ============================================*/
6719 l_subinventory := l_subinv;
6720 END IF;
6721 END IF;
6722 ELSE
6723 l_locator_id := NULL;
6724 END IF; -- location is null
6725 -- Bug# 5257068
6726 -- Commented the following code
6727 /*ELSE
6728 l_organization_id := ls_organization_id;
6729 END IF;
6730 l_subinventory := l_mon_spec.whse_code;*/
6731 ELSE
6732 l_subinventory := NULL;
6733 l_locator_id := NULL;
6734 END IF;
6735 ELSE -- loct orgn is null
6736 l_organization_id := NULL;
6737 l_subinventory := NULL;
6738 l_locator_id := NULL;
6739 END IF;
6740
6741
6742
6743 IF (l_mon_spec.loct_orgn_code IS NOT NULL) THEN
6744 UPDATE gmd_monitoring_spec_vrs
6745 SET locator_organization_id = l_organization_id,
6746 subinventory = l_subinventory,
6747 locator_id = l_locator_id,
6748 migrated_ind = 1
6749 WHERE spec_vr_id = l_mon_spec.spec_vr_id;
6750
6751 IF (p_commit = FND_API.G_TRUE) THEN
6752 COMMIT;
6753 END IF;
6754
6755 GMD_QC_MIG12.g_mon_spec_upd_count := GMD_QC_MIG12.g_mon_spec_upd_count + 1;
6756
6757 ELSE --orgn code is null
6758 /*=========================================
6759 Loop and get all samples orgs that
6760 the Monitoring validity rule is tied to.
6761 =========================================*/
6762 OPEN get_mon_sample_org (l_mon_spec.spec_vr_id);
6763 FETCH get_mon_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
6764 IF (get_mon_sample_org%NOTFOUND) THEN
6765 CLOSE get_mon_sample_org;
6766 /*========================================
6767 Log the spec record and Delete it.
6768 ========================================*/
6769
6770 /*==========================================
6771 This is not marked as an error.
6772 ==========================================*/
6773
6774 DELETE gmd_monitoring_spec_vrs
6775 WHERE spec_vr_id = l_mon_spec.spec_vr_id;
6776
6777 IF (p_commit = FND_API.G_TRUE) THEN
6778 COMMIT;
6779 END IF;
6780
6781 GMD_QC_MIG12.g_mon_spec_del_count := GMD_QC_MIG12.g_mon_spec_del_count + 1;
6782 RAISE MON_SPEC_DELETE;
6783
6784 END IF; -- check if sample found.
6785
6786 /*================================
6787 Check if combination exists
6788 for the first sample related
6789 record.
6790 ================================*/
6791 BEGIN -- subprogram for check mon spec
6792 OPEN check_mon_spec;
6793 FETCH check_mon_spec INTO l_check_vrid;
6794 IF (check_mon_spec%FOUND) THEN
6795 CLOSE check_mon_spec;
6796 RAISE NEXT_IN_MON_LINE;
6797 END IF;
6798 CLOSE check_mon_spec;
6799
6800 /*================================
6801 Convert the Sample Org.
6802 ================================*/
6803 IF (l_sample_organization_id IS NULL) THEN
6804 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
6805 IF (l_sample_organization_id IS NULL) THEN
6806 CLOSE get_mon_sample_org; -- Bug# 5554719 -- Changed it from get_sample_org to get_mon_sample_org
6807 RAISE MON_NO_ORG_ID;
6808 END IF;
6809 END IF;
6810
6811 UPDATE gmd_monitoring_spec_vrs
6812 SET locator_organization_id = l_sample_organization_id,
6813 loct_orgn_code = l_sample_orgn_code,
6814 subinventory = l_subinventory,
6815 locator_id = l_locator_id,
6816 migrated_ind = 1
6817 WHERE spec_vr_id = l_mon_spec.spec_vr_id;
6818
6819 IF (p_commit = FND_API.G_TRUE) THEN
6820 COMMIT;
6821 END IF;
6822
6823 GMD_QC_MIG12.g_mon_spec_upd_count := GMD_QC_MIG12.g_mon_spec_upd_count + 1;
6824
6825 EXCEPTION
6826 WHEN NEXT_IN_MON_LINE THEN
6827 NULL;
6828
6829 END ; -- subprogram for check mon spec
6830
6831 /*====================================
6832 Continue to process Sample records
6833 beyond the first one.
6834 ====================================*/
6835
6836 FETCH get_mon_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
6837
6838 WHILE get_mon_sample_org%FOUND LOOP
6839 IF (get_mon_sample_org%NOTFOUND) THEN
6840 EXIT;
6841 END IF;
6842 /*================================
6843 Check if combination exists
6844 ================================*/
6845 OPEN check_mon_spec;
6846 FETCH check_mon_spec INTO l_check_vrid;
6847 IF (check_mon_spec%FOUND) THEN
6848 CLOSE check_mon_spec;
6849 GOTO NEXT_MON_SAMPLE;
6850 END IF;
6851 CLOSE check_mon_spec;
6852 /*================================
6853 Convert the Sample Org.
6854 ================================*/
6855 IF (l_sample_organization_id IS NULL) THEN
6856 l_sample_organization_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_sample_orgn_code);
6857 IF (l_sample_organization_id IS NULL) THEN
6858 CLOSE get_mon_sample_org;
6859 RAISE MON_NO_ORG_ID;
6860 END IF;
6861 END IF;
6862
6863 /*==================================================
6864 Clone the record using the Sample organization.
6865 ==================================================*/
6866
6867 IF (l_mon_spec.text_code IS NOT NULL AND l_mon_spec.text_code > 0) THEN
6868 l_text_code := GMD_QC_MIG12.COPY_TEXT(l_mon_spec.text_code, p_migration_run_id);
6869 ELSE
6870 l_text_code := NULL;
6871 END IF;
6872
6873 INSERT INTO gmd_monitoring_spec_vrs
6874 (
6875 SPEC_VR_ID,
6876 SPEC_ID,
6877 RULE_TYPE,
6878 LOCT_ORGN_CODE,
6879 WHSE_CODE,
6880 LOCATION,
6881 RESOURCES,
6882 RESOURCE_ORGN_CODE,
6883 RESOURCE_INSTANCE_ID,
6884 SPEC_VR_STATUS,
6885 START_DATE,
6886 END_DATE,
6887 SAMPLING_PLAN_ID,
6888 DELETE_MARK,
6889 TEXT_CODE,
6890 ATTRIBUTE_CATEGORY,
6891 ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5, ATTRIBUTE6, ATTRIBUTE7,
6892 ATTRIBUTE8, ATTRIBUTE9, ATTRIBUTE10, ATTRIBUTE11, ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14,
6893 ATTRIBUTE15, ATTRIBUTE16, ATTRIBUTE17, ATTRIBUTE18, ATTRIBUTE19, ATTRIBUTE20, ATTRIBUTE21,
6894 ATTRIBUTE22, ATTRIBUTE23, ATTRIBUTE24, ATTRIBUTE25, ATTRIBUTE26, ATTRIBUTE27, ATTRIBUTE28,
6895 ATTRIBUTE29, ATTRIBUTE30,
6896 CREATION_DATE,
6897 CREATED_BY,
6898 LAST_UPDATED_BY,
6899 LAST_UPDATE_DATE,
6900 LAST_UPDATE_LOGIN,
6901 MIGRATED_IND,
6902 ERECORD_SPEC_VR_ID,
6903 LOCATOR_ORGANIZATION_ID,
6904 SUBINVENTORY,
6905 LOCATOR_ID,
6906 RESOURCE_ORGANIZATION_ID
6907 )
6908 VALUES
6909 (
6910 gmd_qc_spec_vr_id_s.nextval,
6911 l_mon_spec.SPEC_ID,
6912 l_mon_spec.RULE_TYPE,
6913 l_sample_orgn_code,
6914 l_mon_spec.WHSE_CODE,
6915 l_mon_spec.LOCATION,
6916 l_mon_spec.RESOURCES,
6917 l_mon_spec.RESOURCE_ORGN_CODE,
6918 l_mon_spec.RESOURCE_INSTANCE_ID,
6919 l_mon_spec.SPEC_VR_STATUS,
6920 l_mon_spec.START_DATE,
6921 l_mon_spec.END_DATE,
6922 l_mon_spec.SAMPLING_PLAN_ID,
6923 l_mon_spec.DELETE_MARK,
6924 l_text_code,
6925 l_mon_spec.ATTRIBUTE_CATEGORY,
6926 l_mon_spec.ATTRIBUTE1, l_mon_spec.ATTRIBUTE2, l_mon_spec.ATTRIBUTE3, l_mon_spec.ATTRIBUTE4,
6927 l_mon_spec.ATTRIBUTE5, l_mon_spec.ATTRIBUTE6, l_mon_spec.ATTRIBUTE7, l_mon_spec.ATTRIBUTE8,
6928 l_mon_spec.ATTRIBUTE9, l_mon_spec.ATTRIBUTE10, l_mon_spec.ATTRIBUTE11, l_mon_spec.ATTRIBUTE12,
6929 l_mon_spec.ATTRIBUTE13, l_mon_spec.ATTRIBUTE14, l_mon_spec.ATTRIBUTE15, l_mon_spec.ATTRIBUTE16,
6930 l_mon_spec.ATTRIBUTE17, l_mon_spec.ATTRIBUTE18, l_mon_spec.ATTRIBUTE19, l_mon_spec.ATTRIBUTE20,
6931 l_mon_spec.ATTRIBUTE21, l_mon_spec.ATTRIBUTE22, l_mon_spec.ATTRIBUTE23, l_mon_spec.ATTRIBUTE24,
6932 l_mon_spec.ATTRIBUTE25, l_mon_spec.ATTRIBUTE26, l_mon_spec.ATTRIBUTE27, l_mon_spec.ATTRIBUTE28,
6933 l_mon_spec.ATTRIBUTE29, l_mon_spec.ATTRIBUTE30,
6934 SYSDATE,
6935 0,
6936 0,
6937 SYSDATE,
6938 NULL,
6939 1,
6940 l_mon_spec.SPEC_VR_ID,
6941 l_sample_organization_id,
6942 l_subinventory,
6943 l_locator_id,
6944 l_mon_spec.RESOURCE_ORGANIZATION_ID
6945 );
6946
6947
6948 GMD_QC_MIG12.g_mon_spec_ins_count := GMD_QC_MIG12.g_mon_spec_ins_count + 1;
6949
6950 << NEXT_MON_SAMPLE >>
6951
6952 FETCH get_mon_sample_org INTO l_sample_orgn_code, l_sample_organization_id;
6953
6954 END LOOP;
6955
6956 CLOSE get_mon_sample_org;
6957
6958 END IF; -- orgn code null.
6959
6960 IF (p_commit = FND_API.G_TRUE) THEN
6961 COMMIT;
6962 END IF;
6963
6964
6965 EXCEPTION
6966
6967 WHEN MON_NO_ORG THEN
6968 GMA_COMMON_LOGGING.gma_migration_central_log (
6969 p_run_id => p_migration_run_id,
6970 p_log_level => FND_LOG.LEVEL_ERROR,
6971 p_message_token => 'GMD_MIG_NO_ORG',
6972 p_context => 'Quality Specifications - gmd_monitoring_spec_vrs',
6973 p_token1 => 'ORG',
6974 p_token2 => 'ONAME',
6975 p_token3 => 'ROWK',
6976 p_token4 => 'ROWV',
6977 p_param1 => l_mon_spec.loct_orgn_code,
6978 p_param2 => 'LOCT_ORGN_CODE',
6979 p_param3 => 'SPEC_VR_ID',
6980 p_param4 => to_char(l_mon_spec.spec_vr_id),
6981 p_app_short_name => 'GMD');
6982 GMD_QC_MIG12.g_mon_spec_err_count := GMD_QC_MIG12.g_mon_spec_err_count + 1;
6983 x_exception_count := x_exception_count + 1;
6984
6985 WHEN MON_NO_RES_ORG THEN
6986 GMA_COMMON_LOGGING.gma_migration_central_log (
6987 p_run_id => p_migration_run_id,
6988 p_log_level => FND_LOG.LEVEL_ERROR,
6989 p_message_token => 'GMD_MIG_NO_ORG',
6990 p_context => 'Quality Specifications - gmd_monitoring_spec_vrs',
6991 p_token1 => 'ORG',
6992 p_token2 => 'ONAME',
6993 p_token3 => 'ROWK',
6994 p_token4 => 'ROWV',
6995 p_param1 => l_mon_spec.resource_orgn_code,
6996 p_param2 => 'RESOURCE_ORGN_CODE',
6997 p_param3 => 'SPEC_VR_ID',
6998 p_param4 => to_char(l_mon_spec.spec_vr_id),
6999 p_app_short_name => 'GMD');
7000 GMD_QC_MIG12.g_mon_spec_err_count := GMD_QC_MIG12.g_mon_spec_err_count + 1;
7001 x_exception_count := x_exception_count + 1;
7002
7003 WHEN MON_WHSE_ERROR THEN
7004 GMA_COMMON_LOGGING.gma_migration_central_log (
7005 p_run_id => p_migration_run_id,
7006 p_log_level => FND_LOG.LEVEL_ERROR,
7007 p_message_token => 'GMD_MIG_WHSE_ERROR',
7008 p_context => 'Quality Specifications - gmd_monitoring_spec_vrs',
7009 p_token1 => 'WHSE',
7010 p_token2 => 'WNAME',
7011 p_token3 => 'ROWK',
7012 p_token4 => 'ROWV',
7013 p_param1 => l_mon_spec.whse_code,
7014 p_param2 => 'WHSE_CODE',
7015 p_param3 => 'SPEC_VR_ID',
7016 p_param4 => to_char(l_mon_spec.spec_vr_id),
7017 p_app_short_name => 'GMD');
7018 GMD_QC_MIG12.g_mon_spec_err_count := GMD_QC_MIG12.g_mon_spec_err_count + 1;
7019 x_exception_count := x_exception_count + 1;
7020
7021 WHEN MON_SUB_MISMATCH THEN
7022 GMA_COMMON_LOGGING.gma_migration_central_log (
7023 p_run_id => p_migration_run_id,
7024 p_log_level => FND_LOG.LEVEL_ERROR,
7025 p_message_token => 'GMD_MIG_MSPEC_SUB_MISMATCH',
7026 p_table_name => NULL,
7027 p_context => 'Quality Specifications - gmd_monitoring_spec_vrs',
7028 p_token1 => 'VRID',
7029 p_token2 => 'ORG',
7030 p_token3 => 'WHSE',
7031 p_token4 => 'ORGID',
7032 p_token5 => 'WHSEID',
7033 p_param1 => to_char(l_mon_spec.spec_vr_id),
7034 p_param2 => l_mon_spec.loct_orgn_code,
7035 p_param3 => l_mon_spec.whse_code,
7036 p_param4 => to_char(l_organization_id),
7037 p_param5 => to_char(ls_organization_id),
7038 p_app_short_name => 'GMD');
7039 GMD_QC_MIG12.g_mon_spec_err_count := GMD_QC_MIG12.g_mon_spec_err_count + 1;
7040 x_exception_count := x_exception_count + 1;
7041
7042 WHEN MON_CREATE_LOC THEN
7043 GMA_COMMON_LOGGING.gma_migration_central_log (
7044 p_run_id => p_migration_run_id,
7045 p_log_level => FND_LOG.LEVEL_ERROR,
7046 p_message_token => 'GMD_MIG_NONLOC_FAILURE',
7047 p_context => 'Quality Specifications - gmd_monitoring_spec_vrs',
7048 p_token1 => 'ROWK',
7049 p_token2 => 'ROWV',
7050 p_token3 => 'FNAME',
7051 p_param1 => 'SPEC_VR_ID',
7052 p_param2 => to_char(l_mon_spec.spec_vr_id),
7053 p_param3 => 'LOCATION',
7054 p_app_short_name => 'GMD');
7055 GMD_QC_MIG12.g_mon_spec_err_count := GMD_QC_MIG12.g_mon_spec_err_count + 1;
7056 x_exception_count := x_exception_count + 1;
7057
7058 WHEN MON_LOCATOR_ID THEN
7059 GMA_COMMON_LOGGING.gma_migration_central_log (
7060 p_run_id => p_migration_run_id,
7061 p_log_level => FND_LOG.LEVEL_ERROR,
7062 p_message_token => 'GMD_MIG_LOCATOR_ID',
7063 p_context => 'Quality Specifications - gmd_monitoring_spec_vrs',
7064 p_token1 => 'WHSE',
7065 p_token2 => 'LOCATION',
7066 p_token3 => 'LFIELD',
7067 p_token4 => 'ROWK',
7068 p_token5 => 'ROWV',
7069 p_param1 => l_mon_spec.whse_code,
7070 p_param2 => l_mon_spec.location,
7071 p_param3 => 'LOCATION',
7072 p_param4 => 'SPEC_VR_ID',
7073 p_param5 => to_char(l_mon_spec.spec_vr_id),
7074 p_app_short_name => 'GMD');
7075 GMD_QC_MIG12.g_mon_spec_err_count := GMD_QC_MIG12.g_mon_spec_err_count + 1;
7076 x_exception_count := x_exception_count + 1;
7077
7078 WHEN MON_SUBINV_ERROR THEN
7079 GMA_COMMON_LOGGING.gma_migration_central_log (
7080 p_run_id => p_migration_run_id,
7081 p_log_level => FND_LOG.LEVEL_ERROR,
7082 p_message_token => 'GMD_MIG_SUBINV',
7083 p_context => 'Quality Specifications - gmd_monitoring_spec_vrs',
7084 p_token1 => 'LOCATOR',
7085 p_token2 => 'ROWK',
7086 p_token3 => 'ROWV',
7087 p_param1 => to_char(l_locator_id),
7088 p_param2 => 'SPEC_VR_ID',
7089 p_param3 => to_char(l_mon_spec.spec_vr_id),
7090 p_app_short_name => 'GMD');
7091 GMD_QC_MIG12.g_mon_spec_err_count := GMD_QC_MIG12.g_mon_spec_err_count + 1;
7092 x_exception_count := x_exception_count + 1;
7093
7094
7095 WHEN MON_SPEC_DELETE THEN
7096 GMA_COMMON_LOGGING.gma_migration_central_log (
7097 p_run_id => p_migration_run_id,
7098 p_log_level => FND_LOG.LEVEL_ERROR,
7099 p_message_token => 'GMD_MIG_COMMON_SPEC_DELETE',
7100 p_table_name => NULL,
7101 p_context => 'Quality Specifications - gmd_monitoring_spec_vrs',
7102 p_token1 => 'TAB',
7103 p_param1 => 'gmd_monitoring_spec_vrs',
7104 p_app_short_name => 'GMD');
7105
7106 WHEN MON_NO_ORG_ID THEN
7107 GMA_COMMON_LOGGING.gma_migration_central_log (
7108 p_run_id => p_migration_run_id,
7109 p_log_level => FND_LOG.LEVEL_ERROR,
7110 p_message_token => 'GMD_MIG_NULL_ORG_ID',
7111 p_table_name => NULL,
7112 p_context => 'Quality Specifications - gmd_monitoring_spec_vrs',
7113 p_token1 => 'ORG',
7114 p_token2 => 'ROWK',
7115 p_token3 => 'ROWV',
7116 p_param1 => l_sample_orgn_code,
7117 p_param2 => 'SPEC_VR_ID',
7118 p_param3 => to_char(l_mon_spec.spec_vr_id),
7119 p_app_short_name => 'GMD');
7120 GMD_QC_MIG12.g_mon_spec_err_count := GMD_QC_MIG12.g_mon_spec_err_count + 1;
7121 x_exception_count := x_exception_count + 1;
7122
7123 END; -- monitor spec subprogram
7124
7125 END LOOP;
7126
7127
7128 /*==============================================
7129 Log end of gmd_monitoring_spec_vrs migration.
7130 ==============================================*/
7131
7132 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
7133
7134
7135 RETURN;
7136
7137
7138 EXCEPTION
7139
7140 WHEN OTHERS THEN
7141 LOG_SPEC_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
7142 GMA_COMMON_LOGGING.gma_migration_central_log (
7143 p_run_id => p_migration_run_id,
7144 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
7145 p_message_token => 'GMA_MIGRATION_DB_ERROR',
7146 p_context => 'Quality Specifications - general',
7147 p_db_error => SQLERRM,
7148 p_app_short_name => 'GMA');
7149
7150 x_exception_count := x_exception_count + 1;
7151
7152
7153 END GMD_QC_MIGRATE_SPECS;
7154
7155 /*===========================================================================
7156 -- PROCEDURE
7157 -- gmd_qc_migrate_stabs
7158 --
7159 -- DESCRIPTION:
7160 -- This migrates the Quality Stability Study Data.
7161 --
7162 -- PARAMETERS:
7163 --
7164 -- p_migration_run_id IN NUMBER - Migration Id.
7165 -- p_commit IN VARCHAR2 - Commit Flag
7166 --
7167 -- x_exception_count OUT NUMBER - Exception Count
7168 --
7169 -- The following columns will be migrated by the Common migration script.
7170 --
7171 -- gmd_ss_storage_package quantity_uom
7172 -- gmd_stability_studies_b organization_id
7173 -- gmd_stability_studies_b lab_organization_id
7174 -- gmd_ss_material_sources source_organization_id
7175 -- gmd_ss_material_sources sample_quantity_uom
7176 -- gmd_ss_variants sample_quantity_uom
7177 --=========================================================================== */
7178
7179 PROCEDURE GMD_QC_MIGRATE_STABS
7180 ( p_migration_run_id IN NUMBER
7181 , p_commit IN VARCHAR2
7182 , x_exception_count OUT NOCOPY NUMBER)
7183
7184 IS
7185
7186
7187 /*=======================
7188 Exceptions
7189 =======================*/
7190 DEFAULT_SS_ORG_ERROR EXCEPTION;
7191 SS_ORG_ID_ERROR EXCEPTION;
7192 SP_WHSE_ERROR EXCEPTION;
7193 SP_CREATE_LOCATION EXCEPTION;
7194 SP_LOCATOR_ID EXCEPTION;
7195 SP_SUBINV_ERROR EXCEPTION;
7196 STAB_NO_ORG EXCEPTION;
7197 STAB_NO_LAB_ORG EXCEPTION;
7198 STAB_ODM_ITEM EXCEPTION;
7199 MATL_NO_ORG EXCEPTION;
7200 MATL_GET_SS EXCEPTION;
7201 MATL_PLANT_ORG EXCEPTION;
7202 MATL_MIG_LOT EXCEPTION;
7203 VAR_WHSE_ERROR EXCEPTION;
7204 VAR_CREATE_LOC EXCEPTION;
7205 VAR_LOCATOR_ID EXCEPTION;
7206 VAR_SUBINV_ERROR EXCEPTION;
7207 HIST_WHSE_ERROR EXCEPTION;
7208 HIST_CREATE_LOC EXCEPTION;
7209 HIST_LOCATOR_ID EXCEPTION;
7210 HIST_SUBINV_ERROR EXCEPTION;
7211 STORE_DEF_ODM_ITEM EXCEPTION;
7212 STORE_SS_ORG EXCEPTION;
7213 STORE_ODM_ITEM EXCEPTION;
7214 NULL_DEFAULT_LAB EXCEPTION;
7215
7216
7217 /*=====================================
7218 Cursor for gmd_stability_studies_b.
7219 =====================================*/
7220
7221 -- Bug# 5109234
7222 -- Removed organization_id IS NULL from the where clause and added orgn_code IS NOT NULL.
7223 CURSOR get_stab IS
7224 SELECT orgn_code, organization_id, item_id, qc_lab_orgn_code,
7225 lab_organization_id, ss_id
7226 FROM gmd_stability_studies_b
7227 WHERE migrated_ind IS NULL
7228 AND orgn_code IS NOT NULL;
7229
7230 l_store_loct_ctl ic_whse_mst.loct_ctl%TYPE;
7231 l_splan_loct_ctl ic_whse_mst.loct_ctl%TYPE;
7232 l_hist_loct_ctl ic_whse_mst.loct_ctl%TYPE;
7233 l_svar_loct_ctl ic_whse_mst.loct_ctl%TYPE;
7234 l_inventory_item_id gmd_stability_studies_b.inventory_item_id%TYPE;
7235 l_subinv mtl_item_locations.subinventory_code%TYPE;
7236 lsub_organization_id mtl_item_locations.organization_id%TYPE;
7237 l_lot_orgn_code gmd_stability_studies_b.orgn_code%TYPE;
7238 l_stab_org_id gmd_stability_studies_b.organization_id%TYPE;
7239
7240
7241 /*=====================================
7242 Cursor for gmd_storage_plan_details.
7243 Added storage_organization_id is null
7244 in order to ignore records created
7245 after migration has run.
7246 =====================================*/
7247
7248 CURSOR get_plan_details IS
7249 SELECT storage_plan_detail_id, whse_code, location
7250 FROM gmd_storage_plan_details
7251 WHERE migrated_ind IS NULL
7252 AND storage_organization_id IS NULL;
7253
7254 l_plan_org_id gmd_storage_plan_details.storage_organization_id%TYPE;
7255 l_plan_subinv_ind ic_whse_mst.subinventory_ind_flag%TYPE;
7256 l_plan_subinv gmd_storage_plan_details.storage_subinventory%TYPE;
7257 l_plan_locator_id ic_loct_mst.locator_id%TYPE;
7258
7259
7260
7261 /*=====================================
7262 Cursor for get all stability study
7263 orgs associated with the storage
7264 package.
7265 =====================================*/
7266
7267 CURSOR get_stab_study_org(p_package_id gmd_ss_storage_package.package_id%TYPE) IS
7268 SELECT distinct gssb.orgn_code, gsv.package_id
7269 FROM gmd_stability_studies_b gssb, gmd_ss_variants gsv
7270 WHERE gssb.ss_id = gsv.ss_id
7271 AND gsv.package_id = p_package_id;
7272
7273 l_stab_orgn_code gmd_stability_studies_b.orgn_code%TYPE;
7274 l_gsv_package_id gmd_ss_variants.package_id%TYPE;
7275
7276 /*=====================================
7277 Cursor for gmd_ss_storage_package.
7278 =====================================*/
7279
7280 CURSOR get_store_pack IS
7281 SELECT *
7282 FROM gmd_ss_storage_package
7283 WHERE migrated_ind IS NULL
7284 AND organization_id IS NULL;
7285
7286 l_store_pack gmd_ss_storage_package%ROWTYPE;
7287 l_store_pack_invitem_id gmd_ss_storage_package.inventory_item_id%TYPE;
7288
7289 l_package_id NUMBER;
7290
7291 CURSOR get_pack_seq IS
7292 SELECT gmd_qc_ss_stor_pack_id_s.nextval
7293 FROM DUAL;
7294
7295 /*=====================================
7296 Cursor to get default Stability
7297 Study Org from setup tables.
7298 =====================================*/
7299
7300 CURSOR get_ss_org IS
7301 SELECT default_stability_study_org
7302 FROM gmd_migrate_parms;
7303
7304
7305 l_def_ss_org sy_orgn_mst.orgn_code%TYPE;
7306 l_def_ss_org_id sy_orgn_mst.organization_id%TYPE;
7307 l_ss_org_id sy_orgn_mst.organization_id%TYPE;
7308
7309 /*=========================================
7310 Cursor to get gmd_ss_material_sources.
7311 Get org id null to exclude records
7312 added after migration is run and then
7313 rerun.
7314 =========================================*/
7315
7316 -- Bug# 5109234
7317 -- Removed source_organization_id IS NULL from the where clause since lot info needs to be migrated.
7318 CURSOR get_matl_src IS
7319 SELECT plant_code, source_organization_id,
7320 lot_id, ss_id, source_id
7321 FROM gmd_ss_material_sources
7322 WHERE migrated_ind IS NULL;
7323 --AND source_organization_id IS NULL;
7324
7325 l_plant_org_id gmd_ss_material_sources.source_organization_id%TYPE;
7326
7327 /*===============================================
7328 Cursor to get stability study org and item.
7329 ===============================================*/
7330
7331 CURSOR get_stab_study (p_ss_id gmd_stability_studies_b.ss_id%TYPE) IS
7332 SELECT orgn_code, item_id
7333 FROM gmd_stability_studies_b
7334 WHERE ss_id = p_ss_id;
7335
7336 l_ss_orgn_code gmd_stability_studies_b.orgn_code%TYPE;
7337 l_ss_item_id gmd_stability_studies_b.item_id%TYPE;
7338
7339 l_lot_number mtl_lot_numbers.lot_number%TYPE;
7340 l_parent_lot_number mtl_lot_numbers.parent_lot_number%TYPE;
7341 l_failure_count NUMBER;
7342
7343 /*=========================================
7344 Cursor to get gmd_ss_variants.
7345 If record is created after migration
7346 and migration is rerun we will classify
7347 the record as migrated even though it
7348 is not a truly migrated record.
7349 =========================================*/
7350
7351 CURSOR get_ss_variant IS
7352 SELECT variant_id, storage_whse_code, storage_location,
7353 storage_organization_id, storage_subinventory, storage_locator_id
7354 FROM gmd_ss_variants
7355 WHERE migrated_ind IS NULL;
7356
7357 l_variant_id gmd_ss_variants.variant_id%TYPE;
7358 l_storage_whse_code gmd_ss_variants.storage_whse_code%TYPE;
7359 l_storage_location gmd_ss_variants.storage_location%TYPE;
7360 l_storage_organization_id gmd_ss_variants.storage_organization_id%TYPE;
7361 l_storage_subinventory gmd_ss_variants.storage_subinventory%TYPE;
7362 l_storage_subinvind ic_whse_mst.subinventory_ind_flag%TYPE;
7363 l_storage_locator_id gmd_ss_variants.storage_locator_id%TYPE;
7364
7365 /*=========================================
7366 Cursor to get gmd_ss_storage_history.
7367 Select also where organization id is
7368 null to not affect records added after
7369 the migration in case migration is
7370 run again out of sequence.
7371 =========================================*/
7372
7373 CURSOR get_ss_history IS
7374 SELECT storage_history_id, whse_code, location,
7375 organization_id, subinventory, locator_id
7376 FROM gmd_ss_storage_history
7377 WHERE migrated_ind IS NULL
7378 AND organization_id IS NULL;
7379
7380 l_hist_org_id gmd_ss_storage_history.organization_id%TYPE;
7381 l_hist_subinventory gmd_ss_storage_history.subinventory%TYPE;
7382 l_hist_subinvind ic_whse_mst.subinventory_ind_flag%TYPE;
7383 l_hist_locator_id gmd_ss_storage_history.locator_id%TYPE;
7384
7385 l_text_code NUMBER;
7386
7387 BEGIN
7388
7389 GMD_QC_MIG12.g_progress_ind := 0;
7390 x_exception_count := 0;
7391
7392
7393 /*==============================================
7394 Log Start of gmd_storage_plan_details.
7395 ==============================================*/
7396
7397 GMA_COMMON_LOGGING.gma_migration_central_log (
7398 p_run_id => p_migration_run_id,
7399 p_log_level => FND_LOG.LEVEL_EVENT,
7400 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
7401 p_table_name => 'GMD_STORAGE_PLAN_DETAILS',
7402 p_token1 => 'TABLE_NAME',
7403 p_param1 => 'GMD_STORAGE_PLAN_DETAILS',
7404 p_context => 'Quality Stability Studies',
7405 p_app_short_name => 'GMA');
7406
7407 /*===================================
7408 Process gmd_storage_plan_details.
7409 ====================================*/
7410
7411 GMD_QC_MIG12.g_store_plan_upd_count := 0;
7412 GMD_QC_MIG12.g_store_plan_pro_count := 0;
7413 GMD_QC_MIG12.g_store_plan_err_count := 0;
7414 GMD_QC_MIG12.g_progress_ind := 1;
7415
7416 FOR l_plan_det IN get_plan_details LOOP
7417 BEGIN -- plan details subprogram
7418
7419 GMD_QC_MIG12.g_store_plan_pro_count := GMD_QC_MIG12.g_store_plan_pro_count + 1;
7420
7421 /*=============================================
7422 Get organization id for the subinventory.
7423 =============================================*/
7424
7425 IF (l_plan_det.whse_code IS NOT NULL) THEN
7426 GMD_QC_MIG12.GET_WHSE_INFO (
7427 p_whse_code => l_plan_det.whse_code,
7428 x_organization_id => l_plan_org_id,
7429 x_subinv_ind => l_plan_subinv_ind,
7430 x_loct_ctl => l_splan_loct_ctl);
7431
7432 IF (l_plan_org_id IS NULL) THEN
7433 RAISE SP_WHSE_ERROR;
7434 END IF;
7435
7436 l_plan_subinv := l_plan_det.whse_code;
7437
7438 /*=============================
7439 Get Storage Locator Id.
7440 =============================*/
7441
7442 IF (l_plan_det.location IS NOT NULL) THEN
7443 IF (l_plan_det.location = 'NONE') THEN
7444 l_plan_locator_id := NULL;
7445 ELSE
7446 l_plan_locator_id := GMD_QC_MIG12.GET_LOCATOR_ID (
7447 p_whse_code => l_plan_det.whse_code,
7448 p_location => l_plan_det.location);
7449
7450 IF (l_plan_locator_id IS NULL) THEN
7451 IF (l_splan_loct_ctl = 2) THEN
7452 /*======================================
7453 Create a Non-validated location.
7454 ======================================*/
7455 INV_MIGRATE_PROCESS_ORG.CREATE_LOCATION (
7456 p_migration_run_id => p_migration_run_id,
7457 p_organization_id => l_plan_org_id,
7458 p_subinventory_code => l_plan_subinv,
7459 p_location => l_plan_det.location,
7460 p_loct_desc => l_plan_det.location,
7461 p_start_date_active => SYSDATE,
7462 p_commit => p_commit,
7463 x_location_id => l_plan_locator_id,
7464 x_failure_count => l_failure_count);
7465
7466 IF (l_failure_count > 0) THEN
7467 RAISE SP_CREATE_LOCATION;
7468 END IF;
7469 ELSE
7470 RAISE SP_LOCATOR_ID;
7471 END IF;
7472 ELSE
7473 /*=========================================
7474 Compare locator's subinventory to
7475 subinventory already mapped.
7476 =========================================*/
7477 GMD_QC_MIG12.GET_SUBINV_DATA(l_plan_locator_id,
7478 l_subinv,
7479 lsub_organization_id);
7480
7481 IF (lsub_organization_id IS NULL) THEN
7482 RAISE SP_SUBINV_ERROR;
7483 END IF;
7484 IF (l_subinv <> l_plan_subinv) THEN
7485 l_plan_subinv := l_subinv;
7486 END IF;
7487 END IF;
7488 END IF; -- none location
7489 ELSE -- null location
7490 l_plan_locator_id := NULL;
7491 END IF; -- location is null.
7492 ELSE
7493 -- BEGIN Bug# 5109039
7494 -- Get the default_stability_study_org from gmd_migrate_parms and convert to the correct id
7495 -- and assign it to l_plan_org_id instead of null
7496 OPEN get_ss_org;
7497 FETCH get_ss_org INTO l_def_ss_org;
7498 CLOSE get_ss_org;
7499
7500 l_plan_org_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_def_ss_org);
7501 IF (l_plan_org_id IS NULL) THEN
7502 RAISE DEFAULT_SS_ORG_ERROR;
7503 END IF;
7504 -- END Bug# 5109039
7505
7506 l_plan_subinv := NULL;
7507 l_plan_locator_id := NULL;
7508 END IF; -- plan whse code is null
7509
7510 /*===================================
7511 Update gmd_storage_plan_details.
7512 ===================================*/
7513
7514 UPDATE gmd_storage_plan_details
7515 SET storage_organization_id = l_plan_org_id,
7516 storage_subinventory = l_plan_subinv,
7517 storage_locator_id = l_plan_locator_id,
7518 migrated_ind = 1
7519 WHERE storage_plan_detail_id = l_plan_det.storage_plan_detail_id;
7520
7521 IF (p_commit = FND_API.G_TRUE) THEN
7522 COMMIT;
7523 END IF;
7524
7525 GMD_QC_MIG12.g_store_plan_upd_count := GMD_QC_MIG12.g_store_plan_upd_count + 1;
7526
7527 EXCEPTION
7528
7529 WHEN SP_WHSE_ERROR THEN
7530 GMA_COMMON_LOGGING.gma_migration_central_log (
7531 p_run_id => p_migration_run_id,
7532 p_log_level => FND_LOG.LEVEL_ERROR,
7533 p_message_token => 'GMD_MIG_WHSE_ERROR',
7534 p_context => 'Quality Stability Studies - gmd_storage_plan_details',
7535 p_token1 => 'WHSE',
7536 p_token2 => 'WNAME',
7537 p_token3 => 'ROWK',
7538 p_token4 => 'ROWV',
7539 p_param1 => l_plan_det.whse_code,
7540 p_param2 => 'WHSE_CODE',
7541 p_param3 => 'STORAGE_PLAN_DETAIL_ID',
7542 p_param4 => l_plan_det.storage_plan_detail_id,
7543 p_app_short_name => 'GMD');
7544 GMD_QC_MIG12.g_store_plan_err_count := GMD_QC_MIG12.g_store_plan_err_count + 1;
7545 x_exception_count := x_exception_count + 1;
7546
7547 WHEN SP_CREATE_LOCATION THEN
7548 GMA_COMMON_LOGGING.gma_migration_central_log (
7549 p_run_id => p_migration_run_id,
7550 p_log_level => FND_LOG.LEVEL_ERROR,
7551 p_message_token => 'GMD_MIG_NONLOC_FAILURE',
7552 p_context => 'Quality Stability Studies - gmd_storage_plan_details',
7553 p_token1 => 'ROWK',
7554 p_token2 => 'ROWV',
7555 p_token3 => 'FNAME',
7556 p_param1 => 'STORAGE_PLAN_DETAIL_ID',
7557 p_param2 => l_plan_det.storage_plan_detail_id,
7558 p_param3 => 'LOCATION',
7559 p_app_short_name => 'GMD');
7560 GMD_QC_MIG12.g_store_plan_err_count := GMD_QC_MIG12.g_store_plan_err_count + 1;
7561 x_exception_count := x_exception_count + 1;
7562
7563 WHEN SP_LOCATOR_ID THEN
7564 GMA_COMMON_LOGGING.gma_migration_central_log (
7565 p_run_id => p_migration_run_id,
7566 p_log_level => FND_LOG.LEVEL_ERROR,
7567 p_message_token => 'GMD_MIG_LOCATOR_ID',
7568 p_context => 'Quality Stability Studies - gmd_storage_plan_details',
7569 p_token1 => 'WHSE',
7570 p_token2 => 'LOCATION',
7571 p_token3 => 'LFIELD',
7572 p_token4 => 'ROWK',
7573 p_token5 => 'ROWV',
7574 p_param1 => l_plan_det.whse_code,
7575 p_param2 => l_plan_det.location,
7576 p_param3 => 'LOCATION',
7577 p_param4 => 'STORAGE_PLAN_DETAIL_ID',
7578 p_param5 => l_plan_det.storage_plan_detail_id,
7579 p_app_short_name => 'GMD');
7580 GMD_QC_MIG12.g_store_plan_err_count := GMD_QC_MIG12.g_store_plan_err_count + 1;
7581 x_exception_count := x_exception_count + 1;
7582
7583
7584 WHEN SP_SUBINV_ERROR THEN
7585 GMA_COMMON_LOGGING.gma_migration_central_log (
7586 p_run_id => p_migration_run_id,
7587 p_log_level => FND_LOG.LEVEL_ERROR,
7588 p_message_token => 'GMD_MIG_SUBINV',
7589 p_context => 'Quality Stability Studies - gmd_storage_plan_details',
7590 p_token1 => 'LOCATOR',
7591 p_token2 => 'ROWK',
7592 p_token3 => 'ROWV',
7593 p_param1 => to_char(l_plan_locator_id),
7594 p_param2 => 'STORAGE_PLAN_DETAIL_ID',
7595 p_param3 => to_char(l_plan_det.storage_plan_detail_id),
7596 p_app_short_name => 'GMD');
7597 GMD_QC_MIG12.g_store_plan_err_count := GMD_QC_MIG12.g_store_plan_err_count + 1;
7598 x_exception_count := x_exception_count + 1;
7599
7600 -- Bug# 5109039
7601 WHEN DEFAULT_SS_ORG_ERROR THEN
7602 GMA_COMMON_LOGGING.gma_migration_central_log (
7603 p_run_id => p_migration_run_id,
7604 p_log_level => FND_LOG.LEVEL_ERROR,
7605 p_message_token => 'GMD_MIG_DEF_SS_ORG_ERROR',
7606 p_context => 'Quality Stability Studies - gmd_storage_plan_details',
7607 p_app_short_name => 'GMD');
7608 GMD_QC_MIG12.g_store_plan_err_count := GMD_QC_MIG12.g_store_plan_err_count + 1;
7609 x_exception_count := x_exception_count + 1;
7610
7611 WHEN OTHERS THEN
7612 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
7613 GMA_COMMON_LOGGING.gma_migration_central_log (
7614 p_run_id => p_migration_run_id,
7615 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
7616 p_message_token => 'GMA_MIGRATION_DB_ERROR',
7617 p_context => 'Quality Stability Studies - gmd_storage_plan_details',
7618 p_db_error => SQLERRM,
7619 p_app_short_name => 'GMA');
7620 x_exception_count := x_exception_count + 1;
7621 ROLLBACK;
7622
7623 END; -- end plan details subprogram
7624
7625 END LOOP; -- end get plan details
7626
7627
7628 /*=====================================================
7629 Log number of updates to gmd_storage_plan_details.
7630 =====================================================*/
7631
7632 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
7633
7634
7635 /*==============================================
7636 Log Start of gmd_stability_studies.
7637 ==============================================*/
7638
7639 GMA_COMMON_LOGGING.gma_migration_central_log (
7640 p_run_id => p_migration_run_id,
7641 p_log_level => FND_LOG.LEVEL_EVENT,
7642 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
7643 p_table_name => 'GMD_STABILITY_STUDIES_B',
7644 p_token1 => 'TABLE_NAME',
7645 p_param1 => 'GMD_STABILITY_STUDIES_B',
7646 p_context => 'Quality Stability Studies',
7647 p_app_short_name => 'GMA');
7648
7649 /*=====================================
7650 Migrate gmd_stability_studies_b.
7651 =====================================*/
7652
7653 GMD_QC_MIG12.g_stab_pro_count := 0;
7654 GMD_QC_MIG12.g_stab_upd_count := 0;
7655 GMD_QC_MIG12.g_stab_err_count := 0;
7656 GMD_QC_MIG12.g_progress_ind := 2;
7657
7658 FOR l_stab_rec in get_stab LOOP
7659 BEGIN -- stab study subprogram
7660 GMD_QC_MIG12.g_stab_pro_count := GMD_QC_MIG12.g_stab_pro_count + 1;
7661 /*================================
7662 Migrate organization.
7663 ================================*/
7664
7665 l_stab_org_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_stab_rec.orgn_code);
7666 IF (l_stab_org_id IS NULL) THEN
7667 RAISE STAB_NO_ORG;
7668 END IF;
7669
7670 /*======================================
7671 Check if lab organization migrated.
7672 ======================================*/
7673
7674 IF (l_stab_rec.lab_organization_id IS NULL and l_stab_rec.qc_lab_orgn_code IS NOT NULL) THEN
7675 RAISE STAB_NO_LAB_ORG;
7676 END IF;
7677
7678 IF (l_stab_rec.item_id IS NOT NULL) THEN
7679 /*=========================
7680 Get Inventory Item id.
7681 =========================*/
7682 INV_OPM_ITEM_MIGRATION.GET_ODM_ITEM(
7683 P_MIGRATION_RUN_ID => p_migration_run_id,
7684 P_ITEM_ID => l_stab_rec.item_id,
7685 P_ORGANIZATION_ID => l_stab_org_id,
7686 P_MODE => NULL,
7687 P_COMMIT => FND_API.G_TRUE,
7688 X_INVENTORY_ITEM_ID => l_inventory_item_id,
7689 X_FAILURE_COUNT => l_failure_count);
7690 IF (l_failure_count > 0) THEN
7691 RAISE STAB_ODM_ITEM;
7692 END IF;
7693 ELSE
7694 l_inventory_item_id := NULL;
7695 END IF;
7696
7697 UPDATE gmd_stability_studies_b
7698 SET inventory_item_id = l_inventory_item_id,
7699 organization_id = l_stab_org_id,
7700 migrated_ind = 1
7701 WHERE ss_id = l_stab_rec.ss_id;
7702
7703 IF (p_commit = FND_API.G_TRUE) THEN
7704 COMMIT;
7705 END IF;
7706
7707 GMD_QC_MIG12.g_stab_upd_count := GMD_QC_MIG12.g_stab_upd_count + 1;
7708
7709 EXCEPTION
7710 WHEN STAB_NO_ORG THEN
7711 GMA_COMMON_LOGGING.gma_migration_central_log (
7712 p_run_id => p_migration_run_id,
7713 p_log_level => FND_LOG.LEVEL_ERROR,
7714 p_message_token => 'GMD_MIG_NO_ORG',
7715 p_context => 'Quality Stability Studies - gmd_stability_studies_b',
7716 p_token1 => 'ORG',
7717 p_token2 => 'ONAME',
7718 p_token3 => 'ROWK',
7719 p_token4 => 'ROWV',
7720 p_param1 => l_stab_rec.orgn_code,
7721 p_param2 => 'ORGN_CODE',
7722 p_param3 => 'SS_ID',
7723 p_param4 => to_char(l_stab_rec.ss_id),
7724 p_app_short_name => 'GMD');
7725 GMD_QC_MIG12.g_stab_err_count := GMD_QC_MIG12.g_stab_err_count + 1;
7726 x_exception_count := x_exception_count + 1;
7727
7728 WHEN STAB_NO_LAB_ORG THEN
7729 GMA_COMMON_LOGGING.gma_migration_central_log (
7730 p_run_id => p_migration_run_id,
7731 p_log_level => FND_LOG.LEVEL_ERROR,
7732 p_message_token => 'GMD_MIG_NO_ORG',
7733 p_context => 'Quality Stability Studies - gmd_stability_studies_b',
7734 p_token1 => 'ORG',
7735 p_token2 => 'ONAME',
7736 p_token3 => 'ROWK',
7737 p_token4 => 'ROWV',
7738 p_param1 => l_stab_rec.qc_lab_orgn_code,
7739 p_param2 => 'QC_LAB_ORGN_CODE',
7740 p_param3 => 'SS_ID',
7741 p_param4 => to_char(l_stab_rec.ss_id),
7742 p_app_short_name => 'GMD');
7743 GMD_QC_MIG12.g_stab_err_count := GMD_QC_MIG12.g_stab_err_count + 1;
7744 x_exception_count := x_exception_count + 1;
7745
7746 WHEN STAB_ODM_ITEM THEN
7747 GMA_COMMON_LOGGING.gma_migration_central_log (
7748 p_run_id => p_migration_run_id,
7749 p_log_level => FND_LOG.LEVEL_ERROR,
7750 p_message_token => 'GMD_MIG_ODM_ITEM',
7751 p_context => 'Quality Stability Studies - gmd_stability_studies_b',
7752 p_token1 => 'ORG',
7753 p_token2 => 'ITEMID',
7754 p_token3 => 'ROWK',
7755 p_token4 => 'ROWV',
7756 p_param1 => to_char(l_stab_rec.organization_id),
7757 p_param2 => to_char(l_stab_rec.item_id),
7758 p_param3 => 'SS_ID',
7759 p_param4 => to_char(l_stab_rec.ss_id),
7760 p_app_short_name => 'GMD');
7761 GMD_QC_MIG12.g_stab_err_count := GMD_QC_MIG12.g_stab_err_count + 1;
7762 x_exception_count := x_exception_count + 1;
7763
7764 WHEN OTHERS THEN
7765 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
7766 GMA_COMMON_LOGGING.gma_migration_central_log (
7767 p_run_id => p_migration_run_id,
7768 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
7769 p_message_token => 'GMA_MIGRATION_DB_ERROR',
7770 p_context => 'Quality Stability Studies - gmd_stability_studies_b',
7771 p_db_error => SQLERRM,
7772 p_app_short_name => 'GMA');
7773 x_exception_count := x_exception_count + 1;
7774 ROLLBACK;
7775
7776 END; -- end stab study subprogram
7777
7778 END LOOP; -- end of get_stab
7779
7780
7781
7782 /*==============================================
7783 Log End of gmd_stability_studies_b.
7784 ==============================================*/
7785
7786 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
7787
7788
7789 /*==============================================
7790 Log Start of gmd_ss_material_sources.
7791 ==============================================*/
7792
7793 GMA_COMMON_LOGGING.gma_migration_central_log (
7794 p_run_id => p_migration_run_id,
7795 p_log_level => FND_LOG.LEVEL_EVENT,
7796 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
7797 p_table_name => 'GMD_SS_MATERIAL_SOURCES',
7798 p_token1 => 'TABLE_NAME',
7799 p_param1 => 'GMD_SS_MATERIAL_SOURCES',
7800 p_context => 'Quality Stability Studies',
7801 p_app_short_name => 'GMA');
7802
7803 /*=======================================
7804 Migrate gmd_ss_material_sources.
7805 =======================================*/
7806
7807 GMD_QC_MIG12.g_matl_source_pro_count := 0;
7808 GMD_QC_MIG12.g_matl_source_err_count := 0;
7809 GMD_QC_MIG12.g_matl_source_upd_count := 0;
7810 GMD_QC_MIG12.g_progress_ind := 3;
7811
7812 FOR l_matl_rec IN get_matl_src LOOP
7813 BEGIN -- matl src subprogram
7814 GMD_QC_MIG12.g_matl_source_pro_count := GMD_QC_MIG12.g_matl_source_pro_count + 1;
7815 /*===================================
7816 Migrate organization.
7817 Convert plant code if it exists.
7818 ===================================*/
7819 IF (l_matl_rec.plant_code IS NOT NULL) THEN
7820 l_plant_org_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_matl_rec.plant_code);
7821 ELSE
7822 l_plant_org_id := NULL;
7823 END IF;
7824
7825 /*============================================
7826 Get org and item id from Stability Study.
7827 ============================================*/
7828
7829 OPEN get_stab_study (l_matl_rec.ss_id);
7830 FETCH get_stab_study INTO l_ss_orgn_code, l_ss_item_id;
7831 IF (get_stab_study%NOTFOUND) THEN
7832 CLOSE get_stab_study;
7833 RAISE MATL_GET_SS;
7834 END IF;
7835 CLOSE get_stab_study;
7836
7837 /*===================================
7838 Get plant code organization_id.
7839 Use Stability Study if Plant orgid
7840 is null
7841 ===================================*/
7842 IF (l_plant_org_id IS NULL) THEN
7843 l_plant_org_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_ss_orgn_code);
7844 IF (l_plant_org_id IS NULL) THEN
7845 RAISE MATL_PLANT_ORG;
7846 END IF;
7847 l_lot_orgn_code := l_ss_orgn_code;
7848 ELSE
7849 l_lot_orgn_code := l_matl_rec.plant_code;
7850 END IF;
7851
7852 IF (l_ss_item_id IS NOT NULL AND l_matl_rec.lot_id IS NOT NULL) THEN --verify
7853 /*=======================
7854 Get Lot Number.
7855 =======================*/
7856 inv_opm_lot_migration.GET_ODM_LOT (
7857 P_MIGRATION_RUN_ID => p_migration_run_id,
7858 P_ORGN_CODE => l_lot_orgn_code,
7859 P_ITEM_ID => l_ss_item_id,
7860 P_LOT_ID => l_matl_rec.lot_id,
7861 P_WHSE_CODE => NULL,
7862 P_LOCATION => NULL,
7863 P_COMMIT => FND_API.G_TRUE,
7864 X_LOT_NUMBER => l_lot_number,
7865 X_PARENT_LOT_NUMBER => l_parent_lot_number,
7866 X_FAILURE_COUNT => l_failure_count
7867 );
7868
7869 IF (l_failure_count > 0) THEN
7870 RAISE MATL_MIG_LOT;
7871 -- Bug# 5531108
7872 -- Since the migrated lot_number field is a combination of lot and sublot field removing the following else clause
7873 -- so that the lot_number field is updated with l_lot_number.
7874 /*ELSE
7875 -- Bug# 5462876
7876 -- if the item is not sublot controlled assign lot_number instead of parent_lot_number. Added nvl to the below statement.
7877 l_lot_number := NVL(l_parent_lot_number, l_lot_number); */
7878 END IF;
7879 ELSE
7880 l_lot_number := NULL;
7881 END IF;
7882
7883 /*==================================
7884 Update gmd_ss_material_sources.
7885 ==================================*/
7886
7887 UPDATE gmd_ss_material_sources
7888 SET source_organization_id = l_plant_org_id,
7889 lot_number = l_lot_number,
7890 migrated_ind = 1
7891 WHERE source_id = l_matl_rec.source_id
7892 AND ss_id = l_matl_rec.ss_id;
7893
7894 IF (p_commit = FND_API.G_TRUE) THEN
7895 COMMIT;
7896 END IF;
7897 GMD_QC_MIG12.g_matl_source_upd_count := GMD_QC_MIG12.g_matl_source_upd_count + 1;
7898
7899 EXCEPTION
7900 WHEN MATL_NO_ORG THEN
7901 GMA_COMMON_LOGGING.gma_migration_central_log (
7902 p_run_id => p_migration_run_id,
7903 p_log_level => FND_LOG.LEVEL_ERROR,
7904 p_message_token => 'GMD_MIG_NO_ORG',
7905 p_context => 'Quality Stability Studies - gmd_ss_material_sources',
7906 p_token1 => 'ORG',
7907 p_token2 => 'ONAME',
7908 p_token3 => 'ROWK',
7909 p_token4 => 'ROWV',
7910 p_param1 => l_matl_rec.plant_code,
7911 p_param2 => 'PLANT_CODE',
7912 p_param3 => 'SOURCE_ID',
7913 p_param4 => to_char(l_matl_rec.source_id),
7914 p_app_short_name => 'GMD');
7915 GMD_QC_MIG12.g_matl_source_err_count := GMD_QC_MIG12.g_matl_source_err_count + 1;
7916 x_exception_count := x_exception_count + 1;
7917
7918 WHEN MATL_GET_SS THEN
7919 GMA_COMMON_LOGGING.gma_migration_central_log (
7920 p_run_id => p_migration_run_id,
7921 p_log_level => FND_LOG.LEVEL_ERROR,
7922 p_message_token => 'GMD_MIG_GET_SS_ERROR',
7923 p_context => 'Quality Stability Studies - gmd_ss_material_sources',
7924 p_token1 => 'STABID',
7925 p_token2 => 'ROWK',
7926 p_token3 => 'ROWV',
7927 p_param1 => to_char(l_matl_rec.ss_id),
7928 p_param2 => 'SOURCE_ID',
7929 p_param3 => to_char(l_matl_rec.source_id),
7930 p_app_short_name => 'GMD');
7931 GMD_QC_MIG12.g_matl_source_err_count := GMD_QC_MIG12.g_matl_source_err_count + 1;
7932 x_exception_count := x_exception_count + 1;
7933
7934 WHEN MATL_PLANT_ORG THEN
7935 GMA_COMMON_LOGGING.gma_migration_central_log (
7936 p_run_id => p_migration_run_id,
7937 p_log_level => FND_LOG.LEVEL_ERROR,
7938 p_message_token => 'GMD_MIG_PLANT_ORG_ID',
7939 p_context => 'Quality Stability Studies - gmd_ss_material_sources',
7940 p_token1 => 'ORG',
7941 p_token2 => 'SRC',
7942 p_token3 => 'ROWK',
7943 p_token4 => 'ROWV',
7944 p_param1 => l_ss_orgn_code,
7945 p_param2 => 'SS_ORGN_CODE',
7946 p_param3 => 'SOURCE_ID',
7947 p_param4 => to_char(l_matl_rec.source_id),
7948 p_app_short_name => 'GMD');
7949 GMD_QC_MIG12.g_matl_source_err_count := GMD_QC_MIG12.g_matl_source_err_count + 1;
7950 x_exception_count := x_exception_count + 1;
7951
7952 WHEN MATL_MIG_LOT THEN
7953 GMA_COMMON_LOGGING.gma_migration_central_log (
7954 p_run_id => p_migration_run_id,
7955 p_log_level => FND_LOG.LEVEL_ERROR,
7956 p_message_token => 'GMD_MIG_LOT',
7957 p_context => 'Quality Stability Studies - gmd_ss_material_sources',
7958 p_token1 => 'ROWK',
7959 p_token2 => 'ROWV',
7960 p_param1 => 'SOURCE_ID',
7961 p_param2 => to_char(l_matl_rec.source_id),
7962 p_app_short_name => 'GMD');
7963 GMD_QC_MIG12.g_matl_source_err_count := GMD_QC_MIG12.g_matl_source_err_count + 1;
7964 x_exception_count := x_exception_count + 1;
7965
7966 WHEN OTHERS THEN
7967 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
7968 GMA_COMMON_LOGGING.gma_migration_central_log (
7969 p_run_id => p_migration_run_id,
7970 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
7971 p_message_token => 'GMA_MIGRATION_DB_ERROR',
7972 p_context => 'Quality Stability Studies - gmd_ss_material_sources',
7973 p_db_error => SQLERRM,
7974 p_app_short_name => 'GMA');
7975 x_exception_count := x_exception_count + 1;
7976 ROLLBACK;
7977
7978 END; -- end matl src subprogram
7979
7980 END LOOP; -- end get_matl_src
7981
7982
7983
7984 /*==============================================
7985 Log End of gmd_ss_material_sources.
7986 ==============================================*/
7987
7988 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
7989
7990 /*===================================
7991 Log Start of gmd_ss_variants.
7992 ===================================*/
7993
7994 GMA_COMMON_LOGGING.gma_migration_central_log (
7995 p_run_id => p_migration_run_id,
7996 p_log_level => FND_LOG.LEVEL_EVENT,
7997 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
7998 p_table_name => 'GMD_SS_VARIANTS',
7999 p_token1 => 'TABLE_NAME',
8000 p_param1 => 'GMD_SS_VARIANTS',
8001 p_context => 'Quality Stability Studies',
8002 p_app_short_name => 'GMA');
8003
8004 GMD_QC_MIG12.g_ss_variant_pro_count := 0;
8005 GMD_QC_MIG12.g_ss_variant_err_count := 0;
8006 GMD_QC_MIG12.g_ss_variant_upd_count := 0;
8007 GMD_QC_MIG12.g_progress_ind := 4;
8008
8009 /*==============================
8010 Migrate gmd_ss_variants.
8011 ==============================*/
8012
8013 FOR l_var_rec IN get_ss_variant LOOP
8014 BEGIN -- variant subprogram
8015 GMD_QC_MIG12.g_ss_variant_pro_count := GMD_QC_MIG12.g_ss_variant_pro_count + 1;
8016
8017 /*======================================
8018 Check if uom migrated successfully.
8019 Removed this check.
8020 ======================================*/
8021
8022 /*===============================
8023 Get org_id and subinventory
8024 *===============================*/
8025
8026 IF (l_var_rec.storage_whse_code IS NOT NULL) THEN
8027 GMD_QC_MIG12.GET_WHSE_INFO (
8028 p_whse_code => l_var_rec.storage_whse_code,
8029 x_organization_id => l_storage_organization_id,
8030 x_subinv_ind => l_storage_subinvind,
8031 x_loct_ctl => l_svar_loct_ctl);
8032
8033 IF (l_storage_organization_id IS NULL) THEN
8034 RAISE VAR_WHSE_ERROR;
8035 END IF;
8036 l_storage_subinventory := l_var_rec.storage_whse_code;
8037
8038 /*========================================
8039 Get Locator and compare subinventory.
8040 *========================================*/
8041
8042 IF (l_var_rec.storage_location IS NOT NULL) THEN
8043 IF (l_var_rec.storage_location = 'NONE') THEN
8044 l_storage_locator_id := NULL;
8045 ELSE
8046 l_storage_locator_id := GMD_QC_MIG12.GET_LOCATOR_ID (
8047 p_whse_code => l_var_rec.storage_whse_code,
8048 p_location => l_var_rec.storage_location);
8049 IF (l_storage_locator_id IS NULL) THEN
8050 IF (l_svar_loct_ctl = 2) THEN
8051 /*======================================
8052 Create a Non-validated location.
8053 ======================================*/
8054 INV_MIGRATE_PROCESS_ORG.CREATE_LOCATION (
8055 p_migration_run_id => p_migration_run_id,
8056 p_organization_id => l_storage_organization_id,
8057 p_subinventory_code => l_storage_subinventory,
8058 p_location => l_var_rec.storage_location,
8059 p_loct_desc => l_var_rec.storage_location,
8060 p_start_date_active => SYSDATE,
8061 p_commit => p_commit,
8062 x_location_id => l_storage_locator_id,
8063 x_failure_count => l_failure_count);
8064
8065 IF (l_failure_count > 0) THEN
8066 RAISE VAR_CREATE_LOC;
8067 END IF;
8068 ELSE -- validated location
8069 RAISE VAR_LOCATOR_ID;
8070 END IF; -- validated location
8071 ELSE -- locator is not null
8072 GMD_QC_MIG12.GET_SUBINV_DATA(l_storage_locator_id,
8073 l_subinv,
8074 lsub_organization_id);
8075
8076 IF (lsub_organization_id IS NULL) THEN
8077 RAISE VAR_SUBINV_ERROR;
8078 END IF;
8079
8080 IF (l_subinv <> l_storage_subinventory) THEN
8081 l_storage_subinventory := l_subinv;
8082 /*=============================================
8083 Overlay subinventory with locator subinv.
8084 =============================================*/
8085 END IF;
8086 END IF; --id is null
8087 END IF; -- location is none
8088 ELSE -- storage location is null and whse is not null.
8089 l_storage_locator_id := NULL;
8090 END IF;
8091 ELSE -- whse is null
8092 l_storage_locator_id := l_var_rec.storage_locator_id;
8093 l_storage_subinventory := l_var_rec.storage_subinventory;
8094 l_storage_organization_id := l_var_rec.storage_organization_id;
8095 END IF;
8096
8097 /*===============================
8098 Update gmd_ss_variants.
8099 *===============================*/
8100
8101 UPDATE gmd_ss_variants
8102 SET storage_organization_id = l_storage_organization_id,
8103 storage_subinventory = l_storage_subinventory,
8104 storage_locator_id = l_storage_locator_id,
8105 migrated_ind = 1
8106 WHERE variant_id = l_var_rec.variant_id;
8107
8108
8109 IF (p_commit = FND_API.G_TRUE) THEN
8110 COMMIT;
8111 END IF;
8112
8113 GMD_QC_MIG12.g_ss_variant_upd_count := GMD_QC_MIG12.g_ss_variant_upd_count + 1;
8114
8115 EXCEPTION
8116
8117 WHEN VAR_WHSE_ERROR THEN
8118 GMA_COMMON_LOGGING.gma_migration_central_log (
8119 p_run_id => p_migration_run_id,
8120 p_log_level => FND_LOG.LEVEL_ERROR,
8121 p_message_token => 'GMD_MIG_WHSE_ERROR',
8122 p_context => 'Quality Stability Studies - gmd_ss_variants',
8123 p_token1 => 'WHSE',
8124 p_token2 => 'WNAME',
8125 p_token3 => 'ROWK',
8126 p_token4 => 'ROWV',
8127 p_param1 => l_var_rec.storage_whse_code,
8128 p_param2 => 'STORAGE_WHSE_CODE',
8129 p_param3 => 'VARIANT_ID',
8130 p_param4 => to_char(l_var_rec.variant_id),
8131 p_app_short_name => 'GMD');
8132 GMD_QC_MIG12.g_ss_variant_err_count := GMD_QC_MIG12.g_ss_variant_err_count + 1;
8133 x_exception_count := x_exception_count + 1;
8134
8135 WHEN VAR_CREATE_LOC THEN
8136 GMA_COMMON_LOGGING.gma_migration_central_log (
8137 p_run_id => p_migration_run_id,
8138 p_log_level => FND_LOG.LEVEL_ERROR,
8139 p_message_token => 'GMD_MIG_NONLOC_FAILURE',
8140 p_context => 'Quality Stability Studies - gmd_ss_variants',
8141 p_token1 => 'ROWK',
8142 p_token2 => 'ROWV',
8143 p_token3 => 'FNAME',
8144 p_param1 => 'VARIANT_ID',
8145 p_param2 => to_char(l_var_rec.variant_id),
8146 p_param3 => 'STORAGE_LOCATION',
8147 p_app_short_name => 'GMD');
8148 GMD_QC_MIG12.g_ss_variant_err_count := GMD_QC_MIG12.g_ss_variant_err_count + 1;
8149 x_exception_count := x_exception_count + 1;
8150
8151 WHEN VAR_LOCATOR_ID THEN
8152 GMA_COMMON_LOGGING.gma_migration_central_log (
8153 p_run_id => p_migration_run_id,
8154 p_log_level => FND_LOG.LEVEL_ERROR,
8155 p_message_token => 'GMD_MIG_LOCATOR_ID',
8156 p_context => 'Quality Stability Studies - gmd_ss_variants',
8157 p_token1 => 'WHSE',
8158 p_token2 => 'LOCATION',
8159 p_token3 => 'LFIELD',
8160 p_token4 => 'ROWK',
8161 p_token5 => 'ROWV',
8162 p_param1 => l_var_rec.storage_whse_code,
8163 p_param2 => l_var_rec.storage_location,
8164 p_param3 => 'STORAGE_LOCATION',
8165 p_param4 => 'VARIANT_ID',
8166 p_param5 => to_char(l_var_rec.variant_id),
8167 p_app_short_name => 'GMD');
8168 GMD_QC_MIG12.g_ss_variant_err_count := GMD_QC_MIG12.g_ss_variant_err_count + 1;
8169 x_exception_count := x_exception_count + 1;
8170
8171 WHEN VAR_SUBINV_ERROR THEN
8172 GMA_COMMON_LOGGING.gma_migration_central_log (
8173 p_run_id => p_migration_run_id,
8174 p_log_level => FND_LOG.LEVEL_ERROR,
8175 p_message_token => 'GMD_MIG_SUBINV',
8176 p_context => 'Quality Stability Studies - gmd_ss_variants',
8177 p_token1 => 'LOCATOR',
8178 p_token2 => 'ROWK',
8179 p_token3 => 'ROWV',
8180 p_param1 => to_char(l_storage_locator_id),
8181 p_param2 => 'VARIANT_ID',
8182 p_param3 => to_char(l_var_rec.variant_id),
8183 p_app_short_name => 'GMD');
8184 GMD_QC_MIG12.g_ss_variant_err_count := GMD_QC_MIG12.g_ss_variant_err_count + 1;
8185 x_exception_count := x_exception_count + 1;
8186
8187
8188 WHEN OTHERS THEN
8189 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
8190 GMA_COMMON_LOGGING.gma_migration_central_log (
8191 p_run_id => p_migration_run_id,
8192 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
8193 p_message_token => 'GMA_MIGRATION_DB_ERROR',
8194 p_context => 'Quality Stability Studies - gmd_ss_variants',
8195 p_db_error => SQLERRM,
8196 p_app_short_name => 'GMA');
8197 x_exception_count := x_exception_count + 1;
8198 ROLLBACK;
8199
8200 END; -- end variant subprogram
8201
8202
8203 END LOOP; -- end get_ss_variant
8204
8205
8206 /*==============================================
8207 Log End of gmd_ss_variants.
8208 ==============================================*/
8209
8210 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
8211
8212 /*==============================================
8213 Retrieve Default Storage Package Orgn Code.
8214 Source is gmd_migrate_parms.
8215 ==============================================*/
8216
8217 BEGIN -- get setup subprogram
8218 OPEN get_ss_org;
8219 FETCH get_ss_org INTO l_def_ss_org;
8220 CLOSE get_ss_org;
8221 IF (l_def_ss_org IS NULL) THEN
8222 /*==============================================
8223 Get Default Lab Type Profile Value
8224 ==============================================*/
8225 l_def_ss_org := GMD_QC_MIG12.GET_PROFILE_VALUE('GEMMS_DEFAULT_LAB_TYPE');
8226
8227 IF (l_def_ss_org IS NULL) THEN
8228 RAISE NULL_DEFAULT_LAB;
8229 END IF;
8230 END IF;
8231
8232 /*==============================================
8233 Get Org id for the Default Orgn Code.
8234 ==============================================*/
8235
8236 l_def_ss_org_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_def_ss_org);
8237 IF (l_def_ss_org_id IS NULL) THEN
8238 RAISE DEFAULT_SS_ORG_ERROR;
8239 END IF;
8240
8241 EXCEPTION
8242 WHEN NULL_DEFAULT_LAB THEN
8243 GMA_COMMON_LOGGING.gma_migration_central_log (
8244 p_run_id => p_migration_run_id,
8245 p_log_level => FND_LOG.LEVEL_ERROR,
8246 p_message_token => 'GMD_MIG_DEFAULT_LAB_NULL',
8247 p_context => 'Quality Stability Studies - pre gmd_ss_storage_package',
8248 p_app_short_name => 'GMD');
8249 ROLLBACK;
8250 RETURN;
8251 x_exception_count := x_exception_count + 1;
8252
8253 WHEN DEFAULT_SS_ORG_ERROR THEN
8254 GMA_COMMON_LOGGING.gma_migration_central_log (
8255 p_run_id => p_migration_run_id,
8256 p_log_level => FND_LOG.LEVEL_ERROR,
8257 p_message_token => 'GMD_MIG_DEF_SS_ORG_ERROR',
8258 p_context => 'Quality Stability Studies - pre gmd_ss_storage_package',
8259 p_app_short_name => 'GMD');
8260 x_exception_count := x_exception_count + 1;
8261 ROLLBACK;
8262 RETURN;
8263
8264 WHEN OTHERS THEN
8265 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
8266 GMA_COMMON_LOGGING.gma_migration_central_log (
8267 p_run_id => p_migration_run_id,
8268 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
8269 p_message_token => 'GMA_MIGRATION_DB_ERROR',
8270 p_context => 'Quality Stability Studies - pre gmd_ss_storage_package',
8271 p_db_error => SQLERRM,
8272 p_app_short_name => 'GMA');
8273 x_exception_count := x_exception_count + 1;
8274 ROLLBACK;
8275 RETURN;
8276
8277
8278 END; -- end setup subprogram
8279
8280 /*==============================================
8281 Log Start of gmd_storage_package.
8282 ==============================================*/
8283
8284 GMA_COMMON_LOGGING.gma_migration_central_log (
8285 p_run_id => p_migration_run_id,
8286 p_log_level => FND_LOG.LEVEL_EVENT,
8287 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
8288 p_table_name => 'GMD_SS_STORAGE_PACKAGE',
8289 p_token1 => 'TABLE_NAME',
8290 p_param1 => 'GMD_SS_STORAGE_PACKAGE',
8291 p_context => 'Quality Stability Studies',
8292 p_app_short_name => 'GMA');
8293
8294 GMD_QC_MIG12.g_store_pack_upd_count := 0;
8295 GMD_QC_MIG12.g_store_pack_ins_count := 0;
8296 GMD_QC_MIG12.g_store_pack_pro_count := 0;
8297 GMD_QC_MIG12.g_store_pack_err_count := 0;
8298 GMD_QC_MIG12.g_progress_ind := 5;
8299
8300 FOR l_store_pack IN get_store_pack LOOP
8301 BEGIN -- end get_store_pack subprogram
8302 GMD_QC_MIG12.g_store_pack_pro_count := GMD_QC_MIG12.g_store_pack_pro_count + 1;
8303 /*======================================
8304 Check if uom migrated successfully.
8305 Removed this check.
8306 ======================================*/
8307
8308 /*=================================================
8309 If storage package has no stability study
8310 associated with it assign the default org to
8311 the package record. If linked to 1 or more
8312 stability studies update this record with the
8313 orgn from the first stability study. For any
8314 other stability studies create a new
8315 gmd_ss_storage_package record.
8316 =================================================*/
8317 OPEN get_stab_study_org(l_store_pack.package_id);
8318 FETCH get_stab_study_org INTO l_stab_orgn_code, l_gsv_package_id;
8319 IF (get_stab_study_org%NOTFOUND) THEN
8320 CLOSE get_stab_study_org;
8321 IF (l_store_pack.item_id IS NOT NULL) THEN
8322 /*=========================
8323 Get Inventory Item id.
8324 =========================*/
8325 INV_OPM_ITEM_MIGRATION.GET_ODM_ITEM(
8326 P_MIGRATION_RUN_ID => p_migration_run_id,
8327 P_ITEM_ID => l_store_pack.item_id,
8328 P_ORGANIZATION_ID => l_def_ss_org_id,
8329 P_MODE => NULL,
8330 P_COMMIT => FND_API.G_TRUE,
8331 X_INVENTORY_ITEM_ID => l_store_pack_invitem_id,
8332 X_FAILURE_COUNT => l_failure_count);
8333 IF (l_failure_count > 0) THEN
8334 RAISE STORE_DEF_ODM_ITEM;
8335 END IF;
8336 ELSE
8337 l_store_pack_invitem_id := NULL;
8338 END IF;
8339
8340 /*================================
8341 Update gmd_ss_storage_package
8342 ================================*/
8343
8344 UPDATE gmd_ss_storage_package
8345 SET organization_id = l_def_ss_org_id,
8346 inventory_item_id = l_store_pack_invitem_id,
8347 migrated_ind = 1
8348 WHERE package_id = l_store_pack.package_id;
8349
8350 GMD_QC_MIG12.g_store_pack_upd_count := GMD_QC_MIG12.g_store_pack_upd_count + 1;
8351 ELSE
8352 /*========================================
8353 Use Org from Stability Study.
8354 ========================================*/
8355 l_ss_org_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_stab_orgn_code);
8356 IF (l_ss_org_id IS NULL) THEN
8357 CLOSE get_stab_study_org;
8358 RAISE STORE_SS_ORG;
8359 END IF;
8360
8361 IF (l_store_pack.item_id IS NOT NULL) THEN
8362 /*=========================
8363 Get Inventory Item id.
8364 =========================*/
8365 INV_OPM_ITEM_MIGRATION.GET_ODM_ITEM(
8366 P_MIGRATION_RUN_ID => p_migration_run_id,
8367 P_ITEM_ID => l_store_pack.item_id,
8368 P_ORGANIZATION_ID => l_ss_org_id,
8369 P_MODE => NULL,
8370 P_COMMIT => FND_API.G_TRUE,
8371 X_INVENTORY_ITEM_ID => l_store_pack_invitem_id,
8372 X_FAILURE_COUNT => l_failure_count);
8373 IF (l_failure_count > 0) THEN
8374 CLOSE get_stab_study_org;
8375 RAISE STORE_ODM_ITEM;
8376 END IF;
8377 ELSE
8378 l_store_pack_invitem_id := NULL;
8379 END IF;
8380
8381 /*================================
8382 Update gmd_ss_storage_package
8383 using Stability study org.
8384 ================================*/
8385
8386 UPDATE gmd_ss_storage_package
8387 SET organization_id = l_ss_org_id,
8388 inventory_item_id = l_store_pack_invitem_id,
8389 migrated_ind = 1
8390 WHERE package_id = l_store_pack.package_id;
8391
8392
8393 GMD_QC_MIG12.g_store_pack_upd_count := GMD_QC_MIG12.g_store_pack_upd_count + 1;
8394
8395 /*==========================================
8396 Continue with Stability Studies.
8397 ==========================================*/
8398
8399 FETCH get_stab_study_org INTO l_stab_orgn_code, l_gsv_package_id;
8400 WHILE get_stab_study_org%FOUND LOOP
8401 /*=================================
8402 Create Text Code if it exists.
8403 =================================*/
8404 IF (l_store_pack.text_code IS NOT NULL AND l_store_pack.text_code > 0) THEN
8405 l_text_code := GMD_QC_MIG12.COPY_TEXT(l_store_pack.text_code, p_migration_run_id);
8406 ELSE
8407 l_text_code := NULL;
8408 END IF;
8409
8410 l_ss_org_id := GMA_MIGRATION_UTILS.GET_ORGANIZATION_ID(l_stab_orgn_code);
8411 IF (l_ss_org_id IS NULL) THEN
8412 CLOSE get_stab_study_org;
8413 RAISE STORE_SS_ORG;
8414 END IF;
8415 /*=========================
8416 Get Inventory Item id.
8417 =========================*/
8418 IF (l_store_pack.item_id IS NOT NULL) THEN
8419 INV_OPM_ITEM_MIGRATION.GET_ODM_ITEM(
8420 P_MIGRATION_RUN_ID => p_migration_run_id,
8421 P_ITEM_ID => l_store_pack.item_id,
8422 P_ORGANIZATION_ID => l_ss_org_id,
8423 P_MODE => NULL,
8424 P_COMMIT => FND_API.G_TRUE,
8425 X_INVENTORY_ITEM_ID => l_store_pack_invitem_id,
8426 X_FAILURE_COUNT => l_failure_count);
8427 IF (l_failure_count > 0) THEN
8428 CLOSE get_stab_study_org;
8429 RAISE STORE_ODM_ITEM;
8430 END IF;
8431 ELSE
8432 l_store_pack_invitem_id := NULL;
8433 END IF;
8434
8435 /*================================
8436 Insert gmd_ss_storage_package.
8437 ================================*/
8438
8439 OPEN get_pack_seq;
8440 FETCH get_pack_seq INTO l_package_id;
8441 CLOSE get_pack_seq;
8442
8443 INSERT INTO gmd_ss_storage_package (
8444 PACKAGE_ID,
8445 FORMULA_ID,
8446 QUANTITY,
8447 UOM,
8448 TEXT_CODE,
8449 ATTRIBUTE_CATEGORY,
8450 ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3, ATTRIBUTE4, ATTRIBUTE5,
8451 ATTRIBUTE6, ATTRIBUTE7, ATTRIBUTE8, ATTRIBUTE9, ATTRIBUTE10,
8452 ATTRIBUTE11, ATTRIBUTE12, ATTRIBUTE13, ATTRIBUTE14, ATTRIBUTE15,
8453 ATTRIBUTE16, ATTRIBUTE17, ATTRIBUTE18, ATTRIBUTE19, ATTRIBUTE20,
8454 ATTRIBUTE21, ATTRIBUTE22, ATTRIBUTE23, ATTRIBUTE24, ATTRIBUTE25,
8455 ATTRIBUTE26, ATTRIBUTE27, ATTRIBUTE28, ATTRIBUTE29, ATTRIBUTE30,
8456 DELETE_MARK,
8457 CREATION_DATE,
8458 CREATED_BY,
8459 LAST_UPDATED_BY,
8460 LAST_UPDATE_DATE,
8461 LAST_UPDATE_LOGIN,
8462 ITEM_ID,
8463 PACKAGE_NAME,
8464 MIGRATED_IND,
8465 ORGANIZATION_ID,
8466 QUANTITY_UOM,
8467 INVENTORY_ITEM_ID
8468 )
8469 VALUES (
8470 l_package_id,
8471 l_store_pack.FORMULA_ID,
8472 l_store_pack.QUANTITY,
8473 l_store_pack.UOM,
8474 l_text_code,
8475 l_store_pack.ATTRIBUTE_CATEGORY,
8476 l_store_pack.ATTRIBUTE1, l_store_pack.ATTRIBUTE2, l_store_pack.ATTRIBUTE3,
8477 l_store_pack.ATTRIBUTE4, l_store_pack.ATTRIBUTE5, l_store_pack.ATTRIBUTE6,
8478 l_store_pack.ATTRIBUTE7, l_store_pack.ATTRIBUTE8, l_store_pack.ATTRIBUTE9,
8479 l_store_pack.ATTRIBUTE10, l_store_pack.ATTRIBUTE11, l_store_pack.ATTRIBUTE12,
8480 l_store_pack.ATTRIBUTE13, l_store_pack.ATTRIBUTE14, l_store_pack.ATTRIBUTE15,
8481 l_store_pack.ATTRIBUTE16, l_store_pack.ATTRIBUTE17, l_store_pack.ATTRIBUTE18,
8482 l_store_pack.ATTRIBUTE19, l_store_pack.ATTRIBUTE20, l_store_pack.ATTRIBUTE21,
8483 l_store_pack.ATTRIBUTE22, l_store_pack.ATTRIBUTE23, l_store_pack.ATTRIBUTE24,
8484 l_store_pack.ATTRIBUTE25, l_store_pack.ATTRIBUTE26, l_store_pack.ATTRIBUTE27,
8485 l_store_pack.ATTRIBUTE28, l_store_pack.ATTRIBUTE29, l_store_pack.ATTRIBUTE30,
8486 l_store_pack.DELETE_MARK,
8487 SYSDATE,
8488 0,
8489 0,
8490 SYSDATE,
8491 0,
8492 l_store_pack.ITEM_ID,
8493 l_store_pack.PACKAGE_NAME,
8494 1,
8495 l_ss_org_id,
8496 l_store_pack.QUANTITY_UOM,
8497 l_store_pack.INVENTORY_ITEM_ID
8498 );
8499
8500 GMD_QC_MIG12.g_store_pack_ins_count := GMD_QC_MIG12.g_store_pack_ins_count + 1;
8501
8502 /*================================
8503 Update gmd_ss_variants to point
8504 to new package record.
8505 ================================*/
8506
8507 UPDATE gmd_ss_variants
8508 SET package_id = l_package_id
8509 WHERE package_id = l_store_pack.package_id
8510 AND ss_id IN (select ss_id from gmd_stability_studies_b where orgn_code = l_stab_orgn_code);
8511
8512 -- AND ss_id = (select ss_id from gmd_stability_studies_b where organization_id = l_ss_org_id);
8513
8514
8515 FETCH get_stab_study_org INTO l_stab_orgn_code, l_gsv_package_id;
8516
8517 END LOOP;
8518
8519 CLOSE get_stab_study_org;
8520 END IF;
8521
8522 IF (p_commit = FND_API.G_TRUE) THEN
8523 COMMIT;
8524 END IF;
8525
8526 EXCEPTION
8527 WHEN STORE_DEF_ODM_ITEM THEN
8528 GMA_COMMON_LOGGING.gma_migration_central_log (
8529 p_run_id => p_migration_run_id,
8530 p_log_level => FND_LOG.LEVEL_ERROR,
8531 p_message_token => 'GMD_MIG_ODM_ITEM',
8532 p_context => 'Quality Stability Studies - gmd_ss_storage_package',
8533 p_token1 => 'ORG',
8534 p_token2 => 'ITEMID',
8535 p_token3 => 'ROWK',
8536 p_token4 => 'ROWV',
8537 p_param1 => to_char(l_def_ss_org_id),
8538 p_param2 => to_char(l_store_pack.item_id),
8539 p_param3 => 'PACKAGE_ID',
8540 p_param4 => to_char(l_store_pack.package_id),
8541 p_app_short_name => 'GMD');
8542 ROLLBACK;
8543 GMD_QC_MIG12.g_store_pack_err_count := GMD_QC_MIG12.g_store_pack_err_count + 1;
8544 x_exception_count := x_exception_count + 1;
8545
8546
8547 WHEN STORE_SS_ORG THEN
8548 GMA_COMMON_LOGGING.gma_migration_central_log (
8549 p_run_id => p_migration_run_id,
8550 p_log_level => FND_LOG.LEVEL_ERROR,
8551 p_message_token => 'GMD_MIG_SS_ORG',
8552 p_context => 'Quality Stability Studies - gmd_ss_storage_package',
8553 p_token1 => 'ORG',
8554 p_token2 => 'ROWK',
8555 p_token3 => 'ROWV',
8556 p_param1 => l_stab_orgn_code,
8557 p_param2 => 'PACKAGE_ID',
8558 p_param3 => to_char(l_store_pack.package_id),
8559 p_app_short_name => 'GMD');
8560 ROLLBACK;
8561 GMD_QC_MIG12.g_store_pack_err_count := GMD_QC_MIG12.g_store_pack_err_count + 1;
8562 x_exception_count := x_exception_count + 1;
8563
8564 WHEN STORE_ODM_ITEM THEN
8565 GMA_COMMON_LOGGING.gma_migration_central_log (
8566 p_run_id => p_migration_run_id,
8567 p_log_level => FND_LOG.LEVEL_ERROR,
8568 p_message_token => 'GMD_MIG_ODM_ITEM',
8569 p_context => 'Quality Stability Studies - gmd_ss_storage_package',
8570 p_token1 => 'ORG',
8571 p_token2 => 'ITEMID',
8572 p_token3 => 'ROWK',
8573 p_token4 => 'ROWV',
8574 p_param1 => to_char(l_ss_org_id),
8575 p_param2 => to_char(l_store_pack.item_id),
8576 p_param3 => 'PACKAGE_ID',
8577 p_param4 => to_char(l_store_pack.package_id),
8578 p_app_short_name => 'GMD');
8579 ROLLBACK;
8580 GMD_QC_MIG12.g_store_pack_err_count := GMD_QC_MIG12.g_store_pack_err_count + 1;
8581 x_exception_count := x_exception_count + 1;
8582
8583
8584 WHEN OTHERS THEN
8585 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
8586 GMA_COMMON_LOGGING.gma_migration_central_log (
8587 p_run_id => p_migration_run_id,
8588 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
8589 p_message_token => 'GMA_MIGRATION_DB_ERROR',
8590 p_context => 'Quality Stability Studies - gmd_ss_storage_package',
8591 p_db_error => SQLERRM,
8592 p_app_short_name => 'GMA');
8593 x_exception_count := x_exception_count + 1;
8594 ROLLBACK;
8595 END; -- end get_store_pack subprogram
8596
8597
8598 END LOOP; -- end get_store_pack
8599
8600
8601 /*==============================================
8602 Log End of gmd_ss_storage_package.
8603 ==============================================*/
8604
8605 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
8606
8607
8608 /*==============================================
8609 Log Start of gmd_ss_storage_history.
8610 ==============================================*/
8611
8612 GMA_COMMON_LOGGING.gma_migration_central_log (
8613 p_run_id => p_migration_run_id,
8614 p_log_level => FND_LOG.LEVEL_EVENT,
8615 p_message_token => 'GMA_MIGRATION_TABLE_STARTED',
8616 p_table_name => 'GMD_SS_STORAGE_HISTORY',
8617 p_token1 => 'TABLE_NAME',
8618 p_param1 => 'GMD_SS_STORAGE_HISTORY',
8619 p_context => 'Quality Stability Studies',
8620 p_app_short_name => 'GMA');
8621
8622 GMD_QC_MIG12.g_ss_storehist_pro_count := 0;
8623 GMD_QC_MIG12.g_ss_storehist_err_count := 0;
8624 GMD_QC_MIG12.g_ss_storehist_upd_count := 0;
8625 GMD_QC_MIG12.g_progress_ind := 6;
8626
8627 /*====================================
8628 Migrate gmd_ss_storage_history.
8629 ====================================*/
8630
8631 FOR l_hist_rec IN get_ss_history LOOP
8632 BEGIN -- end get_ss_hist subprogram
8633 GMD_QC_MIG12.g_ss_storehist_pro_count := GMD_QC_MIG12.g_ss_storehist_pro_count + 1;
8634 /*===============================
8635 Get org_id and subinventory
8636 ===============================*/
8637
8638 IF (l_hist_rec.whse_code IS NOT NULL) THEN
8639 GMD_QC_MIG12.GET_WHSE_INFO (
8640 p_whse_code => l_hist_rec.whse_code,
8641 x_organization_id => l_hist_org_id,
8642 x_subinv_ind => l_hist_subinvind,
8643 x_loct_ctl => l_hist_loct_ctl);
8644
8645 IF (l_hist_org_id IS NULL) THEN
8646 RAISE HIST_WHSE_ERROR;
8647 END IF;
8648
8649 l_hist_subinventory := l_hist_rec.whse_code;
8650
8651 /*========================================
8652 Get Locator and compare subinventory.
8653 ========================================*/
8654
8655 IF (l_hist_rec.location IS NOT NULL) THEN
8656 IF (l_hist_rec.location = 'NONE') THEN
8657 l_hist_locator_id := NULL;
8658 ELSE
8659 l_hist_locator_id := GMD_QC_MIG12.GET_LOCATOR_ID (
8660 p_whse_code => l_hist_rec.whse_code,
8661 p_location => l_hist_rec.location);
8662
8663 IF (l_hist_locator_id IS NULL) THEN
8664 IF (l_hist_loct_ctl = 2) THEN
8665 /*======================================
8666 Create a Non-validated location.
8667 ======================================*/
8668 INV_MIGRATE_PROCESS_ORG.CREATE_LOCATION (
8669 p_migration_run_id => p_migration_run_id,
8670 p_organization_id => l_hist_org_id,
8671 p_subinventory_code => l_hist_subinventory,
8672 p_location => l_hist_rec.location,
8673 p_loct_desc => l_hist_rec.location,
8674 p_start_date_active => SYSDATE,
8675 p_commit => p_commit,
8676 x_location_id => l_hist_locator_id,
8677 x_failure_count => l_failure_count);
8678
8679 IF (l_failure_count > 0) THEN
8680 RAISE HIST_CREATE_LOC;
8681 END IF;
8682 ELSE
8683 RAISE HIST_LOCATOR_ID;
8684 END IF;
8685 END IF; -- none location
8686 END IF;
8687
8688 IF (l_hist_locator_id IS NOT NULL) THEN
8689 GMD_QC_MIG12.GET_SUBINV_DATA(l_hist_locator_id,
8690 l_subinv,
8691 lsub_organization_id);
8692
8693 IF (lsub_organization_id IS NULL) THEN
8694 RAISE HIST_SUBINV_ERROR;
8695 END IF;
8696
8697 IF (l_subinv <> l_hist_subinventory) THEN
8698 /*=========================================
8699 Overlay subinv with one from locator.
8700 =========================================*/
8701 l_hist_subinventory := l_subinv;
8702 END IF;
8703 ELSE
8704 l_hist_locator_id := l_hist_rec.locator_id;
8705 END IF;
8706 END IF; -- locator is null;
8707 ELSE -- whse is null
8708 l_hist_org_id := l_hist_rec.organization_id;
8709 l_hist_subinventory := l_hist_rec.subinventory;
8710 l_hist_locator_id := l_hist_rec.locator_id;
8711 END IF;
8712
8713 /*===================================
8714 Update gmd_ss_storage_history.
8715 *===================================*/
8716
8717 UPDATE gmd_ss_storage_history
8718 SET subinventory = l_hist_subinventory,
8719 locator_id = l_hist_locator_id,
8720 organization_id = l_hist_org_id,
8721 migrated_ind = 1
8722 WHERE storage_history_id = l_hist_rec.storage_history_id;
8723
8724 IF (p_commit = FND_API.G_TRUE) THEN
8725 COMMIT;
8726 END IF;
8727
8728 GMD_QC_MIG12.g_ss_storehist_upd_count := GMD_QC_MIG12.g_ss_storehist_upd_count + 1;
8729
8730 EXCEPTION
8731 WHEN HIST_WHSE_ERROR THEN
8732 GMA_COMMON_LOGGING.gma_migration_central_log (
8733 p_run_id => p_migration_run_id,
8734 p_log_level => FND_LOG.LEVEL_ERROR,
8735 p_message_token => 'GMD_MIG_WHSE_ERROR',
8736 p_context => 'Quality Stability Studies - gmd_ss_storage_history',
8737 p_token1 => 'WHSE',
8738 p_token2 => 'WNAME',
8739 p_token3 => 'ROWK',
8740 p_token4 => 'ROWV',
8741 p_param1 => l_hist_rec.whse_code,
8742 p_param2 => 'WHSE_CODE',
8743 p_param3 => 'STORAGE_HISTORY_ID',
8744 p_param4 => to_char(l_hist_rec.storage_history_id),
8745 p_app_short_name => 'GMD');
8746 GMD_QC_MIG12.g_ss_storehist_err_count := GMD_QC_MIG12.g_ss_storehist_err_count + 1;
8747 x_exception_count := x_exception_count + 1;
8748
8749 WHEN HIST_CREATE_LOC THEN
8750 GMA_COMMON_LOGGING.gma_migration_central_log (
8751 p_run_id => p_migration_run_id,
8752 p_log_level => FND_LOG.LEVEL_ERROR,
8753 p_message_token => 'GMD_MIG_NONLOC_FAILURE',
8754 p_context => 'Quality Stability Studies - gmd_ss_storage_history',
8755 p_token1 => 'ROWK',
8756 p_token2 => 'ROWV',
8757 p_token3 => 'FNAME',
8758 p_param1 => 'STORAGE_HISTORY_ID',
8759 p_param2 => to_char(l_hist_rec.storage_history_id),
8760 p_param3 => 'LOCATION',
8761 p_app_short_name => 'GMD');
8762 GMD_QC_MIG12.g_ss_storehist_err_count := GMD_QC_MIG12.g_ss_storehist_err_count + 1;
8763 x_exception_count := x_exception_count + 1;
8764
8765 WHEN HIST_LOCATOR_ID THEN
8766 GMA_COMMON_LOGGING.gma_migration_central_log (
8767 p_run_id => p_migration_run_id,
8768 p_log_level => FND_LOG.LEVEL_ERROR,
8769 p_message_token => 'GMD_MIG_LOCATOR_ID',
8770 p_context => 'Quality Stability Studies - gmd_ss_storage_history',
8771 p_token1 => 'WHSE',
8772 p_token2 => 'LOCATION',
8773 p_token3 => 'LFIELD',
8774 p_token4 => 'ROWK',
8775 p_token5 => 'ROWV',
8776 p_param1 => l_hist_rec.whse_code,
8777 p_param2 => l_hist_rec.location,
8778 p_param3 => 'LOCATION',
8779 p_param4 => 'STORAGE_HISTORY_ID',
8780 p_param5 => to_char(l_hist_rec.storage_history_id),
8781 p_app_short_name => 'GMD');
8782 GMD_QC_MIG12.g_ss_storehist_err_count := GMD_QC_MIG12.g_ss_storehist_err_count + 1;
8783 x_exception_count := x_exception_count + 1;
8784
8785 WHEN HIST_SUBINV_ERROR THEN
8786 GMA_COMMON_LOGGING.gma_migration_central_log (
8787 p_run_id => p_migration_run_id,
8788 p_log_level => FND_LOG.LEVEL_ERROR,
8789 p_message_token => 'GMD_MIG_SUBINV',
8790 p_context => 'Quality Stability Studies - gmd_ss_storage_history',
8791 p_token1 => 'LOCATOR',
8792 p_token2 => 'ROWK',
8793 p_token3 => 'ROWV',
8794 p_param1 => to_char(l_hist_locator_id),
8795 p_param2 => 'STORAGE_HISTORY_ID',
8796 p_param3 => to_char(l_hist_rec.storage_history_id),
8797 p_app_short_name => 'GMD');
8798 GMD_QC_MIG12.g_ss_storehist_err_count := GMD_QC_MIG12.g_ss_storehist_err_count + 1;
8799 x_exception_count := x_exception_count + 1;
8800
8801 WHEN OTHERS THEN
8802 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
8803 GMA_COMMON_LOGGING.gma_migration_central_log (
8804 p_run_id => p_migration_run_id,
8805 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
8806 p_message_token => 'GMA_MIGRATION_DB_ERROR',
8807 p_context => 'Quality Stability Studies - gmd_ss_storage_history',
8808 p_db_error => SQLERRM,
8809 p_app_short_name => 'GMA');
8810 x_exception_count := x_exception_count + 1;
8811 ROLLBACK;
8812
8813 END; -- end get_ss_hist subprogram
8814
8815 END LOOP; -- end get_ss_history
8816
8817
8818 /*==============================================
8819 Log End of gmd_ss_storage_history.
8820 ==============================================*/
8821
8822 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
8823
8824
8825 EXCEPTION
8826
8827 WHEN DEFAULT_SS_ORG_ERROR THEN
8828 GMA_COMMON_LOGGING.gma_migration_central_log (
8829 p_run_id => p_migration_run_id,
8830 p_log_level => FND_LOG.LEVEL_ERROR,
8831 p_message_token => 'GMD_MIG_DEF_SS_ORG_ERROR',
8832 p_context => 'Quality Stability Studies - general',
8833 p_app_short_name => 'GMD');
8834
8835 x_exception_count := x_exception_count + 1;
8836
8837 WHEN OTHERS THEN
8838 LOG_SS_COUNTS(p_migration_run_id, GMD_QC_MIG12.g_progress_ind);
8839 GMA_COMMON_LOGGING.gma_migration_central_log (
8840 p_run_id => p_migration_run_id,
8841 p_log_level => FND_LOG.LEVEL_UNEXPECTED,
8842 p_message_token => 'GMA_MIGRATION_DB_ERROR',
8843 p_context => 'Quality Stability Studies - general',
8844 p_db_error => SQLERRM,
8845 p_app_short_name => 'GMA');
8846 x_exception_count := x_exception_count + 1;
8847
8848 END GMD_QC_MIGRATE_STABS;
8849
8850
8851 END;