DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMD_QC_MIG12

Source


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