DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMD_QC_MIG12

Source


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