31: leadtime_err EXCEPTION;
32: batch_offset_err EXCEPTION;
33: offset_type_err EXCEPTION;
34: BEGIN
35: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
36: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
37: || l_api_name);
38: END IF;
39:
32: batch_offset_err EXCEPTION;
33: offset_type_err EXCEPTION;
34: BEGIN
35: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
36: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
37: || l_api_name);
38: END IF;
39:
40: IF (p_plan_start_date IS NULL AND p_plan_cmplt_date IS NULL) THEN
50: ELSIF (p_plan_cmplt_date IS NOT NULL AND p_plan_start_date IS NULL) THEN
51: x_pregen_fpo_row.schedule_method := 'BACKWARD';
52: END IF;
53:
54: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
55: gme_debug.put_line (g_pkg_name ||
56: '.' ||
57: l_api_name ||
58: ' schedule method is '||
51: x_pregen_fpo_row.schedule_method := 'BACKWARD';
52: END IF;
53:
54: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
55: gme_debug.put_line (g_pkg_name ||
56: '.' ||
57: l_api_name ||
58: ' schedule method is '||
59: x_pregen_fpo_row.schedule_method);
95: RAISE offset_type_err;
96: END IF;
97:
98: --load parameters into structure.
99: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
100: gme_debug.put_line ('assigning all values to x_pregen_fpo_row');
101: END IF;
102:
103: x_return_status := fnd_api.g_ret_sts_success;
96: END IF;
97:
98: --load parameters into structure.
99: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
100: gme_debug.put_line ('assigning all values to x_pregen_fpo_row');
101: END IF;
102:
103: x_return_status := fnd_api.g_ret_sts_success;
104: x_pregen_fpo_row.qty_per_batch := p_batch_size;
126: x_pregen_fpo_row.sum_eff_qty :=
127: x_pregen_fpo_row.num_batches * x_pregen_fpo_row.qty_per_batch;
128: END IF;
129:
130: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
131: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
132: END IF;
133: EXCEPTION
134: WHEN no_null_dates THEN
127: x_pregen_fpo_row.num_batches * x_pregen_fpo_row.qty_per_batch;
128: END IF;
129:
130: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
131: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
132: END IF;
133: EXCEPTION
134: WHEN no_null_dates THEN
135: gme_common_pvt.log_message ('GME_NO_NULL_DATES');
245: /* Exception definitions */
246: no_fetch_material_details EXCEPTION;
247: batch_fetch_error EXCEPTION;
248: BEGIN
249: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
250: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
251: || l_api_name);
252: END IF;
253: x_return_status := fnd_api.g_ret_sts_success;
246: no_fetch_material_details EXCEPTION;
247: batch_fetch_error EXCEPTION;
248: BEGIN
249: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
250: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
251: || l_api_name);
252: END IF;
253: x_return_status := fnd_api.g_ret_sts_success;
254: l_pregen_fpo_row := p_pregen_fpo_row;
259: -- exception added
260: IF NOT l_return THEN
261: RAISE batch_fetch_error;
262: END IF;
263: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
264: gme_debug.put_line (g_pkg_name ||
265: '.' ||
266: l_api_name ||
267: ' batch header fetch_row returns success ');
260: IF NOT l_return THEN
261: RAISE batch_fetch_error;
262: END IF;
263: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
264: gme_debug.put_line (g_pkg_name ||
265: '.' ||
266: l_api_name ||
267: ' batch header fetch_row returns success ');
268: END IF;
267: ' batch header fetch_row returns success ');
268: END IF;
269:
270: --Retrieve fpo_material_details into local fpo_material_details structure.
271: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
272: gme_debug.put_line (g_pkg_name ||
273: '.' ||
274: l_api_name ||
275: ' Retrieve material details for batch_id '||
268: END IF;
269:
270: --Retrieve fpo_material_details into local fpo_material_details structure.
271: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
272: gme_debug.put_line (g_pkg_name ||
273: '.' ||
274: l_api_name ||
275: ' Retrieve material details for batch_id '||
276: x_fpo_header_row.batch_id);
392:
393: CLOSE get_production_rules;
394:
395: x_pregen_fpo_row := l_pregen_fpo_row;
396: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
397: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
398: END IF;
399: EXCEPTION
400: WHEN no_fetch_material_details THEN
393: CLOSE get_production_rules;
394:
395: x_pregen_fpo_row := l_pregen_fpo_row;
396: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
397: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
398: END IF;
399: EXCEPTION
400: WHEN no_fetch_material_details THEN
401: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
397: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
398: END IF;
399: EXCEPTION
400: WHEN no_fetch_material_details THEN
401: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
402: gme_debug.put_line ('no fetch material_details');
403: END IF;
404:
405: gme_common_pvt.log_message ('PM_NO_MATL_DTL');
398: END IF;
399: EXCEPTION
400: WHEN no_fetch_material_details THEN
401: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
402: gme_debug.put_line ('no fetch material_details');
403: END IF;
404:
405: gme_common_pvt.log_message ('PM_NO_MATL_DTL');
406: x_return_status := fnd_api.g_ret_sts_error;
406: x_return_status := fnd_api.g_ret_sts_error;
407: WHEN batch_fetch_error THEN
408: x_return_status := fnd_api.g_ret_sts_error;
409: WHEN OTHERS THEN
410: gme_debug.put_line ('Exception in api ' || g_pkg_name || '.' || l_api_name);
411: x_return_status := fnd_api.g_ret_sts_unexp_error;
412: fnd_msg_pub.add_exc_msg ('GME_API_CONVERT_FPO', 'retrieve_fpo_data');
413: END retrieve_fpo_data;
414:
421: ,x_return_status OUT NOCOPY VARCHAR2)
422: IS
423: l_api_name CONSTANT VARCHAR2 (30) := 'CALCULATE_LEADTIME';
424: BEGIN
425: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
426: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
427: || l_api_name);
428: END IF;
429:
422: IS
423: l_api_name CONSTANT VARCHAR2 (30) := 'CALCULATE_LEADTIME';
424: BEGIN
425: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
426: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
427: || l_api_name);
428: END IF;
429:
430: x_pregen_fpo_row := p_pregen_fpo_row;
440: * p_pregen_fpo_row.qty_per_batch
441: / p_pregen_fpo_row.std_qty);
442: END IF;
443: --Bug2804440
444: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
445: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
446: END IF;
447: EXCEPTION
448: WHEN OTHERS THEN
441: / p_pregen_fpo_row.std_qty);
442: END IF;
443: --Bug2804440
444: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
445: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
446: END IF;
447: EXCEPTION
448: WHEN OTHERS THEN
449: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
473: l_generated_pre_batch_tab generated_pre_batch_tab;
474: /* Exception definitions */
475: generate_pre_batch_err EXCEPTION;
476: BEGIN
477: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
478: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
479: || l_api_name);
480: END IF;
481:
474: /* Exception definitions */
475: generate_pre_batch_err EXCEPTION;
476: BEGIN
477: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
478: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
479: || l_api_name);
480: END IF;
481:
482: l_fpo_header_row := p_fpo_header_row;
483: l_prim_prod_row := p_prim_prod_row;
484: l_pregen_fpo_row := p_pregen_fpo_row;
485:
486: --Convert variables expressed in hours to days.
487: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
488: gme_debug.put_line ( 'l_pregen_fpo_row.leadtime = '
489: || TO_CHAR (l_pregen_fpo_row.leadtime) );
490: END IF;
491:
484: l_pregen_fpo_row := p_pregen_fpo_row;
485:
486: --Convert variables expressed in hours to days.
487: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
488: gme_debug.put_line ( 'l_pregen_fpo_row.leadtime = '
489: || TO_CHAR (l_pregen_fpo_row.leadtime) );
490: END IF;
491:
492: x_batch_leadtime_days := l_pregen_fpo_row.leadtime / 24;
490: END IF;
491:
492: x_batch_leadtime_days := l_pregen_fpo_row.leadtime / 24;
493:
494: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
495: gme_debug.put_line ( 'x_batch_leadtime_days = '
496: || TO_CHAR (x_batch_leadtime_days) );
497: gme_debug.put_line ( 'l_pregen_fpo_row.batch_offset = '
498: || TO_CHAR (l_pregen_fpo_row.batch_offset) );
491:
492: x_batch_leadtime_days := l_pregen_fpo_row.leadtime / 24;
493:
494: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
495: gme_debug.put_line ( 'x_batch_leadtime_days = '
496: || TO_CHAR (x_batch_leadtime_days) );
497: gme_debug.put_line ( 'l_pregen_fpo_row.batch_offset = '
498: || TO_CHAR (l_pregen_fpo_row.batch_offset) );
499: END IF;
493:
494: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
495: gme_debug.put_line ( 'x_batch_leadtime_days = '
496: || TO_CHAR (x_batch_leadtime_days) );
497: gme_debug.put_line ( 'l_pregen_fpo_row.batch_offset = '
498: || TO_CHAR (l_pregen_fpo_row.batch_offset) );
499: END IF;
500:
501: x_batch_offset_days := l_pregen_fpo_row.batch_offset / 24;
499: END IF;
500:
501: x_batch_offset_days := l_pregen_fpo_row.batch_offset / 24;
502:
503: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
504: gme_debug.put_line ( 'x_batch_offset_days = '
505: || TO_CHAR (x_batch_offset_days) );
506: END IF;
507:
500:
501: x_batch_offset_days := l_pregen_fpo_row.batch_offset / 24;
502:
503: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
504: gme_debug.put_line ( 'x_batch_offset_days = '
505: || TO_CHAR (x_batch_offset_days) );
506: END IF;
507:
508: --Negative values of above.
507:
508: --Negative values of above.
509: x_neg_batch_leadtime_days := x_batch_leadtime_days * -1;
510:
511: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
512: gme_debug.put_line ( 'x_neg_batch_leadtime_days = '
513: || TO_CHAR (x_neg_batch_leadtime_days) );
514: END IF;
515:
508: --Negative values of above.
509: x_neg_batch_leadtime_days := x_batch_leadtime_days * -1;
510:
511: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
512: gme_debug.put_line ( 'x_neg_batch_leadtime_days = '
513: || TO_CHAR (x_neg_batch_leadtime_days) );
514: END IF;
515:
516: x_neg_batch_offset_days := x_batch_offset_days * -1;
514: END IF;
515:
516: x_neg_batch_offset_days := x_batch_offset_days * -1;
517:
518: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
519: gme_debug.put_line ( 'x_neg_batch_offset_days = '
520: || TO_CHAR (x_neg_batch_offset_days) );
521: gme_debug.put_line ( 'l_pregen_fpo_row.schedule_method = '
522: || (l_pregen_fpo_row.schedule_method) );
515:
516: x_neg_batch_offset_days := x_batch_offset_days * -1;
517:
518: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
519: gme_debug.put_line ( 'x_neg_batch_offset_days = '
520: || TO_CHAR (x_neg_batch_offset_days) );
521: gme_debug.put_line ( 'l_pregen_fpo_row.schedule_method = '
522: || (l_pregen_fpo_row.schedule_method) );
523: END IF;
517:
518: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
519: gme_debug.put_line ( 'x_neg_batch_offset_days = '
520: || TO_CHAR (x_neg_batch_offset_days) );
521: gme_debug.put_line ( 'l_pregen_fpo_row.schedule_method = '
522: || (l_pregen_fpo_row.schedule_method) );
523: END IF;
524: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
525: gme_debug.put_line (g_pkg_name ||
520: || TO_CHAR (x_neg_batch_offset_days) );
521: gme_debug.put_line ( 'l_pregen_fpo_row.schedule_method = '
522: || (l_pregen_fpo_row.schedule_method) );
523: END IF;
524: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
525: gme_debug.put_line (g_pkg_name ||
526: '.' ||
527: l_api_name ||
528: ' Begin looping here for count of '||
521: gme_debug.put_line ( 'l_pregen_fpo_row.schedule_method = '
522: || (l_pregen_fpo_row.schedule_method) );
523: END IF;
524: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
525: gme_debug.put_line (g_pkg_name ||
526: '.' ||
527: l_api_name ||
528: ' Begin looping here for count of '||
529: l_pregen_fpo_row.num_batches);
610: l_pregen_fpo_row.plan_cmplt_date
611: + x_neg_batch_leadtime_days;
612: END IF;
613:
614: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
615: gme_debug.put_line
616: ( 'l_generated_pre_batch_tab(i).plan_start_date = '
617: || TO_CHAR
618: (l_generated_pre_batch_tab (i).plan_start_date
611: + x_neg_batch_leadtime_days;
612: END IF;
613:
614: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
615: gme_debug.put_line
616: ( 'l_generated_pre_batch_tab(i).plan_start_date = '
617: || TO_CHAR
618: (l_generated_pre_batch_tab (i).plan_start_date
619: ,'MM/DD/YYYY hh24:mi:ss') );
616: ( 'l_generated_pre_batch_tab(i).plan_start_date = '
617: || TO_CHAR
618: (l_generated_pre_batch_tab (i).plan_start_date
619: ,'MM/DD/YYYY hh24:mi:ss') );
620: gme_debug.put_line
621: ( 'l_generated_pre_batch_tab(i).plan_cmplt_date = '
622: || TO_CHAR
623: (l_generated_pre_batch_tab (i).plan_cmplt_date
624: ,'MM/DD/YYYY hh24:mi:ss') );
630: --Start-to-Start
631: x_prev_plan_start_date :=
632: l_generated_pre_batch_tab (i - 1).plan_start_date;
633:
634: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
635: gme_debug.put_line ( 'x_prev_plan_start_date = '
636: || TO_CHAR (x_prev_plan_start_date
637: ,'MM/DD/YYYY hh24:mi:ss') );
638: END IF;
631: x_prev_plan_start_date :=
632: l_generated_pre_batch_tab (i - 1).plan_start_date;
633:
634: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
635: gme_debug.put_line ( 'x_prev_plan_start_date = '
636: || TO_CHAR (x_prev_plan_start_date
637: ,'MM/DD/YYYY hh24:mi:ss') );
638: END IF;
639:
639:
640: l_generated_pre_batch_tab (i).plan_start_date :=
641: x_prev_plan_start_date;
642:
643: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
644: gme_debug.put_line
645: ( 'l_generated_pre_batch_tab(i).plan_start_date = '
646: || TO_CHAR
647: (l_generated_pre_batch_tab (i).plan_start_date
640: l_generated_pre_batch_tab (i).plan_start_date :=
641: x_prev_plan_start_date;
642:
643: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
644: gme_debug.put_line
645: ( 'l_generated_pre_batch_tab(i).plan_start_date = '
646: || TO_CHAR
647: (l_generated_pre_batch_tab (i).plan_start_date
648: ,'MM/DD/YYYY hh24:mi:ss') );
658: l_generated_pre_batch_tab (i).plan_start_date :=
659: l_generated_pre_batch_tab (i).plan_start_date
660: + x_batch_offset_days;
661:
662: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
663: gme_debug.put_line
664: ( 'W/OFFSET l_generated_pre_batch_tab(i).plan_start_date = '
665: || TO_CHAR
666: (l_generated_pre_batch_tab (i).plan_start_date
659: l_generated_pre_batch_tab (i).plan_start_date
660: + x_batch_offset_days;
661:
662: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
663: gme_debug.put_line
664: ( 'W/OFFSET l_generated_pre_batch_tab(i).plan_start_date = '
665: || TO_CHAR
666: (l_generated_pre_batch_tab (i).plan_start_date
667: ,'MM/DD/YYYY hh24:mi:ss ') );
670: l_generated_pre_batch_tab (i).plan_cmplt_date :=
671: l_generated_pre_batch_tab (i).plan_start_date
672: + x_batch_leadtime_days;
673:
674: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
675: gme_debug.put_line
676: ( 'W/LEADTIME l_generated_pre_batch_tab(i).plan_cmplt_date = '
677: || TO_CHAR
678: (l_generated_pre_batch_tab (i).plan_cmplt_date
671: l_generated_pre_batch_tab (i).plan_start_date
672: + x_batch_leadtime_days;
673:
674: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
675: gme_debug.put_line
676: ( 'W/LEADTIME l_generated_pre_batch_tab(i).plan_cmplt_date = '
677: || TO_CHAR
678: (l_generated_pre_batch_tab (i).plan_cmplt_date
679: ,'MM/DD/YYYY hh24:mi:ss') );
681: ELSIF (l_pregen_fpo_row.schedule_method = 'BACKWARD') THEN
682: --Not First Batch; Scheduling BACKWARD
683: IF (l_pregen_fpo_row.offset_type = 0) THEN
684: --Start-to-Start
685: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
686: gme_debug.put_line ('BACKWARD scheduling start-to-start');
687: END IF;
688:
689: x_prev_plan_start_date :=
682: --Not First Batch; Scheduling BACKWARD
683: IF (l_pregen_fpo_row.offset_type = 0) THEN
684: --Start-to-Start
685: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
686: gme_debug.put_line ('BACKWARD scheduling start-to-start');
687: END IF;
688:
689: x_prev_plan_start_date :=
690: l_generated_pre_batch_tab (i - 1).plan_start_date;
688:
689: x_prev_plan_start_date :=
690: l_generated_pre_batch_tab (i - 1).plan_start_date;
691:
692: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
693: gme_debug.put_line ( 'x_prev_plan_start_date = '
694: || TO_CHAR (x_prev_plan_start_date
695: ,'MM/DD/YYYY hh24:mi:ss') );
696: END IF;
689: x_prev_plan_start_date :=
690: l_generated_pre_batch_tab (i - 1).plan_start_date;
691:
692: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
693: gme_debug.put_line ( 'x_prev_plan_start_date = '
694: || TO_CHAR (x_prev_plan_start_date
695: ,'MM/DD/YYYY hh24:mi:ss') );
696: END IF;
697:
697:
698: l_generated_pre_batch_tab (i).plan_start_date :=
699: x_prev_plan_start_date + x_neg_batch_offset_days;
700:
701: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
702: gme_debug.put_line
703: ( 'W/NEG OFFSET l_generated_pre_batch_tab(i).plan_start_date = '
704: || TO_CHAR
705: (l_generated_pre_batch_tab (i).plan_start_date
698: l_generated_pre_batch_tab (i).plan_start_date :=
699: x_prev_plan_start_date + x_neg_batch_offset_days;
700:
701: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
702: gme_debug.put_line
703: ( 'W/NEG OFFSET l_generated_pre_batch_tab(i).plan_start_date = '
704: || TO_CHAR
705: (l_generated_pre_batch_tab (i).plan_start_date
706: ,'MM/DD/YYYY hh24:mi:ss') );
709: l_generated_pre_batch_tab (i).plan_cmplt_date :=
710: l_generated_pre_batch_tab (i).plan_start_date
711: + x_batch_leadtime_days;
712:
713: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
714: gme_debug.put_line
715: ( 'W/LEADTIME l_generated_pre_batch_tab(i).plan_cmplt_date = '
716: || TO_CHAR
717: (l_generated_pre_batch_tab (i).plan_cmplt_date
710: l_generated_pre_batch_tab (i).plan_start_date
711: + x_batch_leadtime_days;
712:
713: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
714: gme_debug.put_line
715: ( 'W/LEADTIME l_generated_pre_batch_tab(i).plan_cmplt_date = '
716: || TO_CHAR
717: (l_generated_pre_batch_tab (i).plan_cmplt_date
718: ,'MM/DD/YYYY hh24:mi:ss') );
718: ,'MM/DD/YYYY hh24:mi:ss') );
719: END IF;
720: ELSE
721: --End-to-Start
722: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
723: gme_debug.put_line ('BACKWARD scheduling end-to-start');
724: END IF;
725:
726: x_prev_plan_start_date :=
719: END IF;
720: ELSE
721: --End-to-Start
722: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
723: gme_debug.put_line ('BACKWARD scheduling end-to-start');
724: END IF;
725:
726: x_prev_plan_start_date :=
727: l_generated_pre_batch_tab (i - 1).plan_start_date;
725:
726: x_prev_plan_start_date :=
727: l_generated_pre_batch_tab (i - 1).plan_start_date;
728:
729: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
730: gme_debug.put_line ( 'x_prev_plan_start_date = '
731: || TO_CHAR (x_prev_plan_start_date
732: ,'MM/DD/YYYY hh24:mi:ss') );
733: END IF;
726: x_prev_plan_start_date :=
727: l_generated_pre_batch_tab (i - 1).plan_start_date;
728:
729: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
730: gme_debug.put_line ( 'x_prev_plan_start_date = '
731: || TO_CHAR (x_prev_plan_start_date
732: ,'MM/DD/YYYY hh24:mi:ss') );
733: END IF;
734:
734:
735: l_generated_pre_batch_tab (i).plan_cmplt_date :=
736: x_prev_plan_start_date + x_neg_batch_offset_days;
737:
738: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
739: gme_debug.put_line
740: ( 'W/NEG OFFSET l_generated_pre_batch_tab(i).plan_cmplt_date = '
741: || TO_CHAR
742: (l_generated_pre_batch_tab (i).plan_cmplt_date
735: l_generated_pre_batch_tab (i).plan_cmplt_date :=
736: x_prev_plan_start_date + x_neg_batch_offset_days;
737:
738: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
739: gme_debug.put_line
740: ( 'W/NEG OFFSET l_generated_pre_batch_tab(i).plan_cmplt_date = '
741: || TO_CHAR
742: (l_generated_pre_batch_tab (i).plan_cmplt_date
743: ,'MM/DD/YYYY hh24:mi:ss') );
746: l_generated_pre_batch_tab (i).plan_start_date :=
747: l_generated_pre_batch_tab (i).plan_cmplt_date
748: + x_neg_batch_leadtime_days;
749:
750: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
751: gme_debug.put_line
752: ( 'W/NEG LEADTIME l_generated_pre_batch_tab(i).plan_start_date = '
753: || TO_CHAR
754: (l_generated_pre_batch_tab (i).plan_start_date
747: l_generated_pre_batch_tab (i).plan_cmplt_date
748: + x_neg_batch_leadtime_days;
749:
750: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
751: gme_debug.put_line
752: ( 'W/NEG LEADTIME l_generated_pre_batch_tab(i).plan_start_date = '
753: || TO_CHAR
754: (l_generated_pre_batch_tab (i).plan_start_date
755: ,'MM/DD/YYYY hh24:mi:ss') );
760:
761: l_generated_pre_batch_tab (i).due_date :=
762: l_generated_pre_batch_tab (i).plan_cmplt_date;
763:
764: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
765: gme_debug.put_line
766: ( 'l_generated_pre_batch_tab(i).due_date= '
767: || TO_CHAR
768: (l_generated_pre_batch_tab (i).due_date
761: l_generated_pre_batch_tab (i).due_date :=
762: l_generated_pre_batch_tab (i).plan_cmplt_date;
763:
764: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
765: gme_debug.put_line
766: ( 'l_generated_pre_batch_tab(i).due_date= '
767: || TO_CHAR
768: (l_generated_pre_batch_tab (i).due_date
769: ,'MM/DD/YYYY hh24:mi:ss') );
776: IF x_return_status <> fnd_api.g_ret_sts_success THEN
777: RAISE generate_pre_batch_err;
778: END IF;
779:
780: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
781: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
782: END IF;
783: EXCEPTION
784: WHEN generate_pre_batch_err THEN
777: RAISE generate_pre_batch_err;
778: END IF;
779:
780: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
781: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
782: END IF;
783: EXCEPTION
784: WHEN generate_pre_batch_err THEN
785: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
781: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
782: END IF;
783: EXCEPTION
784: WHEN generate_pre_batch_err THEN
785: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
786: gme_debug.put_line
787: ('problem generateing the pre_batch-header recs');
788: END IF;
789:
782: END IF;
783: EXCEPTION
784: WHEN generate_pre_batch_err THEN
785: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
786: gme_debug.put_line
787: ('problem generateing the pre_batch-header recs');
788: END IF;
789:
790: gme_common_pvt.log_message ('GEN_PRE_BATCH_HEADER_ERR');
849: WHERE recipe_validity_rule_id = v_validity_rule_id
850: AND i.organization_id = v_organization_id
851: AND v.inventory_item_id = i.inventory_item_id;
852: BEGIN
853: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
854: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
855: || l_api_name);
856: END IF;
857: x_return_status := fnd_api.g_ret_sts_success;
850: AND i.organization_id = v_organization_id
851: AND v.inventory_item_id = i.inventory_item_id;
852: BEGIN
853: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
854: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
855: || l_api_name);
856: END IF;
857: x_return_status := fnd_api.g_ret_sts_success;
858: dummy := 0;
868: l_prev_start_date := NULL;
869: l_prev_cmplt_date := NULL;
870: l_creation_mode := 'PRODUCT';
871:
872: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
873: gme_debug.put_line (g_pkg_name ||
874: '.' ||
875: l_api_name ||
876: 'Batch UOM is '||
869: l_prev_cmplt_date := NULL;
870: l_creation_mode := 'PRODUCT';
871:
872: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
873: gme_debug.put_line (g_pkg_name ||
874: '.' ||
875: l_api_name ||
876: 'Batch UOM is '||
877: l_batch_uom);
878: END IF;
879:
880: --Populate generated_pre_batch_tab with validity_rule.
881: IF (p_process_row = 0) THEN
882: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
883: gme_debug.put_line (g_pkg_name ||
884: '.' ||
885: l_api_name ||
886: ' p_process_row is set to 0 ');
879:
880: --Populate generated_pre_batch_tab with validity_rule.
881: IF (p_process_row = 0) THEN
882: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
883: gme_debug.put_line (g_pkg_name ||
884: '.' ||
885: l_api_name ||
886: ' p_process_row is set to 0 ');
887: END IF;
898: l_in_pre_batch_row := l_pre_batch_row;
899: --BEGIN BUG#3185748 Sastry
900: SAVEPOINT create_batch;
901:
902: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
903: gme_debug.put_line (g_pkg_name ||
904: '.' ||
905: l_api_name ||
906: ' Retrieve validity_rule for id '||
899: --BEGIN BUG#3185748 Sastry
900: SAVEPOINT create_batch;
901:
902: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
903: gme_debug.put_line (g_pkg_name ||
904: '.' ||
905: l_api_name ||
906: ' Retrieve validity_rule for id '||
907: p_fpo_validity_rule_id||
922: END IF;
923:
924: CLOSE get_validity_rule;
925:
926: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
927: gme_debug.put_line (g_pkg_name ||
928: '.' ||
929: l_api_name ||
930: ' Invoke validate validity rule ');
923:
924: CLOSE get_validity_rule;
925:
926: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
927: gme_debug.put_line (g_pkg_name ||
928: '.' ||
929: l_api_name ||
930: ' Invoke validate validity rule ');
931: END IF;
970: END IF;
971: END IF;
972:
973: --Swapna Kommineni bug#3565971 13/08/2004 End
974: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
975: gme_debug.put_line (g_pkg_name ||
976: '.' ||
977: l_api_name ||
978: ' about to invoke create_batch ');
971: END IF;
972:
973: --Swapna Kommineni bug#3565971 13/08/2004 End
974: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
975: gme_debug.put_line (g_pkg_name ||
976: '.' ||
977: l_api_name ||
978: ' about to invoke create_batch ');
979: END IF;
989: ,p_use_workday_cal => p_use_shop_cal
990: ,p_contiguity_override => p_contiguity_override
991: ,x_exception_material_tbl => l_exception_material_tbl);
992:
993: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
994: gme_debug.put_line (g_pkg_name ||
995: '.' ||
996: l_api_name ||
997: ' create_batch returns status of '||
990: ,p_contiguity_override => p_contiguity_override
991: ,x_exception_material_tbl => l_exception_material_tbl);
992:
993: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
994: gme_debug.put_line (g_pkg_name ||
995: '.' ||
996: l_api_name ||
997: ' create_batch returns status of '||
998: l_return_status );
1039: WHEN batch_creation_failure OR validation_failure THEN
1040: x_return_status := fnd_api.g_ret_sts_error;
1041: ROLLBACK TO SAVEPOINT create_batch;
1042:
1043: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1044: gme_debug.put_line ('batch creation_fail');
1045: END IF;
1046: END;
1047: --END BUG#3185748
1040: x_return_status := fnd_api.g_ret_sts_error;
1041: ROLLBACK TO SAVEPOINT create_batch;
1042:
1043: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1044: gme_debug.put_line ('batch creation_fail');
1045: END IF;
1046: END;
1047: --END BUG#3185748
1048: END LOOP;
1066: ,p_use_workday_cal => p_use_shop_cal
1067: ,p_contiguity_override => p_contiguity_override
1068: ,x_exception_material_tbl => l_exception_material_tbl);
1069:
1070: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1071: gme_debug.put_line (g_pkg_name ||
1072: '.' ||
1073: l_api_name ||
1074: ' call to create_batch returns status of '||
1067: ,p_contiguity_override => p_contiguity_override
1068: ,x_exception_material_tbl => l_exception_material_tbl);
1069:
1070: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1071: gme_debug.put_line (g_pkg_name ||
1072: '.' ||
1073: l_api_name ||
1074: ' call to create_batch returns status of '||
1075: l_return_status||
1103: , X_msg_data => l_msg_data
1104: );
1105:
1106: END IF; /* IF (p_process_row = 0) */
1107: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1108: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name ||' with status '||x_return_status);
1109: END IF;
1110: EXCEPTION
1111: WHEN batch_creation_failure THEN
1104: );
1105:
1106: END IF; /* IF (p_process_row = 0) */
1107: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1108: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name ||' with status '||x_return_status);
1109: END IF;
1110: EXCEPTION
1111: WHEN batch_creation_failure THEN
1112: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1108: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name ||' with status '||x_return_status);
1109: END IF;
1110: EXCEPTION
1111: WHEN batch_creation_failure THEN
1112: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1113: gme_debug.put_line ('batch creation_fail');
1114: END IF;
1115:
1116: x_return_status := fnd_api.g_ret_sts_error;
1109: END IF;
1110: EXCEPTION
1111: WHEN batch_creation_failure THEN
1112: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1113: gme_debug.put_line ('batch creation_fail');
1114: END IF;
1115:
1116: x_return_status := fnd_api.g_ret_sts_error;
1117:
1114: END IF;
1115:
1116: x_return_status := fnd_api.g_ret_sts_error;
1117:
1118: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1119: gme_debug.put_line ('x_return_status = ' || x_return_status);
1120: END IF;
1121: WHEN OTHERS THEN
1122: x_return_status := fnd_api.g_ret_sts_unexp_error;
1115:
1116: x_return_status := fnd_api.g_ret_sts_error;
1117:
1118: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1119: gme_debug.put_line ('x_return_status = ' || x_return_status);
1120: END IF;
1121: WHEN OTHERS THEN
1122: x_return_status := fnd_api.g_ret_sts_unexp_error;
1123: fnd_msg_pub.add_exc_msg ('GME_API_CONVERT_FPO'
1176: -- Bug 14348159
1177: reschedule_batch_fail EXCEPTION;
1178:
1179: BEGIN
1180: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1181: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1182: || l_api_name);
1183: END IF;
1184: x_return_status := fnd_api.g_ret_sts_success;
1177: reschedule_batch_fail EXCEPTION;
1178:
1179: BEGIN
1180: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1181: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1182: || l_api_name);
1183: END IF;
1184: x_return_status := fnd_api.g_ret_sts_success;
1185:
1224: -- scale the original FPO and all pending transactions to the
1225: -- difference.
1226: -- If greater than or equal to the original FPO qty, set FPO status
1227: -- to converted and delete pending transactions.
1228: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1229: gme_debug.put_line ( 'l_prim_prod_row.plan_qty = '
1230: || TO_CHAR (l_prim_prod_row.plan_qty) );
1231: gme_debug.put_line ( 'l_pregen_fpo_row.sum_eff_qty = '
1232: || TO_CHAR (l_pregen_fpo_row.sum_eff_qty) );
1225: -- difference.
1226: -- If greater than or equal to the original FPO qty, set FPO status
1227: -- to converted and delete pending transactions.
1228: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1229: gme_debug.put_line ( 'l_prim_prod_row.plan_qty = '
1230: || TO_CHAR (l_prim_prod_row.plan_qty) );
1231: gme_debug.put_line ( 'l_pregen_fpo_row.sum_eff_qty = '
1232: || TO_CHAR (l_pregen_fpo_row.sum_eff_qty) );
1233: END IF;
1227: -- to converted and delete pending transactions.
1228: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1229: gme_debug.put_line ( 'l_prim_prod_row.plan_qty = '
1230: || TO_CHAR (l_prim_prod_row.plan_qty) );
1231: gme_debug.put_line ( 'l_pregen_fpo_row.sum_eff_qty = '
1232: || TO_CHAR (l_pregen_fpo_row.sum_eff_qty) );
1233: END IF;
1234:
1235: IF (l_prim_prod_row.plan_qty <= l_pregen_fpo_row.sum_eff_qty) THEN
1232: || TO_CHAR (l_pregen_fpo_row.sum_eff_qty) );
1233: END IF;
1234:
1235: IF (l_prim_prod_row.plan_qty <= l_pregen_fpo_row.sum_eff_qty) THEN
1236: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1237: gme_debug.put_line
1238: ('in IF.gonna update header and delete pending trans');
1239: END IF;
1240:
1233: END IF;
1234:
1235: IF (l_prim_prod_row.plan_qty <= l_pregen_fpo_row.sum_eff_qty) THEN
1236: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1237: gme_debug.put_line
1238: ('in IF.gonna update header and delete pending trans');
1239: END IF;
1240:
1241: --Update FPO status to CONVERTED
1242: l_fpo_header_row.batch_status := -3;
1243: l_return := gme_batch_header_dbl.update_row (l_fpo_header_row);
1244:
1245: IF NOT l_return THEN
1246: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1247: gme_debug.put_line ('l_return from update_row = FALSE');
1248: END IF;
1249:
1250: RAISE update_row_err;
1243: l_return := gme_batch_header_dbl.update_row (l_fpo_header_row);
1244:
1245: IF NOT l_return THEN
1246: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1247: gme_debug.put_line ('l_return from update_row = FALSE');
1248: END IF;
1249:
1250: RAISE update_row_err;
1251: ELSE
1248: END IF;
1249:
1250: RAISE update_row_err;
1251: ELSE
1252: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1253: gme_debug.put_line ('l_return from update_row = TRUE');
1254: END IF;
1255: END IF;
1256:
1249:
1250: RAISE update_row_err;
1251: ELSE
1252: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1253: gme_debug.put_line ('l_return from update_row = TRUE');
1254: END IF;
1255: END IF;
1256:
1257: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1253: gme_debug.put_line ('l_return from update_row = TRUE');
1254: END IF;
1255: END IF;
1256:
1257: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1258: gme_debug.put_line ( 'l_fpo_header_row.batch_status = '
1259: || TO_CHAR (l_fpo_header_row.batch_status) );
1260: gme_debug.put_line ( 'l_fpo_header_row.batch_id = '
1261: || TO_CHAR (l_fpo_header_row.batch_id) );
1254: END IF;
1255: END IF;
1256:
1257: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1258: gme_debug.put_line ( 'l_fpo_header_row.batch_status = '
1259: || TO_CHAR (l_fpo_header_row.batch_status) );
1260: gme_debug.put_line ( 'l_fpo_header_row.batch_id = '
1261: || TO_CHAR (l_fpo_header_row.batch_id) );
1262: gme_debug.put_line ( 'l_fpo_header_row.batch_type = '
1256:
1257: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1258: gme_debug.put_line ( 'l_fpo_header_row.batch_status = '
1259: || TO_CHAR (l_fpo_header_row.batch_status) );
1260: gme_debug.put_line ( 'l_fpo_header_row.batch_id = '
1261: || TO_CHAR (l_fpo_header_row.batch_id) );
1262: gme_debug.put_line ( 'l_fpo_header_row.batch_type = '
1263: || TO_CHAR (l_fpo_header_row.batch_type) );
1264: END IF;
1258: gme_debug.put_line ( 'l_fpo_header_row.batch_status = '
1259: || TO_CHAR (l_fpo_header_row.batch_status) );
1260: gme_debug.put_line ( 'l_fpo_header_row.batch_id = '
1261: || TO_CHAR (l_fpo_header_row.batch_id) );
1262: gme_debug.put_line ( 'l_fpo_header_row.batch_type = '
1263: || TO_CHAR (l_fpo_header_row.batch_type) );
1264: END IF;
1265:
1266: --FPBug#4941012 set plan qty to zero for parent FPO
1322: -- pk_fpo('in fpo-before cancel'||l_fpo_header_row.batch_id);
1323: FOR l_rec IN get_phantom_fpo (l_fpo_header_row.batch_id) LOOP
1324: l_batch_header.batch_id := l_rec.phantom_id;
1325:
1326: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1327: gme_debug.put_line ( 'phantom to cancel = '
1328: || TO_CHAR (l_batch_header.batch_id) );
1329: END IF;
1330:
1323: FOR l_rec IN get_phantom_fpo (l_fpo_header_row.batch_id) LOOP
1324: l_batch_header.batch_id := l_rec.phantom_id;
1325:
1326: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1327: gme_debug.put_line ( 'phantom to cancel = '
1328: || TO_CHAR (l_batch_header.batch_id) );
1329: END IF;
1330:
1331: --FPBug#4941012
1344: END IF;
1345: END LOOP;
1346: ELSE
1347: --Scale FPO material details line
1348: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1349: gme_debug.put_line ('gonna do some scaling');
1350: END IF;
1351:
1352: l_scale_factor :=
1345: END LOOP;
1346: ELSE
1347: --Scale FPO material details line
1348: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1349: gme_debug.put_line ('gonna do some scaling');
1350: END IF;
1351:
1352: l_scale_factor :=
1353: (l_prim_prod_row.plan_qty - l_pregen_fpo_row.sum_eff_qty)
1352: l_scale_factor :=
1353: (l_prim_prod_row.plan_qty - l_pregen_fpo_row.sum_eff_qty)
1354: / l_prim_prod_row.plan_qty;
1355:
1356: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1357: gme_debug.put_line ('l_scale_factor = ' || l_scale_factor);
1358: END IF;
1359:
1360: --p_qty_type is default 1 for the plan qty only
1353: (l_prim_prod_row.plan_qty - l_pregen_fpo_row.sum_eff_qty)
1354: / l_prim_prod_row.plan_qty;
1355:
1356: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1357: gme_debug.put_line ('l_scale_factor = ' || l_scale_factor);
1358: END IF;
1359:
1360: --p_qty_type is default 1 for the plan qty only
1361: /* l_over_allocations parameter is used to handle default lot going */
1384: -- Call reschedule_batch for plan_cmplt_date for the fpo.
1385: l_fpo_header_row := x_fpo_header_row ;
1386: l_fpo_header_row.plan_start_date := NULL ;
1387:
1388: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1389: gme_debug.put_line('calling reschedule_batch'||l_fpo_header_row.batch_id);
1390: END IF;
1391:
1392: IF l_fpo_header_row.parentline_id IS NULL THEN
1385: l_fpo_header_row := x_fpo_header_row ;
1386: l_fpo_header_row.plan_start_date := NULL ;
1387:
1388: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1389: gme_debug.put_line('calling reschedule_batch'||l_fpo_header_row.batch_id);
1390: END IF;
1391:
1392: IF l_fpo_header_row.parentline_id IS NULL THEN
1393:
1408: END IF; /* parentline_id IS NOT NULL THEN */
1409: END IF;
1410:
1411: x_fpo_header_row := l_fpo_header_row;
1412: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1413: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
1414: END IF;
1415: EXCEPTION
1416: WHEN load_rsrc_trans_err THEN
1409: END IF;
1410:
1411: x_fpo_header_row := l_fpo_header_row;
1412: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1413: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
1414: END IF;
1415: EXCEPTION
1416: WHEN load_rsrc_trans_err THEN
1417: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1413: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
1414: END IF;
1415: EXCEPTION
1416: WHEN load_rsrc_trans_err THEN
1417: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1418: gme_debug.put_line ('load_rsrc_trans_err_fail');
1419: END IF;
1420:
1421: x_return_status := fnd_api.g_ret_sts_error;
1414: END IF;
1415: EXCEPTION
1416: WHEN load_rsrc_trans_err THEN
1417: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1418: gme_debug.put_line ('load_rsrc_trans_err_fail');
1419: END IF;
1420:
1421: x_return_status := fnd_api.g_ret_sts_error;
1422: -- Bug 14348159
1423: WHEN reschedule_batch_fail THEN
1424: x_return_status := 'C';
1425:
1426: WHEN cancel_batch_err THEN
1427: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1428: gme_debug.put_line ('Cancel_FPO_PHANTOM_fail');
1429: END IF;
1430:
1431: x_return_status := fnd_api.g_ret_sts_error;
1424: x_return_status := 'C';
1425:
1426: WHEN cancel_batch_err THEN
1427: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1428: gme_debug.put_line ('Cancel_FPO_PHANTOM_fail');
1429: END IF;
1430:
1431: x_return_status := fnd_api.g_ret_sts_error;
1432: WHEN gme_fetch_all_trans_err THEN
1429: END IF;
1430:
1431: x_return_status := fnd_api.g_ret_sts_error;
1432: WHEN gme_fetch_all_trans_err THEN
1433: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1434: gme_debug.put_line ('fetch_alltrans_err_fail');
1435: END IF;
1436:
1437: x_return_status := fnd_api.g_ret_sts_error;
1430:
1431: x_return_status := fnd_api.g_ret_sts_error;
1432: WHEN gme_fetch_all_trans_err THEN
1433: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1434: gme_debug.put_line ('fetch_alltrans_err_fail');
1435: END IF;
1436:
1437: x_return_status := fnd_api.g_ret_sts_error;
1438: --FPBug#4941012
1436:
1437: x_return_status := fnd_api.g_ret_sts_error;
1438: --FPBug#4941012
1439: WHEN fetch_batch_err THEN
1440: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1441: gme_debug.put_line ('fetch batch header fail');
1442: END IF;
1443:
1444: x_return_status := fnd_api.g_ret_sts_error;
1437: x_return_status := fnd_api.g_ret_sts_error;
1438: --FPBug#4941012
1439: WHEN fetch_batch_err THEN
1440: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1441: gme_debug.put_line ('fetch batch header fail');
1442: END IF;
1443:
1444: x_return_status := fnd_api.g_ret_sts_error;
1445: WHEN update_row_err THEN
1442: END IF;
1443:
1444: x_return_status := fnd_api.g_ret_sts_error;
1445: WHEN update_row_err THEN
1446: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1447: gme_debug.put_line ('update_row _fail');
1448: END IF;
1449:
1450: x_return_status := fnd_api.g_ret_sts_error;
1443:
1444: x_return_status := fnd_api.g_ret_sts_error;
1445: WHEN update_row_err THEN
1446: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1447: gme_debug.put_line ('update_row _fail');
1448: END IF;
1449:
1450: x_return_status := fnd_api.g_ret_sts_error;
1451: WHEN delete_pending_trans_err THEN
1448: END IF;
1449:
1450: x_return_status := fnd_api.g_ret_sts_error;
1451: WHEN delete_pending_trans_err THEN
1452: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1453: gme_debug.put_line ('delete_pending_trans _fail');
1454: END IF;
1455:
1456: x_return_status := fnd_api.g_ret_sts_error;
1449:
1450: x_return_status := fnd_api.g_ret_sts_error;
1451: WHEN delete_pending_trans_err THEN
1452: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1453: gme_debug.put_line ('delete_pending_trans _fail');
1454: END IF;
1455:
1456: x_return_status := fnd_api.g_ret_sts_error;
1457: WHEN scale_batch_err THEN
1454: END IF;
1455:
1456: x_return_status := fnd_api.g_ret_sts_error;
1457: WHEN scale_batch_err THEN
1458: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1459: gme_debug.put_line ('scale_batch _fail');
1460: END IF;
1461:
1462: x_return_status := fnd_api.g_ret_sts_error;
1455:
1456: x_return_status := fnd_api.g_ret_sts_error;
1457: WHEN scale_batch_err THEN
1458: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1459: gme_debug.put_line ('scale_batch _fail');
1460: END IF;
1461:
1462: x_return_status := fnd_api.g_ret_sts_error;
1463: WHEN update_pending_trans THEN
1460: END IF;
1461:
1462: x_return_status := fnd_api.g_ret_sts_error;
1463: WHEN update_pending_trans THEN
1464: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1465: gme_debug.put_line ('update_pending_trans _fail');
1466: END IF;
1467:
1468: x_return_status := fnd_api.g_ret_sts_error;
1461:
1462: x_return_status := fnd_api.g_ret_sts_error;
1463: WHEN update_pending_trans THEN
1464: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1465: gme_debug.put_line ('update_pending_trans _fail');
1466: END IF;
1467:
1468: x_return_status := fnd_api.g_ret_sts_error;
1469: WHEN OTHERS THEN
1530: create_batch_failure EXCEPTION;
1531: update_original_fpo_failure EXCEPTION;
1532: batch_header_fetch_error EXCEPTION;
1533: BEGIN
1534: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1535: gme_debug.log_initialize ('ConvertFPO');
1536: END IF;
1537:
1538: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1531: update_original_fpo_failure EXCEPTION;
1532: batch_header_fetch_error EXCEPTION;
1533: BEGIN
1534: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1535: gme_debug.log_initialize ('ConvertFPO');
1536: END IF;
1537:
1538: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1539: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1534: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1535: gme_debug.log_initialize ('ConvertFPO');
1536: END IF;
1537:
1538: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1539: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1540: || l_api_name);
1541: END IF;
1542:
1535: gme_debug.log_initialize ('ConvertFPO');
1536: END IF;
1537:
1538: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1539: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1540: || l_api_name);
1541: END IF;
1542:
1543: x_return_status := fnd_api.g_ret_sts_success;
1549: l_batch_header.organization_id := p_batch_header.organization_id; -- KYH GME CONV
1550: l_batch_header.batch_id := p_batch_header.batch_id; -- KYH GME CONV
1551: l_batch_header.batch_type := 10;
1552:
1553: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1554: gme_debug.put_line (g_pkg_name ||
1555: '.' ||
1556: l_api_name ||
1557: ' Retrieve batch header for batch_id '||
1550: l_batch_header.batch_id := p_batch_header.batch_id; -- KYH GME CONV
1551: l_batch_header.batch_type := 10;
1552:
1553: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1554: gme_debug.put_line (g_pkg_name ||
1555: '.' ||
1556: l_api_name ||
1557: ' Retrieve batch header for batch_id '||
1558: l_batch_header.batch_id);
1561: RAISE batch_header_fetch_error;
1562: END IF;
1563:
1564: /* Get the validity rule for the existing FPO */
1565: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1566: gme_debug.put_line (g_pkg_name ||
1567: '.' ||
1568: l_api_name ||
1569: ' Retrieve validity rule for rule_id '||
1562: END IF;
1563:
1564: /* Get the validity rule for the existing FPO */
1565: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1566: gme_debug.put_line (g_pkg_name ||
1567: '.' ||
1568: l_api_name ||
1569: ' Retrieve validity rule for rule_id '||
1570: l_batch_header.recipe_validity_rule_id);
1583: END IF;
1584:
1585: CLOSE get_validity_rule;
1586:
1587: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1588: gme_debug.put_line (g_pkg_name ||
1589: '.' ||
1590: l_api_name ||
1591: ' Invoke Validation ');
1584:
1585: CLOSE get_validity_rule;
1586:
1587: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1588: gme_debug.put_line (g_pkg_name ||
1589: '.' ||
1590: l_api_name ||
1591: ' Invoke Validation ');
1592: END IF;
1607: ,p_plan_cmplt_date => p_plan_cmplt_date
1608: ,x_pregen_fpo_row => x_pregen_fpo_row
1609: ,x_return_status => x_return_status);
1610:
1611: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1612: gme_debug.put_line (g_pkg_name ||
1613: '.' ||
1614: l_api_name ||
1615: ' VALIDATION procedure returns '||
1608: ,x_pregen_fpo_row => x_pregen_fpo_row
1609: ,x_return_status => x_return_status);
1610:
1611: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1612: gme_debug.put_line (g_pkg_name ||
1613: '.' ||
1614: l_api_name ||
1615: ' VALIDATION procedure returns '||
1616: x_return_status);
1624: END IF;
1625:
1626: l_in_fpo_header_row := l_fpo_header_row;
1627: l_in_pregen_fpo_row := l_pregen_fpo_row;
1628: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1629: gme_debug.put_line (g_pkg_name ||
1630: '.' ||
1631: l_api_name ||
1632: ' About to INVOKE retrieve_fpo_data ');
1625:
1626: l_in_fpo_header_row := l_fpo_header_row;
1627: l_in_pregen_fpo_row := l_pregen_fpo_row;
1628: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1629: gme_debug.put_line (g_pkg_name ||
1630: '.' ||
1631: l_api_name ||
1632: ' About to INVOKE retrieve_fpo_data ');
1633: END IF;
1640: ,x_validity_rule_row => l_validity_rule_row
1641: ,x_fpo_material_details_tab => l_fpo_material_details_tab
1642: ,x_return_status => x_return_status);
1643:
1644: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1645: gme_debug.put_line (g_pkg_name ||
1646: '.' ||
1647: l_api_name ||
1648: ' retrieve_fpo_data returns status of '||
1641: ,x_fpo_material_details_tab => l_fpo_material_details_tab
1642: ,x_return_status => x_return_status);
1643:
1644: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1645: gme_debug.put_line (g_pkg_name ||
1646: '.' ||
1647: l_api_name ||
1648: ' retrieve_fpo_data returns status of '||
1649: x_return_status);
1655:
1656: l_item_um := l_prim_prod_row.dtl_um;
1657:
1658: IF p_use_for_all = fnd_api.g_true THEN
1659: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1660: gme_debug.put_line (g_pkg_name ||
1661: '.' ||
1662: l_api_name ||
1663: ' p_use_for_all is TRUE ');
1656: l_item_um := l_prim_prod_row.dtl_um;
1657:
1658: IF p_use_for_all = fnd_api.g_true THEN
1659: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1660: gme_debug.put_line (g_pkg_name ||
1661: '.' ||
1662: l_api_name ||
1663: ' p_use_for_all is TRUE ');
1664: END IF;
1702: x_pregen_fpo_row => l_pregen_fpo_row,
1703: x_return_status => l_return_status
1704: );
1705: END IF; */
1706: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1707: gme_debug.put_line (g_pkg_name ||
1708: '.' ||
1709: l_api_name ||
1710: ' Retrieve batch header for batch_id '||
1703: x_return_status => l_return_status
1704: );
1705: END IF; */
1706: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1707: gme_debug.put_line (g_pkg_name ||
1708: '.' ||
1709: l_api_name ||
1710: ' Retrieve batch header for batch_id '||
1711: l_batch_header.batch_id);
1709: l_api_name ||
1710: ' Retrieve batch header for batch_id '||
1711: l_batch_header.batch_id);
1712: END IF;
1713: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1714: gme_debug.put_line (g_pkg_name ||
1715: '.' ||
1716: l_api_name ||
1717: ' Invoke generate_pre_batch_header_recs');
1710: ' Retrieve batch header for batch_id '||
1711: l_batch_header.batch_id);
1712: END IF;
1713: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1714: gme_debug.put_line (g_pkg_name ||
1715: '.' ||
1716: l_api_name ||
1717: ' Invoke generate_pre_batch_header_recs');
1718: END IF;
1722: ,p_pregen_fpo_row => l_pregen_fpo_row
1723: ,x_generated_pre_batch_tab => l_generated_pre_batch_tab
1724: ,x_return_status => x_return_status);
1725:
1726: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1727: gme_debug.put_line (g_pkg_name ||
1728: '.' ||
1729: l_api_name ||
1730: ' generate_pre_batch_header_recs returns '||
1723: ,x_generated_pre_batch_tab => l_generated_pre_batch_tab
1724: ,x_return_status => x_return_status);
1725:
1726: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1727: gme_debug.put_line (g_pkg_name ||
1728: '.' ||
1729: l_api_name ||
1730: ' generate_pre_batch_header_recs returns '||
1731: x_return_status );
1763: END LOOP;
1764:
1765: --Swapna Kommineni bug#3565971 13/08/2004 End
1766: l_in_generated_pre_batch_tab := l_generated_pre_batch_tab;
1767: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1768: gme_debug.put_line (g_pkg_name ||
1769: '.' ||
1770: l_api_name ||
1771: ' Invoke convert_fpo_to_batch ');
1764:
1765: --Swapna Kommineni bug#3565971 13/08/2004 End
1766: l_in_generated_pre_batch_tab := l_generated_pre_batch_tab;
1767: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1768: gme_debug.put_line (g_pkg_name ||
1769: '.' ||
1770: l_api_name ||
1771: ' Invoke convert_fpo_to_batch ');
1772: END IF;
1782: ,x_exception_material_tbl => l_exception_material_tbl
1783: ,p_fpo_validity_rule_id => l_batch_header.recipe_validity_rule_id
1784: -- Bug 3185748
1785: );
1786: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1787: gme_debug.put_line (g_pkg_name ||
1788: '.' ||
1789: l_api_name ||
1790: ' convert_fpo_to_batch returns '||
1783: ,p_fpo_validity_rule_id => l_batch_header.recipe_validity_rule_id
1784: -- Bug 3185748
1785: );
1786: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1787: gme_debug.put_line (g_pkg_name ||
1788: '.' ||
1789: l_api_name ||
1790: ' convert_fpo_to_batch returns '||
1791: x_return_status);
1809: ,p_enforce_vldt_check => p_enforce_vldt_check
1810: ,x_fpo_header_row => x_batch_header
1811: ,x_return_status => x_return_status);
1812:
1813: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1814: gme_debug.put_line ( 'in private convert_fpo-after update'
1815: || x_return_status);
1816: END IF;
1817:
1810: ,x_fpo_header_row => x_batch_header
1811: ,x_return_status => x_return_status);
1812:
1813: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1814: gme_debug.put_line ( 'in private convert_fpo-after update'
1815: || x_return_status);
1816: END IF;
1817:
1818: IF x_return_status <> fnd_api.g_ret_sts_success THEN
1842: ,l_batch_range);
1843: END IF;
1844: END IF;
1845: --END BUG#3185748 Sastry
1846: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1847: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
1848: END IF;
1849: EXCEPTION
1850: WHEN validation_failure THEN
1843: END IF;
1844: END IF;
1845: --END BUG#3185748 Sastry
1846: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1847: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
1848: END IF;
1849: EXCEPTION
1850: WHEN validation_failure THEN
1851: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1847: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
1848: END IF;
1849: EXCEPTION
1850: WHEN validation_failure THEN
1851: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1852: gme_debug.put_line ('in validiation fail exception');
1853: END IF;
1854:
1855: x_return_status := fnd_api.g_ret_sts_error;
1848: END IF;
1849: EXCEPTION
1850: WHEN validation_failure THEN
1851: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1852: gme_debug.put_line ('in validiation fail exception');
1853: END IF;
1854:
1855: x_return_status := fnd_api.g_ret_sts_error;
1856: WHEN fpo_retrieval_failure THEN
1853: END IF;
1854:
1855: x_return_status := fnd_api.g_ret_sts_error;
1856: WHEN fpo_retrieval_failure THEN
1857: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1858: gme_debug.put_line ('in retrieval fail exception');
1859: END IF;
1860:
1861: x_return_status := fnd_api.g_ret_sts_error;
1854:
1855: x_return_status := fnd_api.g_ret_sts_error;
1856: WHEN fpo_retrieval_failure THEN
1857: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1858: gme_debug.put_line ('in retrieval fail exception');
1859: END IF;
1860:
1861: x_return_status := fnd_api.g_ret_sts_error;
1862: WHEN batch_generation_failure THEN
1859: END IF;
1860:
1861: x_return_status := fnd_api.g_ret_sts_error;
1862: WHEN batch_generation_failure THEN
1863: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1864: gme_debug.put_line ('in batch_generation fail exception');
1865: END IF;
1866:
1867: x_return_status := fnd_api.g_ret_sts_error;
1860:
1861: x_return_status := fnd_api.g_ret_sts_error;
1862: WHEN batch_generation_failure THEN
1863: IF (NVL (g_debug, -1) = gme_debug.g_log_statement) THEN
1864: gme_debug.put_line ('in batch_generation fail exception');
1865: END IF;
1866:
1867: x_return_status := fnd_api.g_ret_sts_error;
1868: WHEN insufficient_validity_rules THEN