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